Module glsl_lang::ast [−][src]
GLSL abstract syntax tree and grammar.
This module exports all the grammar syntax that defines GLSL. You’ll be handling ASTs representing your GLSL source.
The most external form of a GLSL parsed AST is TranslationUnit (a shader). Some parts of the
tree are boxed. This is due to two facts:
- Recursion is used, hence we need a way to give our types a static size.
- Because of some very deep variants, runtime size would explode if no indirection weren’t in place.
The types are commented so feel free to inspect each of theme. As a starter, you should read
the documentation of Expr, FunctionDefinition, Statement and TranslationUnit.
Structs
| ArraySpecifier | Dimensionality of an array. |
| ArrayedIdentifier | An identifier with an optional array specifier. |
| Block | A general purpose block, containing fields and possibly a list of declared identifiers. Semantic is given with the storage qualifier. |
| CompoundStatementData | Compound statement (with no new scope). |
| ExprStatement | Expression statement. |
| ForRestStatement | For init statement. |
| FullySpecifiedType | Fully specified type. |
| FunctionDefinitionData | Function definition. |
| FunctionParameterDeclarator | Function parameter declarator. |
| FunctionPrototypeData | Function prototype. |
| IdentifierData | A generic identifier. |
| InitDeclaratorList | Init declarator list. |
| LayoutQualifier | Layout qualifier. |
| Node | A syntax node with span information |
| NodeSpan | Span information for a node, constructed from a nom_locate::LocatedSpan |
| PreprocessorElseIf | An #else preprocessor directive. |
| PreprocessorError | An #error preprocessor directive. |
| PreprocessorExtension | An #extension preprocessor directive. |
| PreprocessorIf | An #if preprocessor directive. |
| PreprocessorIfDef | An #ifdef preprocessor directive. |
| PreprocessorIfNDef | A #ifndef preprocessor directive. |
| PreprocessorInclude | An #include name annotation. |
| PreprocessorLine | A #line preprocessor directive. |
| PreprocessorPragma | A #pragma preprocessor directive. Holds compiler-specific command. |
| PreprocessorUndef | A #undef preprocessor directive. |
| PreprocessorVersion | A #version preprocessor directive. |
| SelectionStatement | Selection statement. |
| SingleDeclaration | Single declaration. |
| SingleDeclarationNoType | A single declaration with implicit, already-defined type. |
| SmolStr | A |
| StructFieldSpecifier | Struct field specifier. Used to add fields to struct specifiers. |
| StructSpecifier | Struct specifier. Used to create new, user-defined types. |
| SwitchStatement | Switch statement. |
| TranslationUnit | Starting rule. |
| TypeNameData | Any type name. |
| TypeQualifier | Type qualifier. |
| TypeSpecifier | Type specifier. |
Enums
| ArraySpecifierDimension | One array specifier dimension. |
| AssignmentOp | All possible operators for assigning expressions. |
| BinaryOp | All binary operators that exist in GLSL. |
| CaseLabel | Case label statement. |
| CommentData | A comment |
| Condition | Condition. |
| DeclarationData | A declaration. |
| Expr | The most general form of an expression. |
| ExternalDeclarationData | External declaration. |
| ForInitStatement | For init statement. |
| FunIdentifier | Function identifier. |
| FunctionParameterDeclarationData | Function parameter declaration. |
| Initializer | Initializer. |
| InterpolationQualifier | Interpolation qualifier. |
| IterationStatement | Iteration statement. |
| JumpStatement | Jump statement. |
| LayoutQualifierSpec | Layout qualifier spec. |
| Path | A path literal. |
| PrecisionQualifier | Precision qualifier. |
| PreprocessorData | Some basic preprocessor directives. |
| PreprocessorDefine | A #define preprocessor directive. |
| PreprocessorExtensionBehavior | An #extension behavior annotation. |
| PreprocessorExtensionName | An #extension name annotation. |
| PreprocessorVersionProfile | A #version profile annotation. |
| SelectionRestStatement | Selection rest statement. |
| StatementData | Statement. |
| StorageQualifier | Storage qualifier. |
| TypeQualifierSpec | Type qualifier spec. |
| TypeSpecifierNonArray | Type specifier (non-array). |
| UnaryOp | All unary operators that exist in GLSL. |
Traits
| NodeContent | Trait for AST node contents. |
| NodeContentEq | Trait for comparing the content of syntax nodes |
| NodeDisplay | Trait for displaying a syntax node |
Type Definitions
| Comment | Type alias for |
| CompoundStatement | Type alias for |
| Declaration | Type alias for |
| ExternalDeclaration | Type alias for |
| FunctionDefinition | Type alias for |
| FunctionParameterDeclaration | Type alias for |
| FunctionPrototype | Type alias for |
| Identifier | Type alias for |
| Preprocessor | Type alias for |
| Statement | Type alias for |
| TypeName | Type alias for |
Derive Macros
| NodeContent | Mark a type as representing data in an AST node |