: ; : ()? [EOF]; : ()?; : [FUNCTION] [IDENTIFIER] [LPAREN] ()? [RPAREN] [LBRACE] ()? [RBRACE]; : [IDENTIFIER: parameter_name] ([COMMA] )?; : ()?; : [LBRACE] () [RBRACE]; : ; : [VAR] [IDENTIFIER: identifier] [EQUALS] [SEMICOLON]; : [IF] [LPAREN] ()? [RPAREN] ([ELSE] )?; : [WHILE] [IDENTIFIER: loop_name] [LPAREN] [RPAREN] ; : [SEMICOLON]; : ; : ([IDENTIFIER: identifier] [EQUALS])? ; : ([DOUBLE_EQUALS | NOT_EQUALS: op] )?; : ([LESS_THAN | GREATER_THAN | LESS_THAN_EQUALS | GREATER_THAN_EQUALS: op] )?; : ([PIPE | TILDE_PIPE: op] )?; : ([AMPERSAND | TILDE_AMPERSAND: op] )?; : ([CARAT | TILDE_CARAT: op] )?; : ([PLUS | MINUS: op] )?; : ([LEFTSHIFT | RIGHTSHIFT | TILDE: op])? ; : [LPAREN] [RPAREN]; : [IDENTIFIER: function_name] [LPAREN] ()? [RPAREN]; : ([COMMA] )?; : [IDENTIFIER: identifier]; : [NUMBER: number]; : ; : ;