K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>こんにちは。初めて投稿します。 > >はじめまして。 > >>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で出させていただきます。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!