K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]


新規投稿 | 開設者ホームページへ戻る | ヘルプ


[1430] Diksamのmakeでエラーとなる
返信


投稿者:青餓鬼
2009/09/07 16:37:15

Link:
こんにちは。初めて投稿します。
8月17日にソースコードをダウンロードして、順にコンパイルしているうち、Diksamのcompiler項になったら次のようなエラーメッセージが表示されました。

>bison --yacc -dy diksam.y
>diksam.y:428 13-14: $$ for the midrule at $2 of 'block' has no declared type
>gmake: *** [y.tab..h] Error 1

実行環境はWin XPで、MinGWは今回インストールしましたが、CygWinは1年ほど前にインストールしたものを使っています。
システムの起動もツールとソースコードの展開もDドライブで実行していて、「鬼車」もインストール済みです。
Bisonの文法は自信がないので、エラーの内容について御教授ください。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1432] Re:Diksamのmakeでエラーとなる
返信


投稿者:(ぱ)こと管理人
2009/09/08 02:15:10

Link:http://kmaebashi.com
>こんにちは。初めて投稿します。

はじめまして。

>8月17日にソースコードをダウンロードして、順にコンパイルしているうち、
>Diksamのcompiler項になったら次のようなエラーメッセージが表示されました。

確認ですが、そちらで試されたファイルは、以下のページからダウンロードした
win_sjis.LZHまたはwin_sjis.zipのいずれかで、

http://kmaebashi.com/programmer/devlang/book/download.html

かつ、その中で、該当のエラーになったのは、diksam_book_0_1でよいですよね。

>>bison --yacc -dy diksam.y
>>diksam.y:428 13-14: $$ for the midrule at $2 of 'block' has no declared type
>>gmake: *** [y.tab..h] Error 1

428行目でエラーが出ていますが、確かに、diksam_book_0_1のcompiler\diksam.yの
428行目近辺は、以下のようになっています。

             1         2         3         4
  12345678901234567890123456789012345678901234567890 
425:block
426:        : LC
427:        {
428:            $$ = dkc_open_block();
429:        }
430:          statement_list RC
431:        {
432:            $$ = dkc_close_block($<block>2, $3);
433:        }
434:        | LC RC
435:        {
436:            Block *empty_block = dkc_open_block();
437:            $$ = dkc_close_block(empty_block, NULL);
438:        }
439:        ;

428行目の13〜14文字目は「$$」ですが、この$$は、埋め込みアクションの
ターゲットを示しています。「プログラミング言語を作る」p.206〜207で、
「以下のように書くのと同値です。」と書かれている例におけるdummy_targetです。

メッセージを見る限り、dummy_target相当のターゲットは型の宣言をしていないので、
上記のエラーが出ているようです(「ようです」というのは、当方の環境では
エラーにならずに動いているためです)。

428行目を以下のように変更して試してみていただけますでしょうか。

428:            $<block>$ = dkc_open_block();

正直、私はもうずいぶん前からここのところは$$で書いていてLinuxでもWindowsでも
動いていたはずですが、確かに、正しくは「$<block>$」と書くべきところかと
思います。
ご報告ありがとうございました。確認のうえでソースの修正および補足記事を
Webで出させていただきます。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1605] Re:Diksamのmakeでエラーとなる
返信


投稿者:(ぱ)こと管理人
2010/07/28 03:30:25

Link:http://kmaebashi.com
はじめまして。

>>bison --yacc -dy diksam.y
>>diksam.y:428 13-14: $$ for the midrule at $2 of 'block' has no declared type
>>gmake: *** [y.tab..h] Error 1

本件、おそらく正誤表の以下の件(p.206の件)だと思います。
http://kmaebashi.com/programmer/devlang/book/seigo.html#p206

当時、どのように判断したのかは正直なところあまり覚えていないのですが、
公開しているソースが修正されていないのは問題かと思います。
週末あたりをめどに確認させてください。
[ この投稿を含むスレッドを表示] [ この投稿を削除]