Blame examples/manual/yymore2.lex

Packit f00812
/*
Packit f00812
 * yymore.lex: An example of using yymore()
Packit f00812
 *             to good effect.
Packit f00812
 */
Packit f00812
Packit f00812
%{
Packit f00812
#include <memory.h>
Packit f00812
Packit f00812
void yyerror(char *message)
Packit f00812
{
Packit f00812
  printf("Error: %s\n",message);
Packit f00812
}
Packit f00812
Packit f00812
%}
Packit f00812
Packit f00812
%x STRING
Packit f00812
Packit f00812
%%
Packit f00812
\"   BEGIN(STRING);
Packit f00812
Packit f00812
<STRING>[^\\\n"]*  yymore();
Packit f00812
<STRING><<EOF>>    yyerror("EOF in string.");       BEGIN(INITIAL);
Packit f00812
<STRING>\n         yyerror("Unterminated string."); BEGIN(INITIAL);
Packit f00812
<STRING>\\\n      {
Packit f00812
                     bcopy(yytext,yytext+2,yyleng-2);
Packit f00812
                     yytext += 2; yyleng -= 2;
Packit f00812
                     yymore();
Packit f00812
                  }
Packit f00812
<STRING>\"        {
Packit f00812
                     yyleng -= 1; yytext[yyleng] = '\0';
Packit f00812
                     printf("string = \"%s\"",yytext); BEGIN(INITIAL);
Packit f00812
                  }
Packit f00812
%%