Eon*_*nil 5 comments lex escaping lexical-analysis
注释和转义序列(例如字符串文字)在常规符号表示中非常特殊.
对我来说很难理解常规词法分析器如何标记它们.如何词法分析器像lex,flex或等.处理这种符号?有通用的方法吗?或者只是逐个案例的每种语言?
我认为对于每种语言来说,这是事实。
如果注释起始符存在于字符串文字中,则词法分析器必须忽略它。类似地,在 C 中,如果\"字符串文字中存在转义双引号,则词法分析器必须忽略它。
为此,flex 具有启动条件。这使得上下文分析成为可能。
例如,flex texinfo手册中有一个C注释分析( /*and之间)的例子:*/
<INITIAL>"/*" BEGIN(IN_COMMENT);
<IN_COMMENT>{
"*/" BEGIN(INITIAL);
[^*\n]+ /* eat comment in chunks */
"*" /* eat the lone star */
\n yylineno++;
}
Run Code Online (Sandbox Code Playgroud)
开始条件还可以进行字符串文字分析。项目Start Conditions中有一个如何使用开始条件匹配 C 风格引用字符串的示例,还有标题为“
如何在 C 风格引用字符串中扩展反斜杠转义序列?”的常见问题解答项目。
在flex texinfo手册中。
也许这会直接回答您关于字符串文字的问题。