%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