summaryrefslogtreecommitdiff
path: root/src/system.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/system.l')
-rw-r--r--src/system.l58
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 */ }
+
+%%