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