// Programa Lex Fig 3.37 [ASU-86] /* | a | b | Patrón | Acción | ------+-------+-------+--------+----------------+ 0137 | 247 | 8 | | | * 247 | 7 | 58 | a | return UNA; | * 8 | | 8 | a*b+ | return MUCHAS; | 7 | 7 | 8 | | | * 58 | | 68 | a*b+ | return MUCHAS; | * 68 | | 8 | abb | return TRES; | ------+-------+-------+--------+----------------+ */ %{ // Copiado al principio en lex.xx.c const int UNA = 256; // a const int TRES = 257; // abb const int MUCHAS = 258; // a*b+ %} // macros (definiciones regulares) una a %% {una} { return UNA; } abb { return TRES; } a*b+ { return MUCHAS; } %% // Copiado al final en lex.xx.c #if 0 #include #include int main() { int token = 0; yyin = stdin; // lee de la consola do { token = yylex(); std::string str( yytext , yyleng ); std::cout << "Token(" << token << ") == "; std:: cout << [" << str <<' ]'<< std::endl; } while (token != -1); } #endif