Ejemplo n.º 1
0
        public void Binary()
        {
            var node = new ASTBinaryExpression()
            {
                Left = new ASTBinaryExpression()
                {
                    Left = new ASTLiteral()
                    {
                        LiteralType = LiteralType.Double,
                        Value       = 10.56d
                    },
                    Operator = BinaryOperatorType.Add,
                    Right    = new ASTLiteral()
                    {
                        LiteralType = LiteralType.Double,
                        Value       = 3.21d
                    }
                },
                Operator = BinaryOperatorType.Divide,
                Right    = new ASTLiteral()
                {
                    LiteralType = LiteralType.Double,
                    Value       = 2d
                }
            };

            string result = node.Serialize();

            Console.WriteLine(result);
        }
Ejemplo n.º 2
0
        // <signedfactor> ::= [ <addop> ] <factor>
        private ASTAnyExpression ExpectSignedFactor()
        {
            ASTAnyExpression expression;

            if (this.Scanner.CurrentToken == TokenType.PLUS
                || this.Scanner.CurrentToken == TokenType.MINUS)
            {
                ASTBinaryExpression binary = new ASTBinaryExpression();
                binary.Left = new ASTLiteral()
                {
                    LiteralType = LiteralType.Int32,
                    Value = 0
                };
                binary.Operator = this.ExpectAddOperator();
                binary.Right = ExpectFactor();

                expression = binary;
            }
            else
            {
                expression = ExpectFactor();
            }

            return expression;
        }
Ejemplo n.º 3
0
        public CodeObject Visit(ASTBinaryExpression expr)
        {
            CodeBinaryOperatorExpression result = new CodeBinaryOperatorExpression(
                (CodeExpression)expr.Left.Accept(this),
                GenerationUtils.MapBinaryOperator(expr.Operator),
                (CodeExpression)expr.Right.Accept(this)
                );

            return(result);
        }
Ejemplo n.º 4
0
        // <expression> ::= <term> ( <addop> <term> )*
        private ASTAnyExpression ExpectExpression()
        {
            ASTAnyExpression expression = this.ExpectTerm();

            while (this.Scanner.CurrentToken == TokenType.PLUS
                || this.Scanner.CurrentToken == TokenType.MINUS)
            {
                ASTBinaryExpression binary = new ASTBinaryExpression();
                binary.Left = expression;
                binary.Operator = this.ExpectAddOperator();
                binary.Right = this.ExpectTerm();

                expression = binary;
            }

            return expression;
        }
Ejemplo n.º 5
0
        // <term> ::= <signedfactor> ( <mulop> <factor> )*
        private ASTAnyExpression ExpectTerm()
        {
            ASTAnyExpression expression = this.ExpectSignedFactor();

            while (this.Scanner.CurrentToken == TokenType.OCTOTHORPE
                || this.Scanner.CurrentToken == TokenType.FWDSLASH
                || this.Scanner.CurrentToken == TokenType.BCKSLASH
                || this.Scanner.CurrentToken == TokenType.CARRET)
            {
                ASTBinaryExpression binary = new ASTBinaryExpression();
                binary.Left = expression;
                binary.Operator = this.ExpectMulOperator();
                binary.Right = this.ExpectFactor();

                expression = binary;
            }

            return expression;
        }