Compiler errors 不要忽略Lex和YACC中的注释

Compiler errors 不要忽略Lex和YACC中的注释,compiler-errors,yacc,lex,Compiler Errors,Yacc,Lex,我已经在Lex和YACC中完成了一个源代码到源代码的编译器,我正在尝试将源文件的行注释保存到目标文件中。 注释行只能用“#”符号指定。 只有单行注释 我在名为Y_COMMENT的解析器中创建了规则。 问题在于LEX…可能是正则表达式。 事实上,注释是根据以下规则捕获的: "#".* {} 我将规则修改为: "#".*/\n { current_line_no = line_no; current_line = yytext; yyval.p = (cha

我已经在Lex和YACC中完成了一个源代码到源代码的编译器,我正在尝试将源文件的行注释保存到目标文件中。 注释行只能用“#”符号指定。 只有单行注释

我在名为Y_COMMENT的解析器中创建了规则。
问题在于LEX…可能是正则表达式。 事实上,注释是根据以下规则捕获的:

"#".*  {}
我将规则修改为:

"#".*/\n { 
      current_line_no = line_no;
      current_line = yytext;
      yyval.p = (char*) copy_str(yytext+1,1);
      return (Y_COMMENT);
      }

解析器仅适用于第一个注释行。在那之后,它给了我一个关于“无法识别的行代码”的错误。

后面的正斜杠(/)。*不需要谢谢!它适用于第一条评论行,但不适用于第二条评论行。现在,错误与注释结束后的空格有关(最后一个字符和行结束之间可能有空格)。也许,正则表达式太模糊了……这里的信息太少,无法提供一个好的答案。A是理想的,但至少您应该指定代码的哪一部分会产生“无法识别的行代码”错误,这是flex或yacc/bison生成的代码都无法自发产生的错误。是的,对不起……但我用另一种方式解决了这个问题:-)非常感谢你的帮助!