- Break brackets: - Mutliply each child term with coefficeint, ignore operators. - Solve: - Rules: // These ruls are not complete in the application we should take in mind // that 'const * var' might come as 'var * const' and still evaluate to the same thing // Also it must always evaluate using the 'TermHelper' class. - const * const, eval - const * var, eval - const * bracket, eval - const / const, eval - const / var, eval - const / bracket, eval - const + const, eval - const + var, eval - const + bracket, eval - const - const, eval - const - var, eval - const - bracket, eval - Apply Rules, until no difference. - Move variables to the right: - Specific Rules: // These rules are not complete in the application we should take in mind // that 'const * var' might come as 'var * const' THIS IS FOR ALL RULES! // Also it should evaluate to something like this, although not always: - const * const, const * const - const * var, const * var - const * bracket, const * bracket - const / const, const / const - const / var, const / var - const / bracket, const / bracket - const + const, cosnt + const - const + var, const + var - const + bracket, const + bracket - const - const, const - const - const - var, const - var - const - bracket, const - bracket - Keep appling rules until there is no change. BreakBrackets() Move_Variables_To_The_Right() Solve()