diff options
author | 2019-03-13 15:36:46 -0700 | |
---|---|---|
committer | 2019-03-13 15:41:13 -0700 | |
commit | 77a53d41a63f06089ecc83c84fccd7c4a42a89af (patch) | |
tree | 4e7fa36f324dba48dea0aebb158ba7c9ff045ce2 /Source/Parser/wp_parser.l | |
parent | 56104548c321aa1d26f6773091e2801c47626dea (diff) | |
download | WarpX-77a53d41a63f06089ecc83c84fccd7c4a42a89af.tar.gz WarpX-77a53d41a63f06089ecc83c84fccd7c4a42a89af.tar.zst WarpX-77a53d41a63f06089ecc83c84fccd7c4a42a89af.zip |
switch to WarpXParser
Diffstat (limited to 'Source/Parser/wp_parser.l')
-rw-r--r-- | Source/Parser/wp_parser.l | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Source/Parser/wp_parser.l b/Source/Parser/wp_parser.l new file mode 100644 index 000000000..e8c99200d --- /dev/null +++ b/Source/Parser/wp_parser.l @@ -0,0 +1,68 @@ +%option noyywrap nodefault +%{ +#include "wp_parser_y.h" +#include "wp_parser.tab.h" +%} + + /* Tokens NUMBER, SYMBOL, F1, POW, F2, etc. are defined in wp_parser.y. */ + /* Types WP_SQRT, WP_SQRT, etc. are defined in wp_parser_y.h. */ + + /* Used leater to define NUMBER */ +EXP ([Ee][-+]?[0-9]+) + +%% + +"+" | +"-" | +"*" | +"/" | +"=" | +"|" | +"," | +"<" | +">" | +"(" | +")" { return yytext[0]; } /* simply pass through */ + + /* yylval is union type defined in wp_parser.tab.h that is generated + * by bison with wp_parser.y */ + +"sqrt" { yylval.f1 = WP_SQRT; return F1; } +"exp" { yylval.f1 = WP_EXP; return F1; } +"log" { yylval.f1 = WP_LOG; return F1; } +"log10" { yylval.f1 = WP_LOG10; return F1; } +"sin" { yylval.f1 = WP_SIN; return F1; } +"cos" { yylval.f1 = WP_COS; return F1; } +"tan" { yylval.f1 = WP_TAN; return F1; } +"asin" { yylval.f1 = WP_ASIN; return F1; } +"acos" { yylval.f1 = WP_ACOS; return F1; } +"atan" { yylval.f1 = WP_ATAN; return F1; } +"sinh" { yylval.f1 = WP_SINH; return F1; } +"cosh" { yylval.f1 = WP_COSH; return F1; } +"tanh" { yylval.f1 = WP_TANH; return F1; } +"abs" { yylval.f1 = WP_ABS; return F1; } +"fabs" { yylval.f1 = WP_ABS; return F1; } +"**" { yylval.f2 = WP_POW; return POW;} +"^" { yylval.f2 = WP_POW; return POW;} +"pow" { yylval.f2 = WP_POW; return F2; } +"heaviside" { yylval.f2 = WP_HEAVISIDE; return F2; } +"min" { yylval.f2 = WP_MIN; return F2; } +"max" { yylval.f2 = WP_MAX; return F2; } + + /* We use SYMBOL to hold variables and constants */ +[a-zA-Z][a-zA-Z0-9]* { yylval.s = wp_makesymbol(yytext); return SYMBOL; } + + /* Number */ +[0-9]+"."[0-9]*{EXP}? | +"."?[0-9]+{EXP}? { yylval.d = atof(yytext); return NUMBER; } + + /* Special characters */ +"//".* +[ \t] /* ignore white space */ +\\\n /* ignore line continuation */ +"\n" { return EOL; } + + /* everything else */ +. { yyerror("Unknow character %c\n", *yytext); } + +%% |