










Sig: Las Macros YY_USER_ACTION, yy_act
Sup: Expresiones Regulares en Flex
Ant: Análisis de la Línea
Err: Si hallas una errata ...
Como se comentó, las opciones %pointer y %array
controlan la definición que
flex hace de yytext. en el caso en que eligamos la opción
%array la variable YYLMAX controla el tamaño del
array. Supongamos que en el fichero trivial.l del ejemplo
anterior introducimos las siguientes modificaciones:
$ cat trivial.l
%array
%{
#undef YYLMAX
#define YYLMAX 4
#include "tokens.h"
%}
digit [0-9]
id [a-zA-Z][a-zA-Z0-9]+
blanks [ \t\n]+
operator [+*/-]
%%
{digit}+ {return INTTOKEN; }
{digit}+"."{digit}+ {return FLOATTOKEN; }
{id} {return IDTOKEN;}
{operator} {return OPERATORTOKEN;}
{blanks} {return BLANKTOKEN;}
. {return (int) yytext[0];}
%%
int yywrap() {
return 1;
}
En tal caso, la definición excesivamente pequeña de YYLMAX provoca
un error en tiempo de ejecución:
$ fl -V -f tokens.h
version 1.0
File name is: tokens.h
token too large, exceeds YYLMAX











Sig: Las Macros YY_USER_ACTION, yy_act
Sup: Expresiones Regulares en Flex
Ant: Análisis de la Línea
Err: Si hallas una errata ...
Casiano Rodríguez León
2012-05-22