%option c++ %option noyywrap %option debug %option yyclass="Lexer" %option yylineno %{ #include #include "system.tab.hh" #include "system.loc.hh" #undef YY_DECL # define YY_DECL template<> parser::symbol_type Lexer::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(); } avail { return parser::make_AVAIL(); } 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 */ } %%