public override AstNode VisitAssignment_expression([NotNull] GLSL_ES300Parser.Assignment_expressionContext context) { var cond = context.conditional_expression(); if (cond != null) { return(this.Visit(cond)); } var result = new ExpressionBinary(); result.Left = (Expression)this.Visit(context.unary_expression()); result.Right = (Expression)this.Visit(context.assignment_expression()); var op = context.assignment_operator(); if (op.Assign() != null) { result.Operator = Operator.Assign; } if (op.MulAssign() != null) { result.Operator = Operator.MulAssign; } if (op.DivAssign() != null) { result.Operator = Operator.DivAssign; } if (op.ModAssign() != null) { result.Operator = Operator.ModAssign; } if (op.AddAssign() != null) { result.Operator = Operator.AddAssign; } if (op.SubAssign() != null) { result.Operator = Operator.SubAssign; } if (op.LeftAssign() != null) { result.Operator = Operator.LeftAssign; } if (op.RightAssign() != null) { result.Operator = Operator.RightAssign; } if (op.AndAssign() != null) { result.Operator = Operator.AndAssign; } if (op.XorAssign() != null) { result.Operator = Operator.XorAssign; } if (op.OrAssign() != null) { result.Operator = Operator.OrAssign; } return(result); }
/// <summary> /// Visit a parse tree produced by <see cref="GLSL_ES300Parser.assignment_expression"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitAssignment_expression([NotNull] GLSL_ES300Parser.Assignment_expressionContext context) { return(VisitChildren(context)); }