Пример #1
0
        private ASTNode _Term()
        {
            //Parse the first factor
            var tmpNode = _Factor();

            //Parse following factors (optional)
            while (_CurrentToken.Type == TokenType.MUL ||
                   _CurrentToken.Type == TokenType.DIV)
            {
                var opToken = _CurrentToken;
                _Eat(_CurrentToken.Type);

                tmpNode = new ASTBinopNode(tmpNode, opToken, _Factor());
            }

            return(tmpNode);
        }
Пример #2
0
        private ASTNode _Expression()
        {
            //Parse the first term (Required)
            var tmpNode = _Term();

            //Parse any additional following Terms (Optional)
            while (_CurrentToken.Type == TokenType.ADD ||
                   _CurrentToken.Type == TokenType.SUB)
            {
                var opToken = _CurrentToken;
                _Eat(_CurrentToken.Type);

                tmpNode = new ASTBinopNode(tmpNode, opToken, _Term());
            }

            return(tmpNode);
        }