语义陈述和yacc

时间:2017-04-18 18:06:26

标签: compiler-construction bison yacc bisonc++

我正在搜索c语法并发现此链接https://www.lysator.liu.se/c/ANSI-C-grammar-y.html#cast-expression问题是c和lex代码有语法,但我没有看到任何语义,如加法,乘法实现我知道yacc仅用于语法检查,但我们也可以在其中编写语义,其中实现的语义是在其他工具中实现的。

我正在尝试实现一个小编译器,我在哪里编写语义,使用函数在yacc中编写它们是否合适。

1 个答案:

答案 0 :(得分:2)

该示例语法(适用于非常旧版本的C)不包含任何特定语义。你当然可以添加它们;语义规则将取决于您正在构建的工具类型。

Bison / yacc无疑是构建编译器的可能工具。很多人都这样做了。无论是将语义代码重构为可重用函数还是仅将代码直接放入每个动作中,都是一个由您自己决定的设计选择;我想我们大多数人会建议使用一些函数来避免代码重复。