Flex扫描仪检查分隔报价

时间:2014-09-18 18:26:49

标签: flex-lexer

我试图弄清楚如何检查文字字符串中的分隔引用。任何帮助表示赞赏。

这是我到目前为止的开始状态。

<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");}​

1 个答案:

答案 0 :(得分:0)

(@rici在评论中回答了这个问题并在此复制;另见Question with no answers, but issue solved in the comments (or extended in chat)

“规则”没有明显错误。

如果Literal String没有结尾引用。例如:“这是一个字符串,它会导致未终止字符串的问题。

不幸的是,缺少的字符是不可见的,因为它们只存在于想象中。 (“可能是一种抽象/剩余的永久可能性/仅在一个猜测的世界。” - A艾略特)。因此,扫描将继续到下一个字符串的开头(如果有)或文件的结尾。或者,如果您不允许字符串文字中的行结尾,则为行尾。恢复和继续解析是很困难的,尽管如果你禁止换行,有可能继续下一行并希望你不要错过太多。