【问题标题】:Flex scanner checking for delimiting quoteFlex 扫描仪检查定界报价
【发布时间】: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


【解决方案1】:

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

\" 规则显然没有任何问题。

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

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

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多