我正在编写一个简单语言的解析器,我在使用flex时遇到了一些奇怪的问题。当我尝试在这里编译源代码(http://pastebin.com/qu7N0H3q)时,我得到第50-52行的“无法识别的规则”错误,但奇怪的是它们是注释(应该简单地被跳过)。在添加COMMENT条件之前,一切都运行良好,所以我很确定是什么打破了一切(第48行和第86-96行)。我已经查找了这个问题,找不到适合我特定情况的任何内容,但我发现当出现语法问题时,通常会出现无法识别的规则错误(可能就是这种情况,因为我对条件有多么不满意编辑适用于flex)。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
这几个月没有得到答复,所以我认为需要关闭。
我已经从pastebin下载了你的代码并为你检查了一下。你的问题实际上有答案!当您添加COMMENT时出现问题...
Flex没有注释表示法,因此您不能拥有任何注释,因此它们是“无法识别的规则”。
解决方案是:
我看到您在 C 的语法中使用了注释,但是您在一行的第一列中启动了它们。只有正则表达式模式可以从第一列开始。页面中缩进的任何内容都被视为操作的一部分,并且不会更改。因此,如果您只是将注释缩进几个空格,那么错误就会消失。
不要误以为flex允许你在 C 中编写动作,你可以在任何你想要的地方使用 C 语言的文物!
这是flex(或lex)新手用户常犯的错误,值得在详细解答中解释。