diff options
author | mdodd <mdodd@FreeBSD.org> | 2004-01-11 21:10:35 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2004-01-11 21:10:35 +0000 |
commit | f805d7f5527061ba7af4c825e0657a43fb69f380 (patch) | |
tree | 5a06b640ab61ddaf53ecb3dacadde82ef51ee91c | |
parent | 30808aecc7d387925a864873d8085791db2d9072 (diff) | |
download | FreeBSD-src-f805d7f5527061ba7af4c825e0657a43fb69f380.zip FreeBSD-src-f805d7f5527061ba7af4c825e0657a43fb69f380.tar.gz |
- Handle doubled double quotes:
`"""foo"" bar"' -> `"foo" bar'
- Handle C++ style comments.
Requested by: wpaul
-rw-r--r-- | usr.sbin/ndiscvt/inf-token.l | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/usr.sbin/ndiscvt/inf-token.l b/usr.sbin/ndiscvt/inf-token.l index c6c08b9..cc1508b 100644 --- a/usr.sbin/ndiscvt/inf-token.l +++ b/usr.sbin/ndiscvt/inf-token.l @@ -64,9 +64,10 @@ update_lineno(const char *cp) \n { lineno++; return EOL; } \r ; ;.*$ ; +\/\/.*$ ; = { return EQUALS; } , { return COMMA; } -\"(\\\"|[^"])*\" { +\"(\\\"|[^"]|\"\")*\" { int len = strlen(yytext) - 2; int blen = len + 1; char *walker; @@ -77,6 +78,15 @@ update_lineno(const char *cp) goto out; walker = yylval.str; for (i = 1; i <= len; i++) { + if (yytext[i] == '\"') { + switch (yytext[i + 1]) { + case '\"': + i++; + break; + default: + break; + } + } if (yytext[i] == '\\') { switch (yytext[i + 1]) { case '\n': |