This grammar was derived from slparse.c --- it is out-dated.
statement:
compound-statement
if ( expression ) statement
if ( expression ) statement else statement
!if ( expression ) statement
loop ( expression ) statement
_for ( expression ) statement
while ( expression ) statement
do statement while (expression) ;
for ( expressionopt ; expressionopt ; expressionopt ) statement
ERROR_BLOCK statement
EXIT_BLOCK statement
USER_BLOCK0 statement
USER_BLOCK1 statement
USER_BLOCK2 statement
USER_BLOCK3 statement
USER_BLOCK4 statement
forever statement
break ;
continue ;
return expressionopt ;
variable variable-list ;
struct struct-decl ;
define identifier function-args ;
define identifier function-args compound-statement
switch ( expression ) statement
rpn-line
at-line
push ( expression )
( expression ) = expression ;
expression ;
expression :
statement-list:
statement
statement-list statement
compound-statement:
{ statement-list }
variable-list:
variable-decl
variable-decl variable-list
variable-decl:
identifier
identifier = simple-expression
struct-declaration:
struct { struct-field-list };
struct-field-list:
struct-field-name , struct-field-list
struct-field-name
struct-declaration:
typedef struct { struct-field-list } Type_Name;
struct-field-list:
struct-field-name , struct-field-list
struct-field-name
function-args:
( args-dec-opt )
args-decl-opt:
identifier
args-decl , identifier
expression:
simple_expression
simple-expression , expression
<none>
% Note: simple-expression groups operators OP1 at same level. The
% actual implementation will not do this.
simple-expression:
unary-expression
binary-expression BINARY-OP unary-expression
andelse xxelse-expression-list
orelse xxelse-expression-list
xxelse-expression-list:
{ expression }
xxelse-expression-list { expression }
binary-expression:
unary-expression
unary-expression BINARY-OP binary-expression
unary-expression:
postfix-expression
++ postfix-expression
-- postfix-expression
case unary-expression
OP3 unary-expression
(OP3: + - ~ & not @)
postfix-expression:
primary-expression
postfix-expression [ expression ]
postfix-expression ( function-args-expression )
postfix-expression . identifier
postfix-expression ^ unary-expression
postfix-expression ++
postfix-expression --
postfix-expression = simple-expression
postfix-expression += simple-expression
postfix-expression -= simple-expression
primary-expression:
literal
identifier
( expression_opt )
[ inline-array-expression ]
&identifier
struct-definition
__tmp(literal)
inline-array-expression:
expression
expression : expression
expression : expression : expression