【发布时间】:2014-12-14 22:20:41
【问题描述】:
我正在为输出 C/C++ 代码的解析器生成器定义自己的语法。我为此选择了 Bison,但遇到了问题。我想在规则中使用括号(“(”,“)”),但 Bison 不接受它们例如,声明我使用的字符(三个点代替所有其他可能的 ASCII 字符):
character: "'" ("\0" | "\t" | "\n" | " " | "!" | ... | "}" | "~") "'";
如你所见,我用方括号表示一个字符必须有引号,任何一个字符,然后是另一个引号。
我对整数做了类似的事情:
integer: (["-"] digits) | "0";
有没有办法在 Bison 中实现类似的东西?或者,是否有一个解析器生成器可以接受 EBNF,甚至只接受括号并输出 c++ 代码?
【问题讨论】:
-
通常情况下,词法分析应该在flex中完成
标签: c++ parsing syntax grammar bison