FIELD_SELECTION
LEFT_0P RIGHT_0P
INCOP DEC_0P LE_0P GE_0P EQ_0P NE_DP
AND_0P 0R_0P X0R_0P MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN
MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN 0R_ASSIGN
SUB_ASSIGN
LEFT_PAREN RIGHT_PAREN LEFTJ3RACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT
COMMA COLON EQUAL SEMICOLON BANG DASH TILDA PLUS STAR SLASH PERCENT LEFT_ANGLE RIGHT_ANGLE VERTICAL_BAR CARET AMPERSAND QUESTION
Выражения на языке шейдеров OpenGL выглядят так:
variablejdentifier: IDENTIFIER
primary_expression: variable_identifier INTCONSTANT FLOATCONSTANT BOOLCONSTANT
LEFT_PAREN expression RIGHT_PAREN
postfi x_express i on: primary_expression
postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET function_call
postfix_expression DOT FIELD_SELECTION postfix_expression INC_0P postfix_expression DEC_0P
integer_expression:
expression function cal1:
Грамматика языка
function_call_generic
function_call_generic:
function_call_header_with_parameters RIGHT_PAREN function_call_header_no_parameters RIGHT_PAREN
functi on_call_header_no_parameters: function_call_header VOID function_call_header
functi on_cal1Jieader_with_parameters:
function_call_header assignment_expression
function_call_header_with_parameters COMMA assignment_expression
fu net i on_ca11 _header:
functionjdentifier LEFT_PAREN
functionjdenti tier: constructor_identifier IDENTIFIER
// Конструкторы похожи на функции, но лексический анализатор // рассматривает большинство из них как ключевые слова.
const ructorjdentifier: FLOAT INT BOOL VEC2 VEC3 VEC4 BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 MAT 2 MAT3 MAT4
unary_expression: postfix_expression INC_0P unary_expression DEC_0P unary_expression unary_operator unary_expression
// Традиционные преобразования типов не поддерживаются
unary_operator: PLUS DASH BANG
TILDA // зарезервировано // Унарные операторы '*' и указатели не поддерживаются multiplicative_expression: Приложение А. Грамматика языка
unary_expression
multiplicative_expression STAR unary_expression multiplicative_expression SLASH unary_expression multiplicative_expression PERCENT unary_expression // зарезервировано