From c5214c87594e0de68111a9160dba5dc1aceb9a43 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Thu, 19 Apr 2007 14:47:33 +0000 Subject: Changed date parser to use lex/yacc. --- scantime.ll | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 scantime.ll (limited to 'scantime.ll') diff --git a/scantime.ll b/scantime.ll new file mode 100644 index 00000000..02d00d78 --- /dev/null +++ b/scantime.ll @@ -0,0 +1,29 @@ +%option c++ 8bit + +%{ +#define YYSTYPE struct ledger::intorchar + +extern int yywrap(); + +#include "times.h" +#include "parsetime.h" + +extern YYSTYPE yylval; +%} + +shortmon (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) +longmon (January|February|March|April|May|June|July|August|September|October|November|December) + +%% + +[ \t] return TOK_SPACE; +[\r\n] ; + +[0-9]{4} yylval = ledger::intorchar(std::atoi(yytext)); return TOK_FOURNUM; +[0-9]{2} yylval = ledger::intorchar(std::atoi(yytext)); return TOK_TWONUM; +[0-9]{1} yylval = ledger::intorchar(std::atoi(yytext)); return TOK_ONENUM; + +{shortmon} yylval = ledger::intorchar(yytext); return TOK_MONTH; +{longmon} yylval = ledger::intorchar(yytext); return TOK_MONTH; + +. return (int) yytext[0]; -- cgit v1.2.3