diff options
Diffstat (limited to 'src/system.l')
-rw-r--r-- | src/system.l | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/system.l b/src/system.l new file mode 100644 index 0000000..b77255e --- /dev/null +++ b/src/system.l @@ -0,0 +1,58 @@ +%option c++ +%option noyywrap +%option debug +%option yyclass="Lexer" + +%{ +#include <iostream> +#include "system.tab.hh" + +#undef YY_DECL +# define YY_DECL template<> parser::symbol_type Lexer<parser::symbol_type>::yynlex () + +using parser = yy::parser; +using namespace std; +%} + +digit [0-9] +num {digit}+ +frc {digit}+\.{digit}+ +%% +{frc} { return parser::make_FRC(atof(yytext_ptr)); } +{num} { return parser::make_NUM(atoi(yytext_ptr)); } + +[\n]+ { return parser::make_BREAK();} +[ \t]+ { return parser::make_BLANK();} +begin { return parser::make_START(); } +end { return parser::make_END(); } +ver { return parser::make_VERSION(); } +cpu { return parser::make_CPU(); } +base { return parser::make_BASE(); } +user% { return parser::make_USER(); } +nice% { return parser::make_NICE(); } +system% { return parser::make_SYSP(); } +idle% { return parser::make_IDLE(); } +iowait% { return parser::make_IOWP(); } +irq% { return parser::make_IRQP(); } +swirq% { return parser::make_SIRQ(); } +core: { return parser::make_CORE(); } + +mem { return parser::make_MEM(); } +total { return parser::make_TOTAL(); } +cache { return parser::make_CACHE(); } +share { return parser::make_SHARED(); } +tswap { return parser::make_TSWAP(); } +uswap { return parser::make_USWAP(); } + +tmp { return parser::make_TEMP(); } +cur { return parser::make_CURR(); } +min { return parser::make_TMIN(); } +max { return parser::make_TMAX(); } +avg { return parser::make_TAVG(); } + +: { return parser::make_COLON(); } +\/ { return parser::make_SLASH(); } + +. { /* everything else */ } + +%% |