启用/禁用Yacc / Bison中的语法规则

时间:2010-02-04 12:46:08

标签: parsing grammar yacc bison

就像标题所说,我想在yacc或bison语法文件中启用/禁用某些语法规则。

有办法吗?

1 个答案:

答案 0 :(得分:2)

如果您的意思是,在编译时,yacc使用标准的C /* */注释语法。

如果您的意思是,在运行时,您仍然需要使用您拥有的表,因此他们需要将整个语法包含在可选短语中。

所以我建议制作一个假的终端符号。可选的规则将在假终端之前。如果您包含可选制作,则只能返回此终端。

这种方法的变体将涉及定义实际存在的真实终端的两个版本。这仅适用于带有终端的字符串的语法,但如果您有这样的输入,则一个终端可以表示一组规则,另一个终端可能出现在两组规则中,即:

T_A dynamic_phrase_in_grammar;

always_on static_phrase_in_grammar;

always_on: T_A | T_B;

因此,要启用动态短语,将真实终端作为T_A返回,以禁用它,返回为T_B。

相关问题