Компилятор языка формул
%lex
%parse-param CONTEXT
%%
\s+ return '';
\+\s\+ return '+';
"*" return '*';
"/" return '/';
"-" return '-';
"+" return '+';
"^" return '^';
"(" return '(';
")" return ')';
"}" return '}';
"," return ',';
"{" return '{';
"AND"|"and" return 'AND';
"OR"|"or" return 'OR';
"NOT"|"not"|"!" return 'NOT';
"!=" return 'NE';
"<=" return 'LTE';
">=" return 'GTE';
">" return 'GT';
"<" return 'LT';
"==" return 'EQ';
"true"|"TRUE" return 'TRUE';
"false"|"FALSE" return 'FALSE'
"NULL"|"null" return 'NULL';
periodin
|colin
|objin
|grpin
|divin
|coltagin
|objtagin
|rowtagin
|groupin return 'BOOLFUNC';
treetagin
|pathin
|rowin
|rowgroupin
|rowsumgrpin return 'U_BOOLFUNC';
[0-9]*[1-9]+[0-9]*("."[0-9]+)?\b
|[0]+"."[0-9]*[1-9]+[0-9]*?\b return 'NUMBER';
[0]+("."[0]*)?\b return 'ZNUMBER';
\".*?\"
|\'.*?\' return 'LITERAL';
'f.If'
|'if' return 'IF';
[$@.].*?\? return 'VARIABLE';
':' return 'CASEDELIM';
';' return 'EOC';
'forcol'
|'forobj'
|'fordiv' return 'SWITCH_FUNC';
[A-ZА-Я0-9]+(?=^|$|[^\p{L}]) return 'MIXED';
<<EOF>> return 'EOF';
/lex
%left '+' '-'
%left '*' '/'
%left '^'
%left UMINUS
%left OR
%left AND
%left NOT
%%


Last updated