0

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

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

4

1 回答 1

2

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

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

于 2017-04-18T19:09:17.140 回答