| begin | ::= | ( decl )* ( statements )* <EOF> |
| statements | ::= | state ( ";" )? |
| | | <BEGIN> ( state ( ";" )? )* <END> | |
| | | "{" ( state ( ";" )? )* "}" | |
| state | ::= | <CALL> <STRING_LITERAL> ( "(" l_param ")" )? |
| | | <WAIT> exp times | |
| | | ( <ID> | <PARAM> ) <EQUAL> exp | |
| | | <IODELAY> exp times | |
| | | <CLICK> <BUTTON> exp | |
| | | <DCLICK> <BUTTON> exp | |
| | | <SAY> exp | |
| | | <KEYPRESS> exp | |
| | | <KEYRELEASE> exp | |
| | | <PUSHKEY> exp | |
| | | <MOUSEMOVE> exp | |
| | | <MOUSEPRESS> <BUTTON> | |
| | | <MOUSERELEASE> <BUTTON> | |
| | | <DRAG> ( <ALL> | exp ) ( <OBJECTS> )? exp ( <FROM> )? exp | |
| | | <IF> exp statements ( <ELSE> statements )? | |
| | | <WHILE> exp statements | |
| | | <REPEAT> exp ( <TIMES> )? statements | |
| | | <BREAK> | |
| | | <EXIT> | |
| | | <PRINT> exp | |
| | | <DATE> "(" ( <ID> | <PARAM> ) "," ( <ID> | <PARAM> ) "," ( <ID> | <PARAM> ) ")" | |
| | | <TIME> "(" ( <ID> | <PARAM> ) "," ( <ID> | <PARAM> ) "," ( <ID> | <PARAM> ) ")" | |
| | | <BEEP> | |
| times | ::= | <MILISEC> |
| | | <MIN> | |
| | | ( <SEC> )? | |
| decl | ::= | ( <NUMBER> | <STRING> | <LOCATION> | <MACROKEY> | <COLOR> ) l_id ( ";" )? |
| l_id | ::= | <ID> ( <EQUAL> exp )? ( "," l_id )* |
| cte | ::= | <STRING_LITERAL> |
| | | <NUMBER_LITERAL> | |
| | | <LOCATION_LITERAL> | |
| | | <KEY_LITERAL> | |
| | | <COLOR_LITERAL> | |
| s_exp | ::= | exp_m ( ( <OR> | <ADD> | <SUB> ) exp_m )* |
| exp_m | ::= | val_exp ( ( <AND> | <MULTIPLY> | <DIV> | <MOD> ) val_exp )* |
| val_exp | ::= | ( val | "(" exp ")" ) |
| val | ::= | cte |
| | | color_din | |
| | | <ID> | |
| | | <PARAM> | |
| | | <ISNATIVEMODE> | |
| exp | ::= | s_exp ( ( <LESS> | <GREAT> | <NOTEQUAL> | <EQUAL> | <GREATEQUAL> | <LESSEQUAL> ) s_exp )? |
| color_din | ::= | <COLOR> val |
| l_param | ::= | ( <ID> | <PARAM> | <STRING_LITERAL> | <NUMBER_LITERAL> | <LOCATION_LITERAL> | <KEY_LITERAL> | <COLOR_LITERAL> ) ( "," l_param )* |