gpt4 book ai didi

flex-lexer - 在flex/lex中难以获得c样式的注释

转载 作者:行者123 更新时间:2023-12-03 09:17:48 26 4
gpt4 key购买 nike

我想在flex中制定一条规则,以使用像/ * * /这样的c样式注释

我有以下

c_comment "/*"[\n.]*"*/"

但是它永远不会匹配。知道为什么吗?如果您需要更多我的代码,请告诉我,我将提交整个内容。感谢任何答复。

最佳答案

我建议您改用start conditions

%x C_COMMENT

"/*" { BEGIN(C_COMMENT); }
<C_COMMENT>"*/" { BEGIN(INITIAL); }
<C_COMMENT>\n { }
<C_COMMENT>. { }

请注意, 和规则之间不得有空格。
<condition>定义C_COMMENT状态,规则 %x C_COMMENT将其开始。一旦启动, /*将使其返回到初始状态( */是预定义的),并且所有其他字符将被消耗而无需任何特殊操作。当两个规则匹配时,Flex会采用匹配最长的规则来消除歧义,因此点规则不会阻止 INITIAL匹配。 */规则是必需的,因为 a dot matches everything except a newline
\n定义使C_COMMENT成为排他状态,这意味着词法分析器仅会在进入状态后匹配“标记”为 %x的规则。

这是一个 tiny example lexer,它通过打印 <C_COMMENT>内部的所有内容来实现此答案。

关于flex-lexer - 在flex/lex中难以获得c样式的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com