Пример #1
0
        ast.ExprNode ParseExpressionAssignment(ParseContext ctx)
        {
            // Parse the LHS
            var lhs = ParseExpressionTernary(ctx);

            // Parse all consecutive RHS
            while (true)
            {
                // Check operator at same precedence level
                if (t.token >= Token.assign && t.token <= Token.bitwiseAndAssign)
                {
                    // Save the operator token
                    var bmk = t.GetBookmark();
                    t.Next();

                    // Parse the RHS and join to the LHS with appropriate operator.
                    lhs = new ast.ExprNodeAssignment(bmk, lhs, ParseExpressionTernary(ctx), bmk.token);
                }
                else
                {
                    return(lhs);
                }
            }
        }
Пример #2
0
        ast.ExprNode ParseExpressionAssignment(ParseContext ctx)
        {
            // Parse the LHS
            var lhs = ParseExpressionTernary(ctx);

            // Parse all consecutive RHS
            while (true)
            {
                // Check operator at same precedence level
                if (t.token>=Token.assign && t.token<=Token.bitwiseAndAssign)
                {
                    // Save the operator token
                    var bmk = t.GetBookmark();
                    t.Next();

                    // Parse the RHS and join to the LHS with appropriate operator.
                    lhs = new ast.ExprNodeAssignment(bmk, lhs, ParseExpressionTernary(ctx), bmk.token);
                }
                else
                    return lhs;
            }
        }