| TEA Grammar | Index |
translation-unit:
external-declaration
translation-unit external-declaration
external-declaration:
function-definition
function-definition:
declaration-specifier* declarator compound-statement
declaration-specifier:
type-specifier declaration-specifier*
type-specifier:
void
char
int
string
declarator:
identifier
declarator ( parameter-list )
parameter-list:
parameter-declaration
parameter-list , parameter-declaration
parameter-declaration:
declaration-specifier declarator
compound-statement:
statement-list*
statement-list:
statement-list statement
statement:
asm-statement
selection-statement
jump-statement
labeled-statement
loop-statement
expression-statement
labeled-statement:
identifier : statement
case constant : statement
default : statement
selection-statement:
if ( expression ) statement
if ( expression ) statement else statement
switch ( expression ) statement
asm-statement:
asm { asm-list* }
asm-list:
opcode
labeled-statement
jump-statement:
return expression* ;
continue ;
break ;
goto identifier ;
expression:
assignment-expression
expression , assigment-expression
assignment-expression:
conditional-expression
unary-expression assignment-operator assigment-expression
conditional-expression:
logical-OR-expression
logical-OR-expression ? expression : conditional-expression
logical-OR-expression:
logical-AND-expression
logical-OR-expression || logical-AND-expression
logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression
inclusive-OR-expression:
exclusive-OR-expression
inclusive-OR-expression | exclusive-OR-expression
exclusive-OR-expression:
AND-expression
exclusive-OR-expression ^ AND-expression
AND-expression:
equality-expression
AND-expression & equality-expression
equality-expression:
relational-expression
equality-expression == relational-expression
equality-expression != relational-expression
relational-expression:
shift-expression
relational-expression < shift-expression
relational-expression > shift-expression
relational-expression <= shift-expression
relational-expression >= shift-expression
shift-expression:
cast-expression
shift-expression << cast-expression
shift-expression >> cast-expression
additive-expression:
multiplicative-expression
additive-expression + multiplicative-expression
additive-expression - multiplicative-expression
multiplicative-expression:
cast-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
multiplicative-expression % cast-expression
cast-expression:
unary-expression
( type-specifier ) cast-expression
unary-expression:
postfix-expression
++ unary-expression
-- unary-expression
unary-operator cast-expression
unary-operator:
-
+
!
~
postfix-expression:
primary-expression
postfix-expression ++
postfix-expression --
primary-expression:
identifier
constant
( expression )
loop-statement:
while ( expression ) statement
do statement while ( expression ) ;
for ( expression* ; expression* ; expression* ) statement