K.Maebashi's BBS

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

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

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

[1444] Re:mingw32-make
投稿者:yuya
2009/10/13 05:52:44

まず、訂正。 >cd ../dvm; $(MAKE)$ 末尾の$は不要でした。 >makeが起動しようとするコマンド行を受け付けるのが、Cmd.exeの場合に >セミコロンを解釈しない、ということでしょうか。 そういうことだろうと思います。 >正直、Makefileの中身を書き換える根性はないのですが、 パスをダブルクォーテーションで囲んでみたり、 なんとかcmd.exeの機嫌をとろうとしたのですが、 うまく行く方法が見つかりません(^^;) 蛇足ですが、cdと$(MAKE)を別行にしてしまうと、 新しいシェルが立ち上がって、cd前のディレクトリに戻ってしまい、 makeで自分と同じMakefileを読みに行って再帰無限地獄に陥いりますよね。 #ってか、MinGWユーザが全員MSYS入れてるわけでもないでしょうし、 #けっこう普遍的な問題のような気がするのですが、情報が見つかりません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1443] Re:mingw32-make
投稿者:(ぱ)こと管理人
2009/10/13 02:17:46

>> cd ../dvm; gmake; >> 指定されたパスが見つかりません。 >> gmake: *** [../dvm/dvm.o] Error 1 > >といったエラーに悩んでる人が出てきてないでしょうか。 > >MSYSだと起こらないので、今日初めて気づいたんですが、 Cygwinを入れている私の環境でもそのままでは再現しませんが、 makeが起動しようとするコマンド行を受け付けるのが、Cmd.exeの場合に セミコロンを解釈しない、ということでしょうか。実際、コマンドプロンプトから 直接入力すると、同様のエラーが出ます。 情報ありがとうございました。正直、Makefileの中身を書き換える根性はないのですが、 補足等の形で近日中にUPさせていただきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1442] mingw32-make
投稿者:yuya
2009/10/12 17:10:57

mingw32-makeを使うときの一般的な話で、CrowbarやDiksamと直接関係ないのですが……。 Makefileに cd ../dvm; $(MAKE)$ などとなっている箇所で、セミコロン以降も全部パスとみなされてしまい、 > cd ../dvm; gmake; > 指定されたパスが見つかりません。 > gmake: *** [../dvm/dvm.o] Error 1 といったエラーに悩んでる人が出てきてないでしょうか。 MSYSだと起こらないので、今日初めて気づいたんですが、 MinGWだけ入れてcmdから直接makeする人はハマる可能性があると思うのです。 余計なお世話ですけど。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1440] Re:「プログラミング言語を作る」のmycalc
投稿者:(ぱ)こと管理人
2009/09/10 03:05:28

>>・そちらのbisonのバージョンが2.1以外であれば、2.1ではどうでしょうか。 >bison2.1にするとちゃんと動くようになりました。 当方と同じ現象が起きているようですね。 >>・m4のみ別途インストールするか、Cygwinを入れてみるとどうでしょうか。 >m4のみ違うバージョンをインストールしてみましたが、だめでした。 > >bisonを空白のないパスにインストールすると、最新のバージョンでも動きました。 こちらについても、わざわざ報告いただきありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1439] Re:(初歩的な)質問
投稿者:(ぱ)こと管理人
2009/09/10 03:04:01

>gmake [Enter] > >とタイプしたのですが (中略) >というようなメッセージがでて、crowbar.exeがcrowbar_book_0_1のフォルダの中にできました。 おめでとうございます。コンパイルは成功しています。 >crowbar.exeをダブルクリックすればいいのですか?ダブルクリックしても一瞬だけ黒い画面が出るだけです。 crowbarの実行もコマンドプロンプトから行います。 コンパイルしたフォルダにtestというフォルダがあり、この中に、 test.crbというテストプログラムが入っています。 コンパイルしたフォルダから、 cd test[Enter] でtestフォルダに移動してから、 ..\crowbar test.crb[Enter] とタイプしてください。「..\」は「ひとつ上のフォルダ」を意味しますので、 これでひとつ上のフォルダのcrowbar.exeを実行することができます。 あるいは、test.crbをひとつ上のフォルダに移動してから、 コンパイルしたフォルダにて crowbar test.crb[Enter] でもよいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1438] Re:「プログラミング言語を作る」のmycalc
投稿者:wk
2009/09/09 17:08:12

ありがとうございます。 >・そちらのbisonのバージョンが2.1以外であれば、2.1ではどうでしょうか。 bison2.1にするとちゃんと動くようになりました。 >・m4のみ別途インストールするか、Cygwinを入れてみるとどうでしょうか。 m4のみ違うバージョンをインストールしてみましたが、だめでした。 bisonを空白のないパスにインストールすると、最新のバージョンでも動きました。 お忙しいところ、何度もアドバイスありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1437] (初歩的な)質問
投稿者:高校生
2009/09/09 11:58:21

プログラミングを作る の本を使ってやっているのでcrowbar_book_0_1は 「C:\Documents and Settings\s2007070\デスクトップ\win_sjis\crowbar_book_0_1」にあります。そこでコマンドプロンプトで cd C:\C:\Documents and Settings\s2007070\デスクトップ\win_sjis\crowbar_book_0_1[Enter] とタイプして C:\C:\Documents and Settings\s2007070\デスクトップ\win_sjis\crowbar_book_0_1に移動し、そこで gmake [Enter] とタイプしたのですが ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー C:\Documents and Settings\s2007070\デスクトップ\win_sjis\crowbar_book_0_1>gmake cd ./memory; gmake; gmake[1]: Entering directory `c:/Documents and Settings/s2007070/デスクトップ/wi n_sjis/crowbar_book_0_1/memory' gmake[1]: `mem.o' is up to date. gmake[1]: Leaving directory `c:/Documents and Settings/s2007070/デスクトップ/win _sjis/crowbar_book_0_1/memory' cd ./debug; gmake; gmake[1]: Entering directory `c:/Documents and Settings/s2007070/デスクトップ/wi n_sjis/crowbar_book_0_1/debug' gmake[1]: `dbg.o' is up to date. gmake[1]: Leaving directory `c:/Documents and Settings/s2007070/デスクトップ/win _sjis/crowbar_book_0_1/debug' gcc lex.yy.o y.tab.o main.o interface.o create.o execute.o eval.o string.o strin g_pool.o util.o native.o error.o error_message.o ./memory/mem.o ./debug/dbg.o -o crowbar -lm C:\Documents and Settings\s2007070\デスクトップ\win_sjis\crowbar_book_0_1> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー というようなメッセージがでて、crowbar.exeがcrowbar_book_0_1のフォルダの中にできました。 crowbar.exeをダブルクリックすればいいのですか?ダブルクリックしても一瞬だけ黒い画面が出るだけです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1436] Re:「プログラミング言語を作る」のmycalc
投稿者:(ぱ)こと管理人
2009/09/09 03:26:51

>C:\win_sjis\calc\mycalc>make.bat >> error.txt >m4: cannot open `Files\GnuWin32/share/bison': No such file or directory >m4: cannot open `C:\Program': No such file or directory >m4: cannot open `Files\GnuWin32/share/bison/m4sugar/m4sugar.m4': No such file or > directory (後略) このメッセージは見たことがあります。 以下のページの「bisonのインストール」のところで http://kmaebashi.com/programmer/devlang/book/winenv.html >ただし、私の環境では、m4でエラーが出ました。 >Cygwinのものを使おうがMSYSのものを使おうが、 bisonに付属のものを使おうが >エラーになっています。 >bison2.1は動作したので念のため置いておきます。 と書いていますが、この時に発生したエラーがこれでした。 bisonは内部的にm4を使用するのですが、「MSYSのm4は古いからbisonは動かない」という という記述がいくつかのWebページにありましたし、メッセージを見る限り、 確かにm4がエラーを出しています。ただ、その後MSYSをアンインストールして cygwinを入れなおしても状況が改善されず、bisonの入れ直しで(私のところでは)直りました。 ・そちらのbisonのバージョンが2.1以外であれば、2.1ではどうでしょうか。 ・m4のみ別途インストールするか、Cygwinを入れてみるとどうでしょうか。 はっきりした回答ができず申しわけありません。 私の環境では、bisonはC:\Program Files\GnuWin32\bin\bisonであり、 m4はcygwinのものを使用しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1435] Re:「プログラミング言語を作る」のmycalc
投稿者:wk
2009/09/08 14:43:46

ありがとうございます。 >かつ、その中で、該当のエラーになったのは、mycalc以下のmake.batでよいでしょうか? はい。 >エラーメッセージが出るようであれば、そのままこの掲示板にコピペしてください。 C:\win_sjis\calc\mycalc>make.bat >> error.txt m4: cannot open `Files\GnuWin32/share/bison': No such file or directory m4: cannot open `C:\Program': No such file or directory m4: cannot open `Files\GnuWin32/share/bison/m4sugar/m4sugar.m4': No such file or directory m4: cannot open `C:\Program': No such file or directory m4: cannot open `Files\GnuWin32/share/bison/bison.m4': No such file or directory m4: cannot open `C:\Program': No such file or directory m4: cannot open `Files\GnuWin32/share/bison/c-skel.m4': No such file or director y gcc: y.tab.c: No such file or directory mycalc.l:3:19: y.tab.h: No such file or directory mycalc.l: In function `yylex': mycalc.l:12: error: `ADD' undeclared (first use in this function) mycalc.l:12: error: (Each undeclared identifier is reported only once mycalc.l:12: error: for each function it appears in.) mycalc.l:13: error: `SUB' undeclared (first use in this function) mycalc.l:14: error: `MUL' undeclared (first use in this function) mycalc.l:15: error: `DIV' undeclared (first use in this function) mycalc.l:16: error: `CR' undeclared (first use in this function) mycalc.l:20: error: `yylval' undeclared (first use in this function) mycalc.l:21: error: `DOUBLE_LITERAL' undeclared (first use in this function) bisonをインストールした場所が悪かったのでしょうか。エラーを読んでいると、Program Filesが2つのパスに分割されているようにも思えます。環境変数のpathにC:\Program Files\GnuWin32\binを登録してコマンドプロンプトを実行しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1434] Diksamのmakeが成功しました。
投稿者:青餓鬼
2009/09/08 12:05:49

掲示板#1432に指摘されているdiksam.yのソース修正を施すと、 無事gmakeは正常終了しました。 これで先に進めます。 ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1433] Re:「プログラミング言語を作る」のmycalc
投稿者:(ぱ)こと管理人
2009/09/08 02:45:32

こんにちは。 >ソースファイルをダウンロードして、mycalcをmake.batを実行してgccで >コンパイルすると、lex.yy.cというファイルはできましたが、もう一つの >ファイルはCのファイルではなくy.outputになっています。Windows上で、 >MinGW, MSYS, bison, flexをインストールして実行しています。 >アドバイスいただけないでしょうか。 こちらも確認ですが、そちらで試されたファイルは、以下のページからダウンロード した win_sjis.LZHまたはwin_sjis.zipのいずれかで、 http://kmaebashi.com/programmer/devlang/book/download.html かつ、その中で、該当のエラーになったのは、mycalc以下のmake.batでよいでしょうか? (mycalc_exではなく) lex.yy.cができていて、y.tab.cおよびy.tab.hができていないとすると、 yacc(bison)側が何らかのエラーになっているのではないかと思うのですが、 エラーメッセージの類は出ていないでしょうか? もしmake.batをダブルクリックして実行されているのであれば(それだと仮に エラーメッセージが出ていても読めないので)、以下を参考にコマンドプロンプトから 実行してみてください。 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=1426 エラーメッセージが出るようであれば、そのままこの掲示板にコピペしてください。 よろしくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1432] Re:Diksamのmakeでエラーとなる
投稿者:(ぱ)こと管理人
2009/09/08 02:15:10

>こんにちは。初めて投稿します。 はじめまして。 >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で出させていただきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1431] 「プログラミング言語を作る」のmycalc
投稿者:wk
2009/09/07 17:17:55

ソースファイルをダウンロードして、mycalcをmake.batを実行してgccでコンパイルすると、lex.yy.cというファイルはできましたが、もう一つのファイルはCのファイルではなくy.outputになっています。Windows上で、MinGW, MSYS, bison, flexをインストールして実行しています。アドバイスいただけないでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1430] Diksamのmakeでエラーとなる
投稿者:青餓鬼
2009/09/07 16:37:15

こんにちは。初めて投稿します。 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の文法は自信がないので、エラーの内容について御教授ください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1429] Re:test/if.dkmエラー
投稿者:(ぱ)こと管理人
2009/09/05 18:14:02

>[mugenkai@love] % diksam if.dkm >if.dkm: 8:変数名bが重複しています。 これですね。 int a = 10; if (a > 5) { int b = 20; println("<1>b.." + b); } else { int b = 30; println("<2>b.." + b); } わかりにくい仕様ですが、これで「変数名bが重複しています。」エラーになるのは 現状のDiksamでは仕様です。 言語仕様の「ローカル変数」のところで、以下のように書いています。 http://kmaebashi.com/programmer/devlang/dls_0_4_01.html >関数内で宣言された変数はローカル変数(local variable) となる。 >ローカル変数のスコープは、以下の両方の条件を満たす範囲である >(現状で、グローバル変数のスコープは、ブロックの影響を受けない)。 ここでのbは関数内で宣言された変数ではないので、グローバル変数です。 グローバル変数のスコープはブロックの影響を受けないので、ifのブロック内であっても 二重に宣言することはできません。 # 仕様書に書けばバグも仕様に変わる、レベルの話かもしれませんが。 testフォルダにif.dkmが入っているのは、エラーになることを確認した残骸では ないかと思います…… まぎらわしくてすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1428] test/if.dkmエラー
投稿者:つんつん
2009/09/04 21:50:47

[mugenkai@love] % diksam if.dkm if.dkm: 8:変数名bが重複しています。 [mugenkai@love] % [/Users/mugenkai/Desktop/diksam_utf8/main/test] main/testフォルダのif.dkmが実行出来ません。 環境:MacOSX10.3.9
[この投稿を含むスレッドを表示] [この投稿を削除]
[1427] Re:(初歩的な)質問
投稿者:(ぱ)こと管理人
2009/09/02 22:33:18

こんにちは。 >mingw32-make.exeというファイル名を gmakeという名前にコピーしたのですが >それをどうすればいいのか分かりません。gmakeをダブルクリックしたのですが >[No such file or directory]と表示され,いくつかファイルが作られるだけです。 「gmakeをダブルクリック」しているところからして、コマンドプロンプトを お使いになったことがないのでは、と想像しています。 crowbarやDiksamは、コンパイルするのも実行するのもコマンドプロンプトから 行うことをを想定しています。 WindowsXPやVistaであれば、スタートメニューから  プログラム → アクセサリ → コマンドプロンプト で、コマンドプロンプトが表示されるはずです。 たとえば、crowbarの圧縮ファイル「crowbar_0_4_02_win.LZH」を C:\直下で展開したのであれば、「C:\crowbar_win」というフォルダができていると 思います。 コマンドプロンプトで cd C:\crowbar_win [Enter] とタイプして C:\crowbar_win に移動し、そこで gmake [Enter] とタイプすることで、crowbarがコンパイルされるはずです。 実行するときも、コマンドプロンプトから、 crowbar xxx.crb のようにタイプして実行します。 コマンドプロンプトの詳細は、たとえば以下のようなページが参考になると思います。 http://ykr414.com/dos/index.html 疑問点があれば遠慮なく書き込んでください。 なお、コマンドプロンプトでエラーが出た場合、それをここに書き込むのであれば かならずエラーメッセージをcopy&pasteしてください(正確なメッセージを知るため です。「エラーが出ました」だけでは何のエラーだかわかりません)。 コマンドプロンプト上のテキストをコピーする際は、コマンドプロンプトの タイトルバーで右クリックし、「範囲指定」→マウスで領域選択→「コピー」で 可能です。 # そのうち「Diksamではじめる12才からのゲームプログラミング」なんてのを # 書いてみたいと思っているのですが、コマンドプロンプトやフォルダ構造のところで # 若い人とはずいぶんギャップがありそうだ、とまさに思っていたところでした…… # とはいえWindowsをちゃんと使うなら、「コマンドプロンプトやフォルダ構造」は # 避けて通れないと思うんですがねえ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1426] (初歩的な)質問
投稿者:高校生
2009/09/02 11:47:36

crowbarが実行できないのですが Cコンパイラもcygwinもbisonもflexもいれました。電卓(mycalc)は実行形式ができるのですがcrowbarやDiksamは実行形式ができません。 mingw32-make.exeというファイル名を gmakeという名前にコピーしたのですがそれをどうすればいいのか分かりません。gmakeをダブルクリックしたのですが[No such file or directory]と表示され,いくつかファイルが作られるだけです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1425] Re:デバックシステム一応完成
投稿者:(ぱ)こと管理人
2009/08/16 21:38:16

>Diksam 2.0 より流用改変したソースはコンパイルラ部分のみで123K、 >全体の22%。その中はクラス化や、言語仕様の違いで全関数修正している >ため。元の6割ぐらいしか原型が残っていないと思います。VMについては、 >新たに書いているので基本アルゴリズムが同じで、中身は違ったものになっ >ています。 そういえばVMは新規と言う話は以前書いておられたと思うのですけれど、 バイトコードが基本的に同一らしいので、VMも流用かと思い込んでしまいました。 コンパイラをgenerate.cまで含めて流用していれば、そりゃバイトコードは 似たようなものになりますね。 > ソースの件ですが、正式にフリー公開時点でソース公開も考えています。 >現時点ではまだちょっとです。(ぱ)さん以外非公開を条件にVMのソース送り >ましょうか? 了解です。DiksamはGPLとかではないので、現時点では公開されないという 方針でしたらそれでよいかと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1423] Re:デバックシステム一応完成
投稿者:
2009/08/14 21:22:27

つ、追記。 いや、ソフトを使って行数カウントしてみた。全体で17,657行ありました。それだけ^^;
[この投稿を含むスレッドを表示] [この投稿を削除]
[1422] Re:デバックシステム一応完成
投稿者:
2009/08/14 19:19:24

>山さんのVMがDVMとどれぐらい違うのだろうと思ってダウンロードしてみましたが、 >VM部分のソースはないのでしょうか……  どれぐらい違うのかソースファイルのサイズで定量的に計ってみました。 ・システム管理部分  115K(ソースファイルの合計) ・コンパイラ     150K ・VM         73K ・共用        45K ・組込み関数     34K ・ヘッダーファイル  140K (クラスやテンプレートでヘッダーファイルが大きくなるのはC++の宿命ですね)         合計 557K  プログラムの行数的にはコメント含み1万数千行ほどあります。 Diksam 2.0 より流用改変したソースはコンパイルラ部分のみで123K、 全体の22%。その中はクラス化や、言語仕様の違いで全関数修正している ため。元の6割ぐらいしか原型が残っていないと思います。VMについては、 新たに書いているので基本アルゴリズムが同じで、中身は違ったものになっ ています。  VMは最小になるように作られているので、73K 全体の13%です。ソース の60%は新しく作りこんだ仕様のためでした。内容はマルチVMのシステム・ 言語的にスレッドセーフな仕組み・コンパイルとVM間の協調動作管理、等々です。  私が言ってはいけないのかもしれませんが、結構複雑なシステムになってます。 難しいのもまた楽しくもあります。  ソースの件ですが、正式にフリー公開時点でソース公開も考えています。 現時点ではまだちょっとです。(ぱ)さん以外非公開を条件にVMのソース送り ましょうか?  VMは1つのクラスで、そのクラスのオブジェクトを1つ作ったら、それが1つの VMスレッドになり、VM機能を詰め込んだ、あまりクラスらしくないクラスです。 だから、メモリーがあるだけマルチでVMスレッドを自由に実行できます。  ちなみにコンパイラも見た目は1クラス(内部でいくつかのクラスを使用)で、 機能的にきれいに分離されています。ただその分システム管理で全体の協調 動作制御が必要です。 >あと、フォルダ名の「editer」は固有名詞でしょうか? いえ、LIZA.iniファイルで自由に変えられます。  先のことですが、ライザ言語はC言語のシンタックスにとても似ているので、 ライザ言語をC++のソースにコンパイルすることは簡単です。完成した後、 暇だったらシステムをライブラリー化して、コンパイルしたC++ソースとリンクし、 ネイティブな実行形式作成をやってみたいですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1421] Re:デバックシステム一応完成
投稿者:(ぱ)こと管理人
2009/08/14 00:24:29

>http://ux.getuploader.com/yamamoto/download/3/debug.zip 山さんのVMがDVMとどれぐらい違うのだろうと思ってダウンロードしてみましたが、 VM部分のソースはないのでしょうか…… あと、フォルダ名の「editer」は固有名詞でしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1420] Re:デバックシステム一応完成
投稿者:
2009/08/13 19:38:47

 速いPCでも問題が…、日ごろノートPCで開発しているのですが。 久しぶりにディスクトップでやったら。  デュアルPC以上だと、本体のスピードが早すぎてモニターの処理が 追いつかないです。 約1秒に1000行ぐらいの情報を送っています。  UDP送信後 sleep(0)のウェイトをかけているのですが、シングルCPU だと、それなりに時間がかかるのですが、デュアル以上だと多少のウェイト だけで、高速にUDP送信をしていました。さすがに受けきれない結果に なります。t016.lzp t17.lzp でモニターが動作異常になります。デバック モニターがロックしたような状態、UDP受信例外、等々が発生します。  モニター側で、過負荷のときの処理を追加すべきでした。 そんな訳で、こんなデバックシステムが出来ましたよ程度としてみてください。  その他、ディスアセンブラの行情報異常や、システム変数配列処理ミス、 変数のコンフリクト問題、等々その後見つかった問題も対策終了しています。  見つかったバグのほとんどは、以前は無かったのですが、各種修正と機能 追加で新たにバグを作りこんだようです… 良くあることです orz
[この投稿を含むスレッドを表示] [この投稿を削除]
[1416] Re:デバックシステム一応完成
投稿者:
2009/08/12 18:01:54

 別のPCで実行したところ、MSVCXXXX.DLLが必要でした。 ↓にDLLを添付したファイルをUPしました。申し訳ありません。 http://ux.getuploader.com/yamamoto/download/3/debug.zip  また、add_stringのバイトコードでたまーに、システム変数が コンフリクトを起こす現象を発見しています。  あと、遅いPCでは、UDP通信が大幅に抜ける場合があります。 デバック用に最小時間を指定しているので、遅いPCでは大量の 送信データを受けきれないです。送信後のウェイトを長くすれば 問題ないのですが、デバックターンが長くなるのでこのままに しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1415] デバックシステム一応完成
投稿者:
2009/08/11 19:20:41

 プログラムのブレーク、ステップ処理等を除き一応の完成、ブレーク等は アプリケーションのGUIが出来上がらないとボタンが無いので。その他にも いろいろ修正をしました。  ・言語の内部コードをSJISからワイド文字wchat_tに変更。  ・動的コンパイラの組込み。  ・コンパイルエラーのモニター連携  ・VM実行時エラーのモニター連携  ・デバックシステムの組込み(第1段階終了、全体の80%以上は終わったかな)  ・コンパイラのpool導入による高速メモリー確保と一括開放。  ・VMも一部Pool化。  ・VMの言語関数起動の最適化と高速化。  ・ライザ付属エディターの組込み。  ・LIZA.iniファイルによる初期化設定を組込み  等々いろいろ修正しました。特にデバッグシステムの組み込みは大きかった。 もう、文字で示すのも画像で示すのも困難と思うので。↓にUPしています。 http://ux.getuploader.com/yamamoto/download/2/debug.zip もしお暇がありましたら試してみて、何かありましたらよろしくお願いします。 まだ本体はCUIで出来ています。多分バグだらけです。  手順は、ライザデバックモニタ「LZ_moniter1_001.exe」を実行して、本体の 「lz002.exe」を実行するとデフォルトの「start.lzp」を実行します。以前出した タイマプログラムです。  2つともローカルでUDP通信をしているので、通信許可でお願いします。 初期起動時は、UDP通信がごっそり抜ける時があるので、本体は2回以上起動して みたほうがいいかもしれません。時々モニターのログが抜ける時があります  本体はデバックモードのままなのでEXEも大きく、動作はとても遅いです。 大量のデバックトレースをモニターに送っているので。  また、XXX.lzpの起動をlz002.exeに起動リンクすれば、その他のプログラムは、 ダブルクリックで直接実行できます。そこに入っているXXX.lzpは総て動きます。 ただ、修正するとこける可能性が高いです。試作以前の段階なので。  デバックの組込みで以下の言語仕様が追加されました。 ただ、まだほとんど機能しません。本体のGUIを作る時でないと2度手間に なってしまうので。  次からはようやくアプリケーションの本体です。ああ~~長かった~ 次も長いんだろうな //-- デバック行コントロール ------------- #define DBL        // デバック行有効 //#define DBL       /-/ // デバック行のコメント化 //-- デバック関係関数 ----------------------- #define 一時停止    debug_break //-- デバックログ関係関数 ------------------- #define ファイル表示  debug_file_disp // モニタにファイル表示 #define トレースログ  debug_trace_log // トレースログに表示 #define システムログ  debug_system_log // sysログに表示 #define ログ1      debug_log1 // ログ1に表示 #define ログ2設定    debug_log2_set // ログ2にタブ追加設定 #define ログ2      debug_log2 // ログ2に表示 #define ログsys変数   debug_sysval // ログするシステム変数の登録 #define クリア     "クリア" // ログするシステム変数のクリア //-- デバックモニタ制御関数 ------------------- #define デバックモニタ制御 debug_monitor_control #define 変数ログクリア   1 // モニタ02の変数ログクリア #define 全ログクリア    2 // モニタ01全ログクリア #define トレースログクリア 3 // トレースログクリア #define sysログクリア    4 // sysログクリア #define ログ1クリア     5 // デバックログ1クリア #define ログ2クリア     6 // デバックログ2クリア //-- ログ出力制御用システム変数 --------------- #define 全ログSW      SLI001 // 全てのログ0:停止1:開始 #define トレースログSW   SLI002 // トレースログSW #define システムログSW   SLI003 // #define ログ1SW       SLI004 // #define ログ2SW       SLI005 // #define ローカル変数ログSW SLI006 // #define システム変数ログSW SLI007 // //-- 組込み関数宣言 -------------------- DBL int 一時停止()     // 戻り=0 DBL int デバックモニタ制御(int type); // 戻り=0 DBL int ファイル表示(string fname); // 戻り=0 DBL int システムログ(string str); // 戻り=0 DBL int トレースログ(string str); // 戻り=0 DBL int ログ1(string str); // 戻り=0 DBL int ログ2設定(string tag_name); // 戻り=log2id DBL int ログ2(int log2id,string str); // 戻り=0 DBL int ログsys変数(string str); // 戻り=0 //--------------------------------------
[この投稿を含むスレッドを表示] [この投稿を削除]
[1412] Re:「プログラミング言語を作る」について
投稿者:名無しの読者
2009/07/27 20:28:42

>この週末は、土曜の夜からなんだかまぶたが腫れ上がってましてほとんど寝てました >(医者には行って薬ももらいましたが、原因は不明です)。 >反応が遅れましてすみません。 いえいえ、十分反応は早いですよ。 最近の投稿の時間を見ると夜中の3時前後・・・。 余計なことかもしれませんが、あまり無理をなさらずに。 ご自愛ください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1411] Re:「プログラミング言語を作る」について
投稿者:(ぱ)こと管理人
2009/07/27 03:09:48

この週末は、土曜の夜からなんだかまぶたが腫れ上がってましてほとんど寝てました (医者には行って薬ももらいましたが、原因は不明です)。 反応が遅れましてすみません。 >プログラミング言語を作るをもう一度読んでいて2つミスプリントを見つけました。 > >p106 3-3-3「解析木の構築---corwbar.yとcreate.c」の第5パラグラフに >「アクションにて、crb_crete_binary_expression()」とありますが、 >「アクションにて、crb_create_binary_expression()」だと思います。 > >p189 補足「別のあるべき姿---Code Set Independent」の最後から3つめのパラグラフに >「それに対し、CSIだと(N-1)必要になります。」とありますが、 >これではUnicodeに正規化する方法よりエンコーディングを変換するコンバーターが少なくなってしまいます。 >(N-1)はN(N-1)の間違いでしょうか? たびたびすみません。ご指摘ありがとうございます。 正誤表に追加しました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1410] Re:「プログラミング言語を作る」について
投稿者:名無しの読者
2009/07/26 21:09:33

プログラミング言語を作るをもう一度読んでいて2つミスプリントを見つけました。 p106 3-3-3「解析木の構築---corwbar.yとcreate.c」の第5パラグラフに 「アクションにて、crb_crete_binary_expression()」とありますが、 「アクションにて、crb_create_binary_expression()」だと思います。 p189 補足「別のあるべき姿---Code Set Independent」の最後から3つめのパラグラフに 「それに対し、CSIだと(N-1)必要になります。」とありますが、 これではUnicodeに正規化する方法よりエンコーディングを変換するコンバーターが少なくなってしまいます。 (N-1)はN(N-1)の間違いでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1409] Re:「プログラミング言語を作る」について
投稿者:(ぱ)こと管理人
2009/07/23 02:11:11

>>確かにPerlのlocalはダイナミックスコープですから、CやJavaのローカル変数とは >>挙動が異なります。とはいえグローバル変数とも明確に違うものだと思います。 >確かにその通りのようです。 一応、「プログラミング言語を作る」では、p.153にて、本当にちょっとだけ ダイナミックスコープの説明をしています。お気づきかもしれませんが念のため 補足します。 今読み返すと、ここでのCRB_LocalEnvironment構造体のnextメンバが何を 指しているのかわかりにくいような気がします…… ここでのnextは、 呼び出し元のCRB_LocalEnvironment構造体を指しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1408] Re:マルチスレッドについて
投稿者:(ぱ)こと管理人
2009/07/23 02:05:08

ひとまずここだけ。 > Windowsのメッセージシステム…、あれは同期非同期以前のシーケンシャル >処理システムなんです。1スレッドでメッセージ取り出しループ処理して、メッセー >ジを受け取り、そのメッセージに対応する関数を呼んでいるだけで、並列処理は >していないです。 Windowsのメッセージシステムが並列でないのは当然ですけど、 ブラウザであれば、コンテンツの取得の方を別スレッドで回せるはずですよね。 IEがどうなっているかは知りませんが、いまどきのアプリですから当然そうなって いるのではないでしょうか。 でも、コンテンツ取得スレッドがネットワークの待ちでブロックされていたり、 ActiveXコンポーネントが動作中だったりすると、結局×ボタンで止められない ような感じがしています。まあいろいろ難しいよね、という程度の意味です。
[この投稿を含むスレッドを表示] [この投稿を削除]