Dr. Dobb's Journal May 1998
macro : expr EOI;
expr : stmt Zexpr;
Zexpr : EMPTY |
'+' expr |
'-' expr |
OR expr |
XOR expr ;
stmt : term Zstmt;
Zstmt : EMPTY |
'*' term |
'/' term |
'%' term |
AND term ;
term : number |
'(' expr ')' |
LOG '(' expr ')' |
LN '(' expr ')' |
LG '(' expr ')' |
EXP '(' expr ')' |
ABS '(' expr ')' |
SIN '(' expr ')' |
COS '(' expr ')' |
TAN '(' expr ')' |
ASIN '(' expr ')' |
ACOS '(' expr ')' |
ATAN '(' expr ')' |
NOT '(' expr ')' |
DIV '(' expr ',' expr ')' |
CNP '(' expr ',' expr ')' |
POW '(' expr ',' expr ')' |
ANP '(' expr ',' expr ')' ;
number : HEXVAL |
afloat |
'+' afloat |
'-' afloat |
NAME ;
afloat : INTEGER decimal exponent ;
decimal : EMPTY | '.' INTEGER ;
exponent : EMPTY |
'E' Eexp;
Eexp : INTEGER |
'-' INTEGER |
'+' INTEGER ;