summaryrefslogtreecommitdiff
path: root/examples/manual/yymore2.lex
diff options
context:
space:
mode:
Diffstat (limited to 'examples/manual/yymore2.lex')
-rw-r--r--examples/manual/yymore2.lex33
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);
+ }
+%%