public void TestTokenProperties() { IntegerToken lhs = new IntegerToken(1); IntegerToken rhs = new IntegerToken(2); MultiplicationToken result = new MultiplicationToken(0, lhs, rhs); Assert.AreEqual(lhs, result.Lhs); Assert.AreEqual(rhs, result.Rhs); }
/// <summary> /// Overloaded Parse function to parse a Term /// </summary> /// <param name="walker">Lexer input</param> /// <returns></returns> public IParseNode Parse(TokenWalker walker) { var result = _powerTermParser.Parse(walker); while (walker.NextIsDotOperator()) { var lexem = walker.Pop(); result = lexem.Token switch { DivideToken _ => new DivisionOperator(result, _powerTermParser.Parse(walker), lexem.Position), MultiplicationToken _ => new MultiplicationOperator(result, _powerTermParser.Parse(walker), lexem.Position), ModuloToken _ => new ModuloOperator(result, _powerTermParser.Parse(walker), lexem.Position), _ => result }; } return(result); } }