diff --git a/macro/MacroFlex.ll b/macro/MacroFlex.ll index 05a60329..792efce7 100644 --- a/macro/MacroFlex.ll +++ b/macro/MacroFlex.ll @@ -51,6 +51,7 @@ typedef Macro::parser::token token; %x FOR_BODY %x THEN_BODY %x ELSE_BODY +%x END_DATE %{ // Increments location counter for every token read @@ -60,6 +61,7 @@ typedef Macro::parser::token token; SPC [ \t]+ EOL (\r)?\n CONT \\\\ +DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2])) %% /* Code put at the beginning of yylex() */ @@ -87,6 +89,12 @@ CONT \\\\ ^{SPC}*@# { yylloc->step(); BEGIN(STMT); } @\{ { yylloc->step(); BEGIN(EXPR); } +{DATE} { yylloc->step(); *yyout << "dates('" << yytext << "')"; } +${DATE} { yylloc->step(); *yyout << yytext + 1; } + +dates{SPC}*\({SPC}*\'{DATE} { yylloc->step(); *yyout << yytext; BEGIN(END_DATE); } +{SPC}*\'{SPC}*\) { yylloc->step(); *yyout << yytext; BEGIN(INITIAL); } + \} { BEGIN(INITIAL); return token::EOL; } {CONT}{SPC}*{EOL} { yylloc->lines(1); yylloc->step(); }