diff options
Diffstat (limited to 'examples/manual/yymore2.lex')
-rw-r--r-- | examples/manual/yymore2.lex | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/examples/manual/yymore2.lex b/examples/manual/yymore2.lex new file mode 100644 index 0000000..f49ea23 --- /dev/null +++ b/examples/manual/yymore2.lex @@ -0,0 +1,33 @@ +/* + * 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); + } +%% |