public override AstNode VisitDeclaration([NotNull] GLSL_ES300Parser.DeclarationContext context) { var declaratorList = context.declaratorlist(); if (declaratorList != null) { return(this.Visit(declaratorList)); } var functionPrototype = context.function_prototype(); if (functionPrototype != null) { return(this.Visit(functionPrototype)); } var precisionQualifier = context.precision_qualifier(); if (precisionQualifier != null) { PrecisionDeclaration result = new PrecisionDeclaration(); result.PrecisionQualifier = (PrecisionQualifier)Enum.Parse(typeof(PrecisionQualifier), precisionQualifier.GetText(), true); var noPrecTypeSpec = context.type_specifier_noprec(); var typeSpecifier = (TypeSpecifier)VisitType_specifier_nonarray(noPrecTypeSpec.type_specifier_nonarray()); result.Type = typeSpecifier; if (noPrecTypeSpec.LeftBracket() != null) { result.ArraySpecifier = new ArraySpecifier(); if (noPrecTypeSpec.constant_expression() != null) { result.ArraySpecifier.ArraySizeExpression = (Expression)this.Visit(noPrecTypeSpec.constant_expression()); } } return(result); } throw new NotSupportedException(); }
/// <summary> /// Visit a parse tree produced by <see cref="GLSL_ES300Parser.declaration"/>. /// <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 VisitDeclaration([NotNull] GLSL_ES300Parser.DeclarationContext context) { return(VisitChildren(context)); }