[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

"Pegadinha" com o flex



Ois,

Quem quiser fazer experiencias com o flex vai descobrir que, alem do que
foi visto em aula, e' preciso colocar no inicio do arquivo ".yy" uma linha
assim:

%option noyywrap

Normalmente, o analisador gerado pelo flex (atraves da funcao yylex()) vai
lendo a entrada padrao, ou o arquivo que foi definido como sendo yyin,
ate' o fim-de-arquivo. Quando o fim-de-arquivo e' encontrado, ele chama a
funcao yywrap(). Essa funcao deve ser definida pelo usuario. Se ela
retorna 1, yylex() termina; se ela retorna 0, a funcao yylex() "entende"
que yyin foi redefinido para um novo arquivo, e recomeca a analise desse
arquivo. Entao, se voce quiser um analisador que rode uma vez ate' o fim
de arquivo e retorne, voce deve definir uma funcao yywrap() que sempre
retorne 1:

{%
int yywrap () { return 1; };
%}

Mas, se voce usar "%option noyywrap", voce nao precisa definir essa
funcao: o yylex() retorna incondicionalmente.

Ate' +
Nelson

--
Science is what we can tell a computer. Art is everything else. --- D.E.Knuth