Esempio n. 1
0
        public int Visit(DivideOpNode caller)
        {
            int left  = caller.LeftSon.Accept(this);
            int right = caller.RightSon.Accept(this);

            return(left / right);
        }
Esempio n. 2
0
        public double Visit(DivideOpNode caller)
        {
            double left  = caller.LeftSon.Accept(this);
            double right = caller.RightSon.Accept(this);

            return(left / right);
        }
Esempio n. 3
0
        private Node Term()
        {
            // factor ((MUL^|DIV^|MOD^) factor)*
            Node factorExpression = Factor();

            while (LookAhead(1) == TokenType.MULTIPLY ||
                   LookAhead(1) == TokenType.DIVIDE ||
                   LookAhead(1) == TokenType.MOD)
            {
                if (LookAhead(1) == TokenType.MULTIPLY)
                {
                    factorExpression = new MultiplyOpNode(
                        Match(TokenType.MULTIPLY).Position,
                        factorExpression, Factor());
                }
                else if (LookAhead(1) == TokenType.DIVIDE)
                {
                    factorExpression = new DivideOpNode(
                        Match(TokenType.DIVIDE).Position,
                        factorExpression, Factor());
                }
                else if (LookAhead(1) == TokenType.MOD)
                {
                    factorExpression = new ModOpNode(
                        Match(TokenType.MOD).Position,
                        factorExpression, Factor());
                }
            }
            return(factorExpression);
        }