]> Joshua Wise's Git repositories - snipe.git/blobdiff - parse/l5.lex
Add carriage return to string lexer.
[snipe.git] / parse / l5.lex
index 3028a6c9407460d83bdf00a64e5c8fc146e9b2a6..667638cbd5e07f122c5bedc60546982404f200be 100644 (file)
@@ -85,6 +85,7 @@ decnum = [0-9][0-9]*;
 hexnum = 0x[0-9a-fA-F][0-9a-fA-F]*;
 
 ws = [\ \t\012];
+quote = [\"];
 
 %%
 
@@ -188,5 +189,16 @@ ws = [\ \t\012];
 <COMMENT_LINE> \n     => (ParseState.newline yypos; YYBEGIN INITIAL; lex());
 <COMMENT_LINE> .      => (lex());
 
-<STRING> [^\"\\]*     => (addString yytext ; lex() );
+<STRING> "\\\\"       => (addString "\\" ; lex() );
+<STRING> "\\n"        => (addString "\n" ; lex() );
+<STRING> "\\r"        => (addString "\r" ; lex() );
+<STRING> "\\t"        => (addString "\t" ; lex() );
+<STRING> "\\\""       => (addString "\t" ; lex() );
+<STRING> "\\".        => (ErrorMsg.error (ParseState.ext (yypos,yypos))
+                              ("illegal escape sequence: \"" ^ yytext ^ "\"");
+                          lex ());
+<STRING> "\n"         => (ErrorMsg.error (ParseState.ext (yypos,yypos))
+                              ("illegal newline in the middle of the string, asshole");
+                          lex ());
 <STRING> "\""         => (YYBEGIN INITIAL; endString yypos );
+<STRING> .            => (addString yytext ; lex() );
This page took 0.024013 seconds and 4 git commands to generate.