(p)
statement : IF "(" expression ")" statement %prec THEN
                |   IF "(" expression ")" statement ELSE statement
                |   for_loop statement
                |   LET "(" assignment_list ")" statement %prec THEN
                |   ASSERT "(" opt_call_parameter_list ")" statement
                |   ECHO "(" opt_call_parameter_list ")" statement
                |   "{" statements "}"
                |   "%" statement %prec BACKGROUND
                |   "*" statement %prec BACKGROUND
                |   "!" statement %prec BACKGROUND
                |   "#" statement %prec BACKGROUND
                |   call statement
                |   USE FILENAME
                |   INCLUDE FILENAME
                |   ";"
statement : IF "(" expression ")" statement %prec THEN
                |   IF "(" expression ")" statement ELSE statement
                |   for_loop statement
                |   LET "(" assignment_list ")" statement %prec THEN
                |   ASSERT "(" opt_call_parameter_list ")" statement
                |   ECHO "(" opt_call_parameter_list ")" statement
                |   "{" statements "}"
                |   "%" statement %prec BACKGROUND
                |   "*" statement %prec BACKGROUND
                |   "!" statement %prec BACKGROUND
                |   "#" statement %prec BACKGROUND
                |   call statement
                |   USE FILENAME
                |   INCLUDE FILENAME
                |   ";"
statement : IF ( expression ) statement %prec THEN | IF ( expression ) statement ELSE statement | for_loop statement | LET ( assignment_list ) statement %prec THEN | ASSERT ( opt_call_parameter_list ) statement | ECHO ( opt_call_parameter_list ) statement | { statements } | % statement %prec BACKGROUND | * statement %prec BACKGROUND | ! statement %prec BACKGROUND | # statement %prec BACKGROUND | call statement | USE FILENAME | INCLUDE FILENAME | ;
def p_statement(p):
    ''' statement : IF "(" expression ")" statement %prec THEN
                |   IF "(" expression ")" statement ELSE statement
                |   for_loop statement
                |   LET "(" assignment_list ")" statement %prec THEN
                |   ASSERT "(" opt_call_parameter_list ")" statement
                |   ECHO "(" opt_call_parameter_list ")" statement
                |   "{" statements "}"
                |   "%" statement %prec BACKGROUND
                |   "*" statement %prec BACKGROUND
                |   "!" statement %prec BACKGROUND
                |   "#" statement %prec BACKGROUND
                |   call statement
                |   USE FILENAME
                |   INCLUDE FILENAME
                |   ";"
                '''
def p_statement ( p ) :