package Ġorg . opp ia . android . util . math Ċ Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . opp ia . android . app . model . Math Expression Ċ import Ġorg . opp ia . android . app . model . Math Function Call . FunctionType . S QUARE _ ROOT Ċ import Ġorg . opp ia . android . testing . math . Math Expression Subject . Companion . assertThat Ċ import Ġorg . opp ia . android . util . math . Math Expression Parser . Companion . Error Checking Mode Ċ import Ġorg . opp ia . android . util . math . Math Expression Parser . Companion . Math Parsing Result Ċ import Ġorg . ro bo lectric . annotation . Looper Mode Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġ[ Math Expression Parser ]. Ċ Ġ* Ċ Ġ* ĠThis Ġtest Ġsuite Ġspecifically Ġfoc uses Ġon Ġverify ing Ġexpressions Ġthat Ġinclude Ġvariables . ĠIt Ġlarge ly Ċ Ġ* Ġassumes Ġthat Ġcore Ġproperties Ġaround Ġprecedence Ġand Ġassoci ativity , Ġand Ġgeneral Ġhandling Ġof Ġnumeric Ċ Ġ* Ġexpressions Ġare Ġcorrect Ġthrough Ġthe Ġtests Ġmanaged Ġby Ġ[ Numeric Expression Parser Test ]. ĠThis Ġis Ġa Ċ Ġ* Ġvalid Ġapproach Ġsince Ġthese Ġtests Ġare Ġaware Ġthat Ġan Ġimplementation Ġis Ġshared Ġbetween Ġthe Ġtwo . ĠIn Ċ Ġ* Ġthe Ġevent Ġthe Ġimplementations Ġare Ġforked Ġin Ġthe Ġfuture , Ġthis Ġtest Ġsuite Ġshould Ġcorresponding ly Ġbe Ċ Ġ* Ġupdated Ġto Ġinclude Ġtests Ġfor Ġthe Ġcore Ġportions Ġof Ġparsing . ĠFor Ġthe Ġmost Ġpart , Ġthis Ġsuite Ġassumes Ċ Ġ* Ġthat Ġits Ġtests Ġproperly Ġverify Ġthat Ġvariables Ġcan Ġbe Ġa Ġstep - in Ġreplacement Ġfor Ġnumbers Ġwhen Ċ Ġ* Ġconsidering Ġnumeric Ġexpression Ġtests Ġ( with Ġsome Ġspecial Ġexceptions Ġaround Ġimplicit Ġmultiplication Ċ Ġ* Ġto Ġenable Ġpolynomial Ġsyntax ). Ċ Ġ* Ċ Ġ* ĠThis Ġsuite Ġdoes Ġnot Ġtest Ġerrors -- see Ġ[ Math Expression Parser Test ] Ġfor Ġthose Ġtests . ĠFurther , Ġit Ġdoes Ċ Ġ* Ġnot Ġtest Ġalgebra ic Ġequations Ġ( see Ġ[ Algebra ic Equation Parser Test ] Ġfor Ġthose Ġtests ). Ċ Ġ* Ċ Ġ* ĠThis Ġtest Ġsuite Ġlarge ly Ġfoc uses Ġon Ġdemonstr ating Ġpolynomial Ġsyntax Ġsince Ġthat 's Ġthe Ġexpected Ċ Ġ* Ġprincipal Ġuse Ġof Ġalgebra ic Ġexpressions Ġand Ġequations . Ċ Ġ*/ Ċ // ĠFunction Name : Ġtest Ġnames Ġare Ġconvention ally Ġnamed Ġwith Ġunders cores . Ċ @ Suppress (" FunctionName ") Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Looper Mode ( Looper Mode . Mode . PA USED ) Ċ class ĠAl gebra ic Expression Parser Test Ġ{ ĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable _ returns Exp With Variable () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Plus Integer _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x + 1 ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġaddition Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer Plus Variable _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 1 + x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġaddition Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Minus Integer _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x - 1 ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Minus Integer _ math Symbol _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x âĪ Ĵ 1 ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer Minus Variable _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 1 - x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer Minus Variable _ math Symbol _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 1 âĪ Ĵ x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Times Integer _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x * 2 ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Times Integer _ math Symbol _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x ÃĹ 2 ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer Times Variable _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 2 * x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer Times Variable _ math Symbol _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 2 ÃĹ x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Div ided By Integer _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x / 2 ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġdivision Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Div ided By Integer _ math Symbol _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x Ã · 2 ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġdivision Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer Div ided By Variable _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 1 / x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġdivision Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer Div ided By Variable _ math Symbol _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 1 Ã · x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġdivision Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Raised To Integer _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x ^ 2 ") ĊĊĠĠĠ Ġ// ĠThis Ġdemonstrates Ġbasic Ġquadr atic Ġpolynomial Ġsyntax . ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġexponent iation Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ int Raised To Variable _ no Optional Errors _ returns Exp With Variable Based Binary Operation () Ġ{ ĊĠĠĠ Ġ// ĠNote Ġthat Ġoptional Ġerrors Ġpro hibit Ġvariables Ġin Ġexponent s . ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression Without Optional Errors (" 2 ^ x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġexponent iation Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ neg ated Variable _ returns Exp With Variable Based Unary Operation () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors ("- x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġneg ation Ġ{ ĊĠĠĠĠĠĠĠ Ġoperand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ positive Variable _ without Optional Errors _ returns Exp With Variable Based Unary Operation () Ġ{ ĊĠĠĠ Ġ// ĠNote Ġthat Ġoptional Ġerrors Ġpro hibit Ġunary Ġpositive Ġoperations . ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression Without Optional Errors ("+ x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġpositive Ġ{ ĊĠĠĠĠĠĠĠ Ġoperand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable In Group _ returns Exp With Variable In Group () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 2 *( 1 + x )") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġgroup Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ inline Square Root Of X _ returns Exp With Variable In Function Argument () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" âĪ ļ x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġfunction Call To ( S QUARE _ ROOT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġargument Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ square Root Of X _ returns Exp With Variable In Function Argument () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" sqrt ( x )") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġfunction Call To ( S QUARE _ ROOT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġargument Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ integer And Variable _ returns Exp With Implicit Multip lication () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 2 x ") ĊĊĠĠĠ Ġ// ĠThis Ġalso Ġdemonstrates Ġbasic Ġpolynomial Ġsyntax Ġfor Ġlinear Ġequations . ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ neg ated Integer And Variable _ returns Exp With Implicit Multip lication With Unary () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors ("- 2 x ") ĊĊĠĠĠ Ġ// ĠSimilar Ġto Ġthe Ġprevious Ġtest , Ġbut Ġthis Ġensures Ġneg ation Ġordering Ġ( relative Ġto Ġvariables Ġ& ĊĠĠĠ Ġ// Ġimplicit Ġmultiplication ). ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġneg ation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ x Inline Square Root Of Integer _ returns Exp With Implicit Multip lication () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x âĪ ļ 2 ") ĊĊĠĠĠ Ġ// ĠA Ġvariable Ġnext Ġto Ġa Ġsquare Ġroot Ġindicates Ġimplicit Ġmultiplication . ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfunction Call To ( S QUARE _ ROOT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ x Square Root Of Integer _ returns Exp With Implicit Multip lication () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" xs qrt ( 2 )") ĊĊĠĠĠ Ġ// ĠEven Ġwith Ġ' sqrt ' Ġand Ġx Ġbeing Ġtight ly Ġtogether , Ġthe Ġparser Ġstill Ġsees Ġa Ġdistinct Ġvariable Ġand ĊĠĠĠ Ġ// Ġfunction . ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfunction Call To ( S QUARE _ ROOT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Times Variable _ same _ returns Exp With Multi ed Variables () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x * x ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Times Variable _ returns Exp With Multiple Variables () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" x * y ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" y ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ variable Next To Variable _ returns Exp With Implicit Multip lication () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" xy ") ĊĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" y ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ three Sub sequent Variables _ returns Exp With Implicit Mult And Left Associ ativity () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" xyz ") ĊĊĠĠĠ Ġ// Ġ' xyz ' Ġresults Ġin Ġa Ġright - associ ative Ġimplicit Ġmultiplication Ġ( i . e . Ġ( x * y )* z ). ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" y ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" z ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ three Sub sequent Variables _ custom Variables _ returns Exp With Implicit Mult () Ġ{ ĊĠĠĠ Ġval Ġallowed Variables Ġ= ĠlistOf (" i ", Ġ" j ", Ġ" k ") ĊĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" ijk ", Ġallowed Variables ) ĊĊĠĠĠ Ġ// ĠOther Ġvariables Ġcan Ġbe Ġused , Ġtoo . ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" i ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" j ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" k ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ full Quadr atic Expression _ returns Exp With Correct Values And Orders () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors ("- 8 x ^ 3 - 7 . 4 x ^ 2 + x - 1 2 / âĪ ļ 2 ") ĊĊĠĠĠ Ġ// ĠThis Ġcombin es Ġall Ġof Ġthe Ġdistinct Ġpieces Ġtested Ġearlier Ġto Ġdemonstrate Ġfull Ġpolynomial ĊĠĠĠ Ġ// Ġsyntax . ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġ// Ġ- 8 x ^ 3 - 7 . 4 x ^ 2 + x - 1 2 / âĪ ļ 2 Ġ-> Ġ((( (- 8 ) Ġ* Ġ( x ^ 3 )) Ġ- Ġ( 7 . 4 Ġ* Ġ( x ^ 2 ))) Ġ+ Ġx ) Ġ- Ġ( 1 2 / âĪ ļ 2 ) ĊĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ((( - 8 ) Ġ* Ġ( x ^ 3 )) Ġ- Ġ( 7 . 4 Ġ* Ġ( x ^ 2 ))) Ġ+ Ġx ĊĠĠĠĠĠĠĠĠĠ Ġaddition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ(( - 8 ) Ġ* Ġ( x ^ 3 )) Ġ- Ġ( 7 . 4 Ġ* Ġ( x ^ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ(- 8 ) Ġ* Ġ( x ^ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ- 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneg ation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ^ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexponent iation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 7 . 4 Ġ* Ġ( x ^ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 7 . 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is I rr ational That (). is Within ( 1 e - 5 ). of ( 7 . 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ^ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexponent iation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 2 / âĪ ļ 2 ĊĠĠĠĠĠĠĠĠĠ Ġdivision Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠâĪ ļ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Call To ( S QUARE _ ROOT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Parse _ expression With Multiple Variable Quadr atic Terms _ returns Exp With Correct Vals And Orders () Ġ{ ĊĠĠĠ Ġval Ġexpression Ġ= Ġparse Algebra ic Expression With All Errors (" 1 2 x ^ 2 y ^ 2 - yz ^ 2 + y zx - 7 3 1 z ") ĊĊĠĠĠ Ġ// ĠThis Ġbuilds Ġon Ġthe Ġpolynomial Ġsyntax Ġdemonstr ated Ġabove Ġby Ġdemonstr ating Ġmulti - variable ĊĠĠĠ Ġ// Ġimplicit Ġmultiplication Ġfor Ġmulti - dimensional Ġpolynomial s . ĠNote Ġthat Ġthis Ġalso Ġdemonstrates ĊĠĠĠ Ġ// Ġthat Ġexponent s Ġcan Ġimp ly Ġmultiplication Ġwhen Ġthe Ġbase Ġis Ġa Ġvariable Ġ( as Ġpart Ġof Ġpolynomial ĊĠĠĠ Ġ// Ġsyntax ) Ġwhich Ġis Ġa Ġfunctional Ġdifference Ġfrom Ġnumeric - only Ġexpressions Ġ( where Ġsubsequent ĊĠĠĠ Ġ// Ġnumeric Ġexponent s Ġnever Ġimp ly Ġmultiplication ). ĊĠĠĠ ĠassertThat ( expression ). has Structure That Matches Ġ{ ĊĠĠĠĠĠ Ġ// Ġ 1 2 x ^ 2 y ^ 2 - yz ^ 2 + y zx - 7 3 1 z Ġ-> Ġ( ((( 1 2 *( x ^ 2 )) *( y ^ 2 )) -( y *( z ^ 2 ))) + (( y * z )* x )) -( 7 3 1 * z ) ĊĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ((( 1 2 *( x ^ 2 )) *( y ^ 2 )) -( y *( z ^ 2 ))) + (( y * z )* x ) ĊĠĠĠĠĠĠĠĠĠ Ġaddition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ(( 1 2 *( x ^ 2 )) *( y ^ 2 )) -( y *( z ^ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub traction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( 1 2 *( x ^ 2 )) *( y ^ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 2 *( x ^ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ^ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexponent iation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġy ^ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexponent iation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" y ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġy *( z ^ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" y ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġz ^ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexponent iation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġz ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" z ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( y * z )* x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġy * z ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" y ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġz ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" z ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ 7 3 1 * z ĊĠĠĠĠĠĠĠĠĠ Ġmultiplication ( is Implicit Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 7 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Value That (). is Integer That (). isEqualTo ( 7 3 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Operand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġz ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Name That (). isEqualTo (" z ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġparse Algebra ic Expression Without Optional Errors ( ĊĠĠĠĠĠ Ġexpression : ĠString , ĊĠĠĠĠĠ Ġallowed Variables : ĠList < String > Ġ= ĠlistOf (" x ", Ġ" y ", Ġ" z ") ĊĠĠĠ Ġ): ĠMath Expression Ġ{ ĊĠĠĠĠĠ Ġreturn Ġparse Algebra ic Expression Internal ( ĊĠĠĠĠĠĠĠ Ġexpression , ĠError Checking Mode . REQUIRED _ ONLY , Ġallowed Variables ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Algebra ic Expression With All Errors ( ĊĠĠĠĠĠ Ġexpression : ĠString , ĊĠĠĠĠĠ Ġallowed Variables : ĠList < String > Ġ= ĠlistOf (" x ", Ġ" y ", Ġ" z ") ĊĠĠĠ Ġ): ĠMath Expression Ġ{ ĊĠĠĠĠĠ Ġreturn Ġparse Algebra ic Expression Internal ( ĊĠĠĠĠĠĠĠ Ġexpression , ĠError Checking Mode . ALL _ ERRORS , Ġallowed Variables ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Algebra ic Expression Internal ( ĊĠĠĠĠĠ Ġexpression : ĠString , ĊĠĠĠĠĠ Ġerror Checking Mode : ĠError Checking Mode , ĊĠĠĠĠĠ Ġallowed Variables : ĠList < String > ĊĠĠĠ Ġ): ĠMath Expression Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Ġ= ĠMath Expression Parser . parse Algebra ic Expression ( ĊĠĠĠĠĠĠĠ Ġexpression , Ġallowed Variables , Ġerror Checking Mode ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ ĠassertThat ( result ). isInstanceOf ( Math Parsing Result . Success :: class . java ) ĊĠĠĠĠĠ Ġreturn Ġ( result Ġas ĠMath Parsing Result . Success < Math Expression >). result ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ