更新:事实证明,要让 bison 生成,我所要做的t.tab.c
就是使用-y
开关。但是,根据发布的答案,当问题给我一个段错误时,我最初对代码问题的假设似乎是正确的。这是现在的样子:
源代码与从 O'reilly 网站下载的源代码完全相同,我检查了它所基于的 ch1-04 代码。这都是非常简单的东西。将句子识别为 asubject VERB and object
的程序代码如下:ch1-05.l , ch1-05.y , ch1-05y.h
原始问题:
简而言之,我正在努力学习如何构建编译器。
我不太习惯 C\C++ 并且以前从未使用过 lex 和 yacc,我正在关注这本书:
现在,在第 21 页的书中,它是这样说的:
现在在 Fedora 2 上我没有 yacc。我安装了野牛。
这是我的 Fedora 上的场景:
请注意我正在使用-d。
如果你真的想看这里的代码:ch1-05.l、ch1-05.y、ch1-05y.h
我实际上很傻,并认为y.tab.c
这是书中的一个错误,他们实际上是这个意思ch1-05.tab.c
。我尝试用它进行编译,它给了我一个分段错误:/我花了一天时间才意识到应该有一个y.tab.c
。
我经常检查所以所以你需要我的任何东西我都会快速回复。我真的很想完成这件事,因为我因脑溢血正在度假,我想尽快完成这本书。我有相当多的书单和相当长的假期:D