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 % 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