public override AstNode VisitType_qualifier(GLSL_ES300Parser.Type_qualifierContext context) { TypeQualifier result = new TypeQualifier(); if (context.invariant_qualifier() != null) { result.Invariant = true; } if (context.interpolation_qualifier() != null) { var interp = context.interpolation_qualifier(); result.Interpolation = (InterpolationQualifier)Enum.Parse(typeof(InterpolationQualifier), interp.GetText(), true); } if (context.storage_qualifier() != null) { var stor = context.storage_qualifier(); result.Storage = (StorageQualifier)Enum.Parse(typeof(StorageQualifier), stor.GetText(), true); } if (context.layout_qualifier() != null) { var layoutIdList = context.layout_qualifier().layout_qualifier_idlist(); while (layoutIdList != null) { if (layoutIdList.layout_qualifier_id() != null) { var idQualifier = new LayoutIdQualifier(); var layoutId = layoutIdList.layout_qualifier_id(); idQualifier.Identifier = new Identifier() { Name = layoutId.Identifier().Symbol.Text }; if (layoutId.IntegerLiteral() != null) { idQualifier.Order = new IntegerLiteral() { LiteralValue = layoutId.IntegerLiteral().GetText() }; } result.Layout.Add(idQualifier); } layoutIdList = layoutIdList.layout_qualifier_idlist(); } } return(result); }
/// <summary> /// Visit a parse tree produced by <see cref="GLSL_ES300Parser.type_qualifier"/>. /// <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 VisitType_qualifier([NotNull] GLSL_ES300Parser.Type_qualifierContext context) { return(VisitChildren(context)); }