C Flex无法识别的规则

C Flex无法识别的规则,c,parsing,flex-lexer,C,Parsing,Flex Lexer,我正在为一种简单的语言编写解析器,而我在使用flex时遇到了一些奇怪的问题。当我试图编译source over here()时,第50-52行出现了“Unrecognized rule”错误,但奇怪的是它们是注释(应该直接跳过)。在添加注释之前,一切都很好,所以我很确定这就是打破一切的原因(第48行和第86-96行)。我查找了这个问题,找不到任何适合我的特定情况的东西,但我发现当出现语法问题时,通常会出现无法识别的规则错误(可能是这样,因为我对flex的条件编译工作方式不是100%满意) 有人能

我正在为一种简单的语言编写解析器,而我在使用flex时遇到了一些奇怪的问题。当我试图编译source over here()时,第50-52行出现了“Unrecognized rule”错误,但奇怪的是它们是注释(应该直接跳过)。在添加注释之前,一切都很好,所以我很确定这就是打破一切的原因(第48行和第86-96行)。我查找了这个问题,找不到任何适合我的特定情况的东西,但我发现当出现语法问题时,通常会出现无法识别的规则错误(可能是这样,因为我对flex的条件编译工作方式不是100%满意)


有人能帮我弄清楚吗?

这几个月来一直没有答案,所以我认为它需要关闭

我已经从pastebin下载了你的代码,并为你检查了它。你的问题其实已经有答案了!当你添加评论时,问题出现了

Flex没有注释符号,因此您不能有任何注释,因此它们是“未识别的规则”

解决办法是:

  • 删除评论
  • 将注释嵌入将由编译器而非flex处理的操作部分
我看到您在C的语法中使用了注释,但您是从一行的第一列开始的。只有正则表达式模式可以在列1中开始。页面中缩进的任何内容都被视为操作的一部分,复制时不会更改。因此,如果您只是将注释缩进几个空格,错误就会消失

不要被flex允许您在C中编写操作的事实所误导,您可以在任何地方使用C语言中的工件

这是flex(或lex)新手经常犯的错误,值得在这个详细的答案中加以解释