0

更新:バイソンを生成するために必要だったのは、スイッチ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 ページに次のように書かれています。

Lex & Yacc 21ページ

現在、fedora 2 を使用していますが、yacc はありません。バイソンを取り付けました。

私のフェドーラのシーンは次のようになります。

ターミナル (Shot5)

-dを使用していることに注意してください。

本当にコードを見たい場合は、 ch1-05.lch1-05.ych1-05y.hをご覧ください。


私は実際には十分にばかげy.tab.cていて、本の間違いだと思っていましたが、実際にはch1-05.tab.c. 私はそれでコンパイルしようとしましたが、セグメンテーション違反が発生しました:/そこにあるはずだと気付くのに1日かかりましたy.tab.c

私は非常に常にSOをチェックしているので、あなたが私から必要とするものは何でも迅速に対応します. 私は脳出血で休暇中なので、この本を早く完成させたいと思っています。私は本のかなりのリストとかなりの休日を持っています:D

4

2 に答える 2