语义语句和yacc

semantic statements and yacc

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

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

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

Bison/yacc 当然是构建编译器的可能工具。许多人已经这样做了。是将语义代码重构为可重用的函数,还是直接将代码放入每个操作中,这取决于您的设计选择;我想我们大多数人都会推荐使用函数来避免代码重复。