public override AstNode VisitPostfix_expression([NotNull] GLSL_ES300Parser.Postfix_expressionContext context) { if (context.Increment() != null || context.Decrement() != null) { var rUnary = new ExpressionUnaryPostfix(); if (context.Increment() != null) { rUnary.Operator = Operator.Increment; } else { rUnary.Operator = Operator.Decrement; } rUnary.Left = (Expression)this.Visit(context.postfix_expression()); return(rUnary); } var field = context.field_selection(); if (field != null) { return(new ExpressionFieldSelection() { Name = new Identifier() { Name = field.Identifier().Symbol.Text }, Left = (Expression)this.Visit(context.postfix_expression()) }); } var func = context.function_call_generic(); if (func != null) { var rFunc = this.VisitFunctionCall(func); if (context.postfix_expression() != null) { rFunc.Left = (Expression)this.Visit(context.postfix_expression()); } return(rFunc); } var intExpr = context.integer_expression(); if (intExpr != null) { return(new ExpressionIndexAccess() { Left = (Expression)this.Visit(context.postfix_expression()), Index = (Expression)this.Visit(context.integer_expression()) }); } return(this.Visit(context.primary_expression())); }
/// <summary> /// Visit a parse tree produced by <see cref="GLSL_ES300Parser.postfix_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 VisitPostfix_expression([NotNull] GLSL_ES300Parser.Postfix_expressionContext context) { return(VisitChildren(context)); }