ShaderFile: Class Procedure Function Main Code ShaderFile ::= ( Class | Procedure | Function | Main | Code )* no referencesClass: {$CLASS ClassName $EXTENDS ClassName } ClassProcedure ClassFunction ClassMain Code {$END} Class ::= '{$CLASS' ClassName ( '$EXTENDS' ClassName* )? '}' ( ClassProcedure | ClassFunction | ClassMain | Code )* '{$END}' referenced by: ShaderFile Inherited: {$INHERITED ClassName MethodName Parameter $INLINE } Inherited ::= '{$INHERITED' ClassName? MethodName? Parameter* '$INLINE'? '}' referenced by: ClassFunction ClassMain ClassProcedure Call: {$CALL MethodName Parameter } Call ::= '{$CALL' MethodName Parameter* '}' referenced by: Code Include: {$INCLUDE Filepath } Include ::= '{$INCLUDE' Filepath '}' referenced by: Code Meta: {$META TextQuoted $VERSION VersionNumber compatibility $EXTENSION ExtensionName ExtensionValue $LAYOUT LayoutValue } Meta ::= '{$META' ( TextQuoted* | '$VERSION' VersionNumber 'compatibility'? | '$EXTENSION' ExtensionName ExtensionValue | '$LAYOUT' LayoutValue ) '}' referenced by: Code Property: {$PROPERTY PropertyName StaticName Value } Property ::= '{$PROPERTY' PropertyName ( StaticName | Value )? '}' referenced by: Code Static: {$STATIC StaticName Value } Static ::= '{$STATIC' StaticName Value? '}' referenced by: Code Echo: {$ECHO StaticName PropertyName TextQuoted } Echo ::= '{$ECHO' ( StaticName | PropertyName | TextQuoted ) '}' referenced by: Code Varying: {$VARYING glslTypeQuoted IdentifierQuoted } Varying ::= '{$VARYING' glslTypeQuoted IdentifierQuoted '}' referenced by: Code Uniform: {$UNIFORM glslTypeQuoted IdentifierQuoted } Uniform ::= '{$UNIFORM' glslTypeQuoted IdentifierQuoted '}' referenced by: Code Var: {$VAR glslTypeQuoted IdentifierQuoted glslValue } Var ::= '{$VAR' glslTypeQuoted IdentifierQuoted glslValue? '}' referenced by: Code Const: {$CONST glslTypeQuoted IdentifierQuoted glslValue } Const ::= '{$CONST' glslTypeQuoted IdentifierQuoted glslValue '}' referenced by: Code Procedure: ProcedureHead Code {$END} Procedure ::= ProcedureHead Code '{$END}' referenced by: ShaderFile ClassProcedure: ProcedureHead Code Inherited {$END} ClassProcedure ::= ProcedureHead ( Code | Inherited )* '{$END}' referenced by: Class ProcedureHead: {$PROC MethodName ParameterType ParameterName $INLINE } ProcedureHead ::= '{$PROC' MethodName ( ParameterType ParameterName )* '$INLINE'? '}' referenced by: ClassProcedure Procedure ClassFunction: FunctionHead Code Inherited {$END} ClassFunction ::= FunctionHead ( Code | Inherited )* '{$END}' referenced by: Class Function: FunctionHead Code {$END} Function ::= FunctionHead Code '{$END}' referenced by: ShaderFile FunctionHead: {$FUNC ReturnType MethodName ParameterType ParameterName $INLINE } FunctionHead ::= '{$FUNC' ReturnType MethodName ( ParameterType ParameterName )* '$INLINE'? '}' referenced by: ClassFunction Function Main: {$MAIN} Code {$END} Main ::= '{$MAIN}' Code '{$END}' referenced by: ShaderFile ClassMain: {$MAIN} Code Inherited {$END} ClassMain ::= '{$MAIN}' ( Code | Inherited )* '{$END}' referenced by: Class If: {$IF Expression } Code {$ELIF {$ELSE} Code {$END} If ::= '{$IF' Expression '}' Code ( '{$ELIF' Expression '}' Code )* ( '{$ELSE}' Code )? '{$END}' referenced by: Code Info: {$INFO TextQuoted } Info ::= '{$INFO' TextQuoted '}' referenced by: Code Warning: {$WARNING TextQuoted } Warning ::= '{$WARNING' TextQuoted '}' referenced by: Code Error: {$ERROR TextQuoted } Error ::= '{$ERROR' TextQuoted '}' referenced by: Code Throw: {$THROW TextQuoted } Throw ::= '{$THROW' TextQuoted '}' referenced by: Code Parameter: PropertyName StaticName glslCodeQuoted Parameter ::= PropertyName | StaticName | glslCodeQuoted referenced by: Call Inherited Code: glslCode Call Include Meta Property Static Echo Var Varying Uniform Const If Info Warning Error Throw Code ::= ( glslCode | Call | Include | Meta | Property | Static | Echo | Var | Varying | Uniform | Const | If | Info | Warning | Error | Throw )* referenced by: Class ClassFunction ClassMain ClassProcedure Function If Main Procedure ShaderFile Expression: PropertyName StaticName Value $NOT ! Expression ( Expression ) Expression $OR $AND $XOR + - * / = < > <= >= <> | & ^ Expression Expression ::= PropertyName | StaticName | Value | ( '$NOT' | '!' ) Expression | '(' Expression ')' | Expression ( '$OR' | '$AND' | '$XOR' | '+' | '-' | '*' | '/' | '=' | '<' | '>' | '<=' | '>=' | '<>' | '|' | '&' | '^' ) Expression referenced by: Expression If ClassName: Identifier ClassName ::= Identifier referenced by: Class Inherited MethodName: Identifier MethodName ::= Identifier referenced by: Call FunctionHead Inherited ProcedureHead PropertyName: Identifier PropertyName ::= Identifier referenced by: Echo Expression Parameter Property StaticName: Identifier StaticName ::= Identifier referenced by: Echo Expression Parameter Property Static ExtensionName: IdentifierQuoted ExtensionName ::= IdentifierQuoted referenced by: Meta ParameterName: IdentifierQuoted ParameterName ::= IdentifierQuoted referenced by: FunctionHead ProcedureHead Value: TextQuoted Value ::= TextQuoted referenced by: Expression Property Static glslValue: glslCodeQuoted glslValue ::= glslCodeQuoted referenced by: Const Var ExtensionValue: glslCodeQuoted ExtensionValue ::= glslCodeQuoted referenced by: Meta LayoutValue: glslCodeQuoted LayoutValue ::= glslCodeQuoted referenced by: Meta ReturnType: glslTypeQuoted ReturnType ::= glslTypeQuoted referenced by: FunctionHead ParameterType: glslTypeQuoted ParameterType ::= glslTypeQuoted referenced by: FunctionHead ProcedureHead TextQuoted: ' Text ' TextQuoted ::= ['] Text ['] referenced by: Echo Error Info Meta Throw Value Warning VersionNumber: [0-9] VersionNumber ::= [0-9] referenced by: Meta IdentifierQuoted: ' Identifier ' IdentifierQuoted ::= ['] Identifier ['] referenced by: Const ExtensionName ParameterName Uniform Var Varying Identifier: [A-Z] [a-z] [0-9] _ Identifier ::= [A-Za-z0-9_] referenced by: ClassName IdentifierQuoted MethodName PropertyName StaticName Filepath: ' [A-Z] [a-z] [0-9] \ / _ - ' Filepath ::= ['] [A-Za-z0-9\/_#x2D] ['] referenced by: Include glslCodeQuoted: ' glslCode ' glslCodeQuoted ::= ['] glslCode ['] referenced by: ExtensionValue LayoutValue Parameter glslValue glslTypeQuoted: ' glslType ' glslTypeQuoted ::= ['] glslType ['] referenced by: Const ParameterType ReturnType Uniform Var Varying glslType: int float double vec2 vec3 vec4 ivec2 ivec3 ivec4 dvec2 dvec3 dvec4 mat2 mat3 mat4 imat2 imat3 imat4 dmat2 dmat3 dmat4 glslType ::= int | float | double | vec2 | vec3 | vec4 | ivec2 | ivec3 | ivec4 | dvec2 | dvec3 | dvec4 | mat2 | mat3 | mat4 | imat2 | imat3 | imat4 | dmat2 | dmat3 | dmat4 referenced by: glslTypeQuoted glslCode: [ https://www.opengl.org/documentation/glsl/ ] glslCode ::= [https://www.opengl.org/documentation/glsl/] referenced by: Code glslCodeQuoted   ... generated by Railroad Diagram Generator R R