next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
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 ...

Declaraciones pointer y array

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


next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
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
2013-03-05