【发布时间】:2014-09-18 18:26:49
【问题描述】:
我试图弄清楚如何检查文字字符串中的定界引号。任何帮助表示赞赏。
这是我目前的起始状态。
<stringLiteral>INITIAL {value = ""; beginLine = lineNum; beginCol = colNum; }
<stringLiteral>\\n {cout<<"\n"; newline();}
<stringLiteral>\" {yylval.sval = new string(value); return STRING;}
<stringLiteral>\\. {error(linenum, colnum, string(YYText()) + " illegal token");}
【问题讨论】:
-
\" 规则显然没有任何问题。有什么不适合你的?
-
如果文字字符串没有结束引号。例如:“这是一个字符串。
-
不幸的是,丢失的字符是不可见的,因为它们只存在于想象中。 (“可能是一种抽象/仍然是一种永久的可能性/仅在投机的世界中。”-TS艾略特)。因此扫描将继续到下一个字符串的开头(如果有)或文件的结尾。或者,如果您不允许字符串文字中的行结尾,则到行尾。恢复和继续解析很困难,但如果您禁止换行,则有可能继续下一行并希望您不会错过太多。
标签: flex-lexer