我正在搜索c语法并找到这个链接https://www.lysator.liu.se/c/ANSI-C-grammar-y.html#cast-expression,问题是c和lex代码有语法,但我没有看到任何像加法、乘法实现的语义--我知道yacc只用于语法检查,但我们也可以在其中编写语义,其中实现的语义是在其他工具中实现的。
我正在尝试实现一个小型编译器,在哪里编写语义,用yacc函数编写它们好吗?
发布于 2017-04-18 19:09:17
该示例语法(用于非常老版本的C)不包含任何特定的语义。您当然可以添加它们;语义规则将取决于您正在构建的工具类型。
Bison/yacc无疑是一个可以用来构建编译器的工具。很多人都这样做了。无论您是将语义代码重构为可重用的函数,还是直接将代码放入每个操作中,这都是一种设计选择,这取决于您;我认为我们大多数人都会建议使用一些函数来避免代码重复。
https://stackoverflow.com/questions/43479320
复制相似问题