diff options
Diffstat (limited to 'src/intersim2/config.l')
| -rw-r--r-- | src/intersim2/config.l | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/intersim2/config.l b/src/intersim2/config.l new file mode 100644 index 0000000..4df14c7 --- /dev/null +++ b/src/intersim2/config.l @@ -0,0 +1,54 @@ +%{ + +#include "y.tab.h" + +static unsigned int lineno = 1; + +void config_error(char * msg, int lineno); +void yyerror(char * msg); + +extern int config_input(char *, int); +#undef YY_INPUT +#define YY_INPUT(b, r, ms) (r = config_input(b, ms)) + +%} + +Digit [0-9] +Exponent [eE][+-]?{Digit}+ +DblConst ({Digit}*\.)?{Digit}+{Exponent}? +StrConst [A-Za-z_\-/\.][A-Za-z0-9_\-/\.\+(\{\,)\}]* + +%% + + /* Ignore comments and all spaces */ + +\/\/[^\n]* ; +[ \t\r]* ; + +\n { lineno++; } + + /* Commands */ + +\{[A-Za-z0-9_\-\.(\{\,)\}]+(\,[A-Za-z0-9_\-\.(\{\,)\}]+)*\} { yylval.name = strdup( yytext ); return STR; } + +-?[0-9]+ { yylval.num = atoi( yytext ); return NUM; } + +-?[0-9]*\.[0-9]+ { yylval.fnum = atof( yytext ); return FNUM; } + +-?{DblConst} { yylval.fnum = atof( yytext ); return FNUM;} + +{StrConst} { yylval.name = strdup( yytext ); return STR; } + +. { return yytext[0]; } + +%% + +void yyerror( char * msg ) +{ + config_error( msg, lineno ); +} + +int yywrap() +{ + return 1; +} |
