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