更新:バイソンを生成するために必要だったのは、スイッチt.tab.c
を使用することだけだったことがわかりました。ただし、投稿された回答によると、問題がセグメンテーション違反を引き起こしたときのコードの問題の最初の仮定は正しいようです-y
。これが現在のすべての外観です。
ソースは、O'reilly の Web サイトからダウンロードしたものとまったく同じであり、これが基づいている ch1-04 コードをトリプル チェックしました。それはすべて非常に単純なものです。文を文字として認識するプログラムsubject VERB and object
コードは次のとおりです : ch1-05.l , ch1-05.y , ch1-05y.h
元の質問:
簡潔に言うと、私はコンパイラを構築する方法を学ぶために取り組んでいます。
私は C\C++ にあまり慣れておらず、これまで lex と yacc を使用したことがありません。これは、この本に従っています。
さて、本書の 21 ページに次のように書かれています。
現在、fedora 2 を使用していますが、yacc はありません。バイソンを取り付けました。
私のフェドーラのシーンは次のようになります。
-dを使用していることに注意してください。
本当にコードを見たい場合は、 ch1-05.l、ch1-05.y、ch1-05y.hをご覧ください。
私は実際には十分にばかげy.tab.c
ていて、本の間違いだと思っていましたが、実際にはch1-05.tab.c
. 私はそれでコンパイルしようとしましたが、セグメンテーション違反が発生しました:/そこにあるはずだと気付くのに1日かかりましたy.tab.c
。
私は非常に常にSOをチェックしているので、あなたが私から必要とするものは何でも迅速に対応します. 私は脳出血で休暇中なので、この本を早く完成させたいと思っています。私は本のかなりのリストとかなりの休日を持っています:D