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);
    }
Example #2
0
        /// <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);
        }
    }