在 Lex 和 Yacc 中创建注释

Ste*_*rus 8 yacc lex bison flex-lexer

如何在 Lex 和 Yacc 中发表评论?

到目前为止,我还没有尝试过 Yacc,但在 Lex 中我已经尝试过/* comment */and // comment,但这些都无法编译。我在 Mac 上,使用内置的 Lex 和 Yacc 编译器(或者可能是 X-Code 编译器,我不知道)。Lex 或 Yacc 或最好两者中注释的正确语法是什么?

use*_*421 5

来自信息柔性:

在定义和规则部分中,任何缩进文本或 %{ 和 %} 中包含的文本都会逐字复制到输出(删除 %{})。%{} 本身必须在行中不缩进。

在这种情况下,相关文本可以是目标语言的注释。

在定义部分(但不在规则部分)中,未缩进的注释(即以 开头的行 /*)也被逐字复制到输出中,直到下一个*/。

任何有效的 C 注释都是代码块中的注释。

yacc中的注释是/* ... */.


Ste*_*rus 5

任何C注释都可以作为 Yacc 和 Lex 程序中任何地方的注释,但是:

  • 当使用 Lex 或 Yacc 空格很重要时,因此/* comment */写入您的程序时,触摸文本的 LHS 将不起作用!
    • 要使其工作,您必须在行的开头添加一个制表符或空格,以将其推送到 C 代码,而不是 Lex 或 Yacc 代码。
  • gcc 是一个不错的编译器,非常喜欢你,所以它接受// comment评论,Lex 和 Yacc 都不好。这些注释虽然可以在 C 程序中工作,但不会工作!