From fd6bb20116127f6ac903d4b03abac72a49baa1ae Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Sat, 27 Apr 2019 22:20:21 +0100 Subject: fish --- dataread.l | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 dataread.l (limited to 'dataread.l') diff --git a/dataread.l b/dataread.l new file mode 100644 index 0000000..b452ef7 --- /dev/null +++ b/dataread.l @@ -0,0 +1,57 @@ +%{ +#include +#include "y.tab.h" +int line_num = 1; +%} +%option noyywrap +%% + +\"[^"\n]* { + if (dl_text[yyleng - 1] == '\\') + yymore(); + else { + strcpy(dl_lval.string,&yytext[1]); + + if (input() != '"') { + fprintf(stderr,"EOL found inside \" on line %d\n",line_num); + return(-1); + } + return(STRING); + } + }; +[a-zA-Z][a-zA-Z0-9.-_]* { + strcpy(dl_lval.string, yytext); + return(NAME); + }; +[0-9]{1,2}[:][0-9]{1,2}[:][0-9]{1,2} { + return(TIME); + }; +[0-9]{1,2}[:][0-9]{1,2} { + sprintf(dl_lval.string, "%s:00", yytext); + return(TIME); + }; +[0-9]{1,2}[/][0-9]{1,2}[/][0-9]{1,4} { + return(DATE); + }; +[0-9]{1,2}[/][0-9]{1,2} { + sprintf(dl_lval.string, "%s/00", yytext); + return(DATE); + }; +[0-9]+ { + dl_lval.integer = atoi(yytext); + return(INTEGER); + }; +-[0-9]+ { + dl_lval.integer = atoi(yytext); + return(INTEGER); + }; +[\[\]{}(),:=] {return(yytext[0]);}; +\n {line_num++; return(yytext[0]);}; +\\\n ; +[ \t]* ; +#.* ; +. { + fprintf(stderr,"Bad datalink save file (%s).\n", yytext); + return(BAD); +}; +%% -- cgit v1.2.3