『コンパイラ・スクリプトエンジン』 相談室 2 at TECH
[2ch|▼Menu]
[前50を表示]
400:デフォルトの名無しさん
03/01/23 00:33
400getしたわけですが、
キリ番getするための良い入門書はありますか?

401:デフォルトの名無しさん
03/01/23 02:15
>>400
お前が書け。


402:デフォルトの名無しさん
03/01/23 18:55
bison/flexをVC++でMFCと併用していますが、どうもパーサ走らせると終了時に
メモリリーク起こします。ダンプされたのを見てると、どうもyytextの中身っぽい
文字列が…。これってflexの仕様でつか?
>>191の言ってるスレッドセーフ云々っていうのも気になりますた・・・

403:山崎渉
03/01/23 20:01
(^^)

404:デフォルトの名無しさん
03/01/25 00:08
Programming Language Processors in Java: Compilers and Interpreters
URLリンク(www.amazon.com)
この本読んだ人はいますか?いたら感想聞かせてください。

405:デフォルトの名無しさん
03/01/31 23:19
最適化するのにポインタって邪魔ですか?

406:デフォルトの名無しさん
03/02/01 00:58
>>405
ポインタというか aliasing が邪魔。

407:デフォルトの名無しさん
03/02/01 08:47
>>404
amazon のレビューを見る限り、非常に好意的だけど何か不満な点でも?

日本人で実際に読んだ人に背中を押してほしいと言うことですか?

408:デフォルトの名無しさん
03/02/02 01:30
>405
なんの最適化か知らないけど、追跡がしにくい。
実装する側の思考をすればわかると思うけど。
アドレスの同一判定までしてるコンパイラってあるのかな。

409:デフォルトの名無しさん
03/02/09 01:08
>408
一応、解析して指されている対象を絞り込む技法はあります。
解析コストと精度でトレードオフはありますが。

実行時のアドレスの同一性を考えるのではなく、
あるポインタ型変数についてその変数に代入するように
プログラム上でメモリ割り当てた部分の集合を計算します。
なるたけ集合が小さく絞れれば精度が高いと考えます。
解析に当たっては各手法の間で
関数呼び出しをまたいでの解析をするかしないか、
関数(メソッド)内のコントロール/データ・フローにどこまで配慮するか、
オブジェクト指向言語でメソッドの呼び出しの際のオブジェクトに配慮するか、
などの様々なオプションがあります。

こうやって得られたPoints-toグラフは関数(メソッド)やスレッドなどからの
Escapeを調べたりするのに使えます。

興味のある方はPoints-to analysisとかAlias analysisというキーワードで
ググって見てください。

410:デフォルトの名無しさん
03/02/11 08:25
Lex and YACC primer/HOWTO
URLリンク(www.linux.or.jp)
訳されている。


411:デフォルトの名無しさん
03/02/16 18:41
lex/yaccの初心者です。
lex/yacc使用してInterpreterパターンで計算機を作ろうと思ったんですが、コンパイルすらできません。
lexファイル内のcaseが不正だとか言ってきます。(他にもエラーがでてきますが…)
どこが間違ってるのでしょうか?ちなみに"Expression.h"に間違いはないはずなので省略しています。
=========================[calc_lex.l]
%{
#include "Expression.h"
#include "calc_yacc.cpp.h"
%}
%%
([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?){
  yylval.exp=new Number(atof(yytext));
  return NUMBER;};
[ \t] ;
.  {return yytext[0];};
%%


412:411
03/02/16 18:42
続き
==========================[calc_yacc.y]
%{
#include "Expression.h"
%}
%union{
  Expression* exp;
}
%token <exp> NUMBER
%left '-' '+'
%type <exp> expression
%%
statement:
  expression {printf("= %g\n", $1->Evaluate());};
expression:
  expression '+' expression {$$=new MathExp($1, $3, MathExp::ADD);}
  | NUMBER  {$$=$1;};
%%
main(){yyparse();}

413:デフォルトの名無しさん
03/02/22 14:17
再帰下降構文解析で実験的にコンパイラを作っているのですが、
関数のオーバーロードの実現方法がわかりません。
引数だけのオーバーロードなら、再帰下降の各関数が返す関数呼出しノードがひとつに絞れそうな気もするのですが
返り値もオーバーロード可能にしようとすると、もうどうやっていいものか。
何かいい方法はありませんか?

考えている仕様:
int A();
string A();
void B(int);
があって B(A) としたら上のほうの Aが呼ばれるようにしたい。
もうひとつvoid B(string); があれば曖昧エラーを出す。

414:デフォルトの名無しさん
03/02/22 14:37
>>413
それは無理じゃないの? だってさ、
void B(int);
void B(string);
の2つが定義されたらどうするの? つまりマッチングをどっちで取るの?




415:デフォルトの名無しさん
03/02/22 14:43
>>414
413の最後の行に書きましたように、曖昧エラーを出したいと思います。
勿論実用的には、解決を行えるように、明示的に型を指定する構文が必要になるでしょうが…。

他の言語でも、F(int, double)とF(double, int)があったときにF(1,1)なんて呼ぶと曖昧エラーになるので
返り値でも曖昧エラーを出すことは多分許容範囲内だろう、と。

416:デフォルトの名無しさん
03/02/22 14:55
追記。Adaでも可能なので、無理ってことは無い筈です。

417:414
03/02/23 08:29
スマン 俺が間違ってた。
 再帰下降という事は、
  代入する変数の型
  関数の型
  先行演算子の型
 が先に判るわけだから、それをグローバルにとってスタック上に保存しながら使ったら?

 

418:413
03/02/23 16:27
>>417
ありがとう。ええと、それですと

void A(int);
void A(string);

int B(int);
string B(string);
bool B(bool);

A(B("XXX"));

で、Aの時点で、期待する型はintとstring
 Bに入ったら、boolでは無いことがわかる。しかしintとstringのどちらかは区別が付かない
 ということで両方を候補に入れ、Bもやはりintとstringを期待して、
  で定数の解析に入ったら、定数はstring
 Bに戻って、B(string)が選ばれたことが確定
Aに戻って、A(string)が選ばれたことが確定

こんなイメージ…ですよね?合ってます?

419:414
03/02/23 16:50
>>418
それは実装上厳しいんじゃない?
Aの引数を解釈してる時に、Bが出た時点で、曖昧にした方がいいと思うけどなあ

420:デフォルトの名無しさん
03/02/23 19:25
>419
え、特に問題なさそうだけど?
>Aの引数を解釈してる時に、Bが出た時点で、曖昧にした方がいいと思うけどなあ
なんでそう思ったの?


421:413
03/02/23 19:44
まず一旦、型を特定しない構文木を作ることにしました。理由は、

string* A();
int* A();

*(A()) = 10;

再帰下降だと、A()を解析している時、その後代入されるのが整数なのか文字列なのか、
それ以前にそもそも代入されるのかどうかもわからないため。
(代入もされず値としても使われないなら曖昧エラー出さないといけませんし)

取り敢えず構文木を作るとこまで書きました。これから>>418の実装に挑戦します。
もっと手っ取り早い方法があればいいのですけれど。

422:デフォルトの名無しさん
03/02/24 18:11
スレ違いな質問かもしれないのですが、スクリプト言語のインタープリターを作ってみたいのですが、これを作るには、
コンパイラーの勉強が役に立つのでしょうか?

なにからやればいいのかさっぱり分からないので、なにか指針でもアドバイスお願いします。

423:422
03/02/24 18:27
>>175 さんが同じような質問をしてた。
Perl や PHP のような大規模な言語ではないのだけど、コンパイラに関する資料が役に立つみたいですね。
まぁ、またーりとがんばってみます。

424:デフォルトの名無しさん
03/02/25 19:03
「UNIXプログラミング環境」で (lex + yacc を使った) 簡単な言語処理系の
作り方が紹介されてますよ。コードも web 上にありました。


425:ろうひ男爵
03/02/27 17:55
>>422
どの程度のことがやりたいんですか?

バッチファイルみたいな物
ワープロなどの実用ソフトのスクリプト言語
ADVなどのシナリオスクリプト
ゲームの敵移動ルーチンのスクリプト

426:413
03/02/27 20:45
一応書いておくか…>>421は無理でした。
代入の右辺と左辺のどちらを先に解釈するかという問題が残ります。
(421の例で右辺もoverloadされた関数呼び出しだったら、どちらを先に解釈することもできない)

マジにやろうとすれば、後は、可能性を全部列挙してマッチングを行うぐらいしか無いかも。
Adaコンパイラのソースが見たい…(gccのAdaならもしかして見える?)

まあ、自分のやりたかった範囲ではできたので、わたくし的にはOKなのですが。
元々は配列のCopy On Writeをオーバーロードで解決したかったので。

*(A(1)) = 10; // int * A(int); が呼ばれ、メモリ領域を複製する
B = *(A(1)); // int const * A(int); が呼ばれ、複製はしない

427:422
03/02/28 11:16
>>425
> ワープロなどの実用ソフトのスクリプト言語
たぶんこのあたりかと。

マクロ記述言語の部分だけを取り出して、シェルスクリプトみたいに、
インタラクティブに遊んでみたいなぁーと思って。

実用ソフトのスクリプト言語といっても、emacs lisp や VBA みたいに大掛かりなものでもありません。
1000行くらいで言語全体を一通り説明できてしまうくらいの小規模な言語です。

というか、その前にCを勉強しないと、どうしようもないみたいですね。

428:ろうひ男爵
03/03/01 20:23
>>427
C言語でなくても書けることは書けますが、
再帰が出来る言語の方がらくですよ〜。
(全部配列でやると大変です)

昔のBASIC見たいに、
変数を宣言無し、
関数を無くしてサブルーチンのみ、
PRINTなどの実行命令は、随時追加していく、
ブロック化の為(制御命令)には、
IF-ELSEIF-ELSE-END
WHILE-BREAK-END
SWITCH-CASE-BREAK-DEFAULT-END
{}は使わない

等のシンプルな言語なら、ベタで組んでも
1000どころか200行ぐらいで出来ますよ〜。

429:デフォルトの名無しさん
03/03/02 14:53
ろうひ男爵さんはもしかして大学教員ですか?
初心者の質問に丁寧に答えて下さっていますが。

430:デフォルトの名無しさん
03/03/02 17:55
札幌市立中央図書館からドラゴンブック借りてきたので age

431:札幌市立中央図書館職員
03/03/02 17:58
>430
ちゃんと返せよ

432:デフォルトの名無しさん
03/03/02 18:00
>430
書き込みとかすんなよ。

433:デフォルトの名無しさん
03/03/02 20:07
ああ北海道いきてえ

434:デフォルトの名無しさん
03/03/03 01:15
>>429
いえ、単なるプログラマーの会社員です。
そういっていただけると嬉しいですが、
自分程度の知識だと、このスレの強者にはかなわないっす。


>>430
2〜3週間は借りることになるのでは?
自分は風呂場で1回読むのに2ヶ月かかりました。
がんばって読破してくださいね〜。

435:430
03/03/03 04:10
>>431
はい。期日までにちゃんと返します。

>>432
はい。綺麗な本なので、汚さないように気をつけます。

>>433
ぜひお越しください。

>>434
2週間の期間では、ちょっと読破できそうにないかも。
連続で借りることも出来るけれど、それをするくらいなら
自分で買う主義です。まだ、買うかどうかはわからんけど。
とにかく、勉強します。

436:デフォルトの名無しさん
03/03/03 11:02
>>434
借りた本を風呂で読んではいけません。


437:ろうひ男爵=434
03/03/03 21:58
>>436
こりゃ失礼。
自分は自腹で買いましたよ〜。
昔、X68000の本とかでほしいときには無くなってたことが多々あったので必ず買ってます。
最近は、トッパンの本を買いあさりました。

438:デフォルトの名無しさん
03/03/03 22:03
いいかげんsageを覚えてくれ。>ろうひ男爵その他
それとさ、ここあんたらの日記サイトじゃないんだから、
あんま関係ない話振るのもやめてくれ。

439:デフォルトの名無しさん
03/03/03 22:04
自治厨見参記念age

440:デフォルトの名無しさん
03/03/03 22:05
独り言は夢・独り言板でどうぞ。
URLリンク(life.2ch.net)

441:デフォルトの名無しさん
03/03/03 22:08
FORTHって作りが簡単だそうですが、どれぐらい小さく作れますか?
参考になりそうな比較的小さい処理系ってありませんか?

442:デフォルトの名無しさん
03/03/03 22:14
あれ、forthスレってなかったっけ?

443:デフォルトの名無しさん
03/03/04 00:37
>>441
昔アセンブラで作ったときはたしかコア部分は30バイトくらいだった。
もちろんそれ以外にprimitiveが必要だけど。

444:ろうひ男爵
03/03/04 01:24
>>438
すまんのう。
外で書いて他のでsage忘れました。

445:デフォルトの名無しさん
03/03/06 18:24
forthって暗黙の操作みたいなのが多いから、
一目ソース見ただけでは何してるのかわかんないと思うけど、
どうよ?

446:デフォルトの名無しさん
03/03/06 20:45
慣れると会館なのかも試練
とりあえず、手続きの構造化というのを初めて知ったのはForthだった。
今でもかなり小さな関数に分けてしまう。

447:デフォルトの名無しさん
03/03/07 11:37
>>445
CLikeScript -> ForceWord コンパイラとか



448:デフォルトの名無しさん
03/03/09 23:12
rubyみたいなスクリプト言語で、非オブジェクト指向なやつって
ありますか???


449:デフォルトの名無しさん
03/03/09 23:21
>>448
Perl

450:デフォルトの名無しさん
03/03/09 23:23
Luaとかは?
マイナーだけど、コンパクトだから読むにはいいかも。

451:デフォルトの名無しさん
03/03/09 23:54
lua って癖が強くないですか???


452:デフォルトの名無しさん
03/03/09 23:57
>>448
bash,csh とかは?
Ruby みたいかどうかは知らないけど、、、

453:デフォルトの名無しさん
03/03/09 23:57
あと、開発が止まってますか?
なんか新しいのが無い???


454:デフォルトの名無しさん
03/03/09 23:58
>>449

ruby参照してるんだから、真珠は無いだろう〜(w


455:デフォルトの名無しさん
03/03/10 00:20
LuaはPubyやPerlより癖がないと思うけど。
つか言語仕様が小さい。アプリ組み込み向けだし。

開発は・・・使うためでなく読むためなら別にどうでもよい(藁

456:デフォルトの名無しさん
03/03/10 00:43
luaって有名なのかなぁ?
なんか、時々(ほんの)聞くけど。。。


457:デフォルトの名無しさん
03/03/10 00:57
亜種亜流を含めて 4000 以上プログラミング言語があるらしいけど、
メジャーな言語なんてほんの一握りだからねえ。

458:デフォルトの名無しさん
03/03/10 01:00
そんなにあるの〜、ビツクリ!

漏れも作ろうかなぁ。。。Uma


459:デフォルトの名無しさん
03/03/10 01:01
組み込みならluaみたいなの採用するよりはlisp系にするけど。

460:デフォルトの名無しさん
03/03/10 01:29
最近sourceforgeのgameカテゴリとかlinux game tomeとか眺めてるんですが
内部でluaやpythonを使ってるのをちょくちょく見かけます。schemeもあったな。

ちょっと前だと例えばQuake(初代)では速度の要求される3Dエンジン部分をC/ASMで、
キャラ固有動作とかダメージ計算とかのゲーム/シナリオ部分をC-likeな独自言語でやってたわけですが、
そういう局面で既存のスクリプト言語がつかわれってるぽい。

461:デフォルトの名無しさん
03/03/10 08:56
ruby最高!

462:デフォルトの名無しさん
03/03/10 14:10
>>461
どこがどのように?


463:デフォルトの名無しさん
03/03/10 15:26
あまり組み込み向けにはお勧めでないところ

464:デフォルトの名無しさん
03/03/11 01:18
>>462
日本発だから!

465:デフォルトの名無しさん
03/03/11 08:48
C++並に仕様がでかくなると、yacc の y.output 見て error を全て潰す(yaccの
エラーメッセージがでないようにする) のが大変だ。

466:デフォルトの名無しさん
03/03/13 23:21
新しいスクリプト言語を作りたいんだけど。。。

これって大変ですか?



467:デフォルトの名無しさん
03/03/13 23:28
>>466
> これって大変ですか?
最初からそんな感想を抱いているようでは、新言語を作るのは無理だと思われ。

468:デフォルトの名無しさん
03/03/13 23:42
言語処理系は作るだけなら、実は大して難しくない。
式の展開さえ出来れば、あとは出来たも同然。

問題は「使える」言語にしようと思うと、ライブラリの整備が
大変な事。

469:デフォルトの名無しさん
03/03/13 23:56
>>468

なるほど、参考になった。
rubyなども、結局はライブラリが揃ってるから使われるんだよねぇ。。。


470:デフォルトの名無しさん
03/03/14 08:46
ライブラリ整備が面倒なら、
COMコントロール使えるようにしとけば VBAのコントロールそのまま使えるから楽だよ。

あるいは、ゲーム用ならHSPのDLLを使えるようにしとくとか

471:デフォルトの名無しさん
03/03/14 10:54
>rubyなども、結局はライブラリが揃ってるから使われるんだよねぇ
rubyは美しすぎる言語仕様(少なくとも日本人の感性からすれば)が大きいと思う。

472:デフォルトの名無しさん
03/03/14 11:16
それは信じない(w

比較相手がPerlなら同意だが

473:デフォルトの名無しさん
03/03/14 11:24
>>472
ネタニマジレスカコワルイ

474:デフォルトの名無しさん
03/03/14 11:41
bisonが出力した y.tab.c を g++ でコンパイルすると パースエラーが出るんですが
回避方法はないのでしょうか?

VCではコンパイルできるのですが( ファイル名は y.tab.cpp に替えてコンパイル)。

475:デフォルトの名無しさん
03/03/14 11:50
どういうエラーだよ。

476:デフォルトの名無しさん
03/03/14 12:58
>>469
rubyは愛国精神からよく使われるのです

477:デフォルトの名無しさん
03/03/14 13:21
>>476
確かに、rubyの場合、
「まつもと?ふーん日本人がやってるんだ。ちょっといじってみよかな。」
と思って始めたっての、俺の場合はあるよ。

で、逆に思ったんだけど、アメリカ(のようなコンピュータ大国の)人が、
「ふんふんよさそう。ん?なんか変な名前の作者だな。
おぃ{スカンジナビア製,インド製,日本製,韓国製,中国製...}かよっ!」
とか感じてやめちゃうことってあるのかな?それとも多民族国家だから
そんなの全然キニシナイ!のかな?

478:デフォルトの名無しさん
03/03/14 13:55
日本製は、自動車やソニー等のこともあって、
他の国の製品とは若干扱いが違う。
それに助けられているかも。

479:デフォルトの名無しさん
03/03/14 15:51
そもそも、Rubyってのは真っ赤な日の丸から連想して
名付けたらしい。
大日本帝國言語ルビー万歳!

480:デフォルトの名無しさん
03/03/14 17:36
日本語対応の点で安心できるってのはあるなぁ

481:デフォルトの名無しさん
03/03/14 17:46
>>479
Pearl の次の誕生石だから。
寝たに混じれ酢。

482:デフォルトの名無しさん
03/03/14 18:00
bison (GNU Bison) 1.875をつかっているのですが、
yyerrlab1:
#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__)
__attribute__ ((__unused__))
#endif
goto yyerrlab2;
っていうコードを吐くのですが、g++(gcc version 3.2 20020927 (prerelease)) で
コンパイルすると
parse error before `goto'
といってコンパイルが止まってしまいます。

ふみゅ〜ん。

483:デフォルトの名無しさん
03/03/14 19:26
スクリプトエンジンってbison やlex/yacc 等が
いるのですか???

素朴な疑問でスマソ


484:デフォルトの名無しさん
03/03/14 19:35
>>477
英語が通じそうにないから敬遠するというのはあるかも

485:デフォルトの名無しさん
03/03/14 20:40
>>483
再帰下降でガンバレばいらないと思うよ。


486:デフォルトの名無しさん
03/03/14 20:49
;

487:デフォルトの名無しさん
03/03/14 21:04
Delphi版 ギコBasicの アーカイブ一覧
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)


488:デフォルトの名無しさん
03/03/14 21:48
ギコBasicで2chブラウザ作れますか?

489:デフォルトの名無しさん
03/03/15 01:23
微妙に英文ライクで空白込みの名前も可、というオブジェクト指向言語を作りたい者です。
経験者の方にお聞きしたいのですが、下のサンプルコードのようなものですと、パーザを実装するのは難しいのでしょうか?

//宣言部
private property string greeding head = "hello, ".
public method say greeding (string name = "world") {
output stream std out = system consore standerd out.
this greeding head + arg name + "." outln to std out.
}
//使用する側のコードを一部抜粋
this say greeding ">>1".

490:デフォルトの名無しさん
03/03/15 01:36
しるか

491:デフォルトの名無しさん
03/03/15 01:51
(´-`).。oO(その言語でプログラムを書くのが難しいと思われます。。)

492:デフォルトの名無しさん
03/03/15 01:53
つーか自分でBNFでも書いてみろよ。>489

493:デフォルトの名無しさん
03/03/15 03:48
プログラムを自然言語ライクに書けるようなのが出来たとしても、
greeting を greeding と間違って書いてもちゃんと認識
してくれるようなシステムを作るのは難しい。


494:デフォルトの名無しさん
03/03/15 09:17
C言語版、C++版ギコBasicもよろしく

C言語版
URLリンク(page.freett.com)

C++版
URLリンク(page.freett.com)

495:デフォルトの名無しさん
03/03/15 09:32
>間違って書いてもちゃんと認識

勝手にそんなことされると意図と違って認識されたときにものすごく発見困難なバグの原因になりそうだ

496:デフォルトの名無しさん
03/03/15 11:06
Ada95@gccってば、エラーメッセージ中でスペルミス指摘してくれるのだが、そういうのじゃなくて?

497:デフォルトの名無しさん
03/03/15 11:15
>>489
例えば事前にstring nameという定義があったりすると、
private string name x. とか書かれると、「string name」「x」なのか「string」「name x」なのか曖昧なので、
識別子に空白を含められるようにするなら、区切りの記号か予約語を入れるようにしないと。

普通ならPascalっぽく ":" 使うところだけど、英文ライクということなので、isなりasなり入れれば?
private property greeding head is string = "hello,". とか。

もっとも、曖昧さも含めて楽しむような仕様にするなら、それはそれで。

498:デフォルトの名無しさん
03/03/15 20:57
そんな言語、情報処理にはむかんなぁ(w

まぁ、曖昧な処理にはいいかも?(w


499:デフォルトの名無しさん
03/03/15 21:00
COBOLの路線で行きたいって事でしょ

500:デフォルトの名無しさん
03/03/15 23:21

    /ノ 0ヽ
   _|___|_      
   ヽ( # ゚Д゚)ノ   下がってろウジ虫ども! 。
     | 个 |      訓練教官のハートマン先任軍曹が500をgetする!
    ノ| ̄ ̄ヽ
     ∪⌒∪

>>501 貴様!俺の海兵隊をどうするつもりだ!
>>502 口でクソたれる前と後に「サー」と言え!
>>503 ふざけるな!大声だせ!タマ落としたか!
>>504 貴様には両生動物のクソをかき集めた値打ちしかない!
>>505 アカの手先のおフェラ豚め!
>>506 まるでそびえ立つクソだ!
>>507 タマ切り取ってグズの家系を絶ってやる!
>>508 じじいのファックの方がまだ気合いが入ってる! 
>>509 ベトナムに行く前に戦争が終わっちまうぞ、アホ!


501:デフォルトの名無しさん
03/03/18 22:28
そういえば、最近はスクリプト言語の時代らしいんだけど、
ろくな言語ないよなぁ〜、

コンパイル言語のときは、Cがあったけど


なんていうかパールは暗号みたいだし、
AWKはフィルタ専門だし、(SEDも)

ルビーはOOだし、

なんかみんな極端なんだよねぇ。。。


502:デフォルトの名無しさん
03/03/18 22:30
HSPがあるよ!

503:デフォルトの名無しさん
03/03/18 22:31
>>501
> そういえば、最近はスクリプト言語の時代らしいんだけど、
> ろくな言語ないよなぁ〜、
> コンパイル言語のときは、Cがあったけど
(w

> ルビーはOOだし、
これがオチですか?

504:デフォルトの名無しさん
03/03/18 22:32
>>501
じゃあどんなのがいいんだよ

505:デフォルトの名無しさん
03/03/18 22:33
cintがあるやん

506:デフォルトの名無しさん
03/03/18 23:49
>>504
純粋関数型のスクリプト言語

507:デフォルトの名無しさん
03/03/19 00:05
Haskell

508:デフォルトの名無しさん
03/03/19 00:28
インタプリタがほしけりゃghciでいいじゃん

509:デフォルトの名無しさん
03/03/19 01:08
>>502
win用じゃん(w
os2用もあるらしいが。。。(w

畑違い、ハゲ稿!


510:デフォルトの名無しさん
03/03/19 01:18
>>505

ヨサゲだけど、絶版ですか?
ちょっと残念(本)


511:デフォルトの名無しさん
03/03/19 01:23
>>507

なんか難しい論文ばかりで、学者○カ向け?


512:デフォルトの名無しさん
03/03/19 01:24
>>ghci なにそれ?


513:501
03/03/19 01:51
やっぱりHSPが最高だね、アハハハハハ

514:デフォルトの名無しさん
03/03/19 05:14
>>489
スペルミスの多さからしてネタだろ。

515:デフォルトの名無しさん
03/03/19 05:20
>>482
cygwinのが1.875bで手元では一番新しかったんで試してみたけど、そんなコー
ドは吐かないな。


516:デフォルトの名無しさん
03/03/19 11:20
とりあえず付箋紙ベースのスクリプトエンジンを作成しようとおもいますた。
Basicインタープリターは別なところでできてるんだけど、アイデア暮れ。

517:デフォルトの名無しさん
03/03/19 13:32
付箋紙?

518:デフォルトの名無しさん
03/03/19 14:43
>>509-512=日下部

519:デフォルトの名無しさん
03/03/20 01:06
結局ライブラリをどうするかなんだよ。スクリプト作る時間よりも、
ライブラリ用意する手間の方がでかい。特にOO系言語のクラスlib
なんてもうみてらんない。シコシコ使うかどうかもわからんクラス階層
作ったりしてんの。バカみたい。クソインターフェース量産したりしても
誰もつかわねえよ(ププドキュメントも用意しないとわかんねえし、
忘れるし。そんなことしてる暇あったらデバッガ作れよ。
結局クラスがクソなら誰もつかわねえって。
時間の無駄だっつうの。

520:デフォルトの名無しさん
03/03/20 01:58
>>519
Java の仕事がメインになったけど、Cばかりを組んできたから、うまく対応できなくて困っている
老人ですか?

MFC はともかく、Javaは、ライブラリーの規模を考えれば、うまく設計されていると思いますが?

521:デフォルトの名無しさん
03/03/20 05:25
要するに標準入出力さえきちんとしてくれれば全てオッケー
言語はどうでもいい。
その分野を最も得意とする言語で書く。

522:デフォルトの名無しさん
03/03/20 23:26
言っていることは正しいし、激しく同意だが、すれ違いだ。

523:デフォルトの名無しさん
03/03/21 18:19
これからの主流はスクリプト言語なんだろうか?

なんか、パールとルビーの宝石コンビじゃいやだなぁ〜(w


524:デフォルトの名無しさん
03/03/21 18:37
スレと無関係ない事書くなや、ここは死滅スレじゃねぇ

525:デフォルトの名無しさん
03/03/21 21:20
>>524
スレタイトルがわるい

526:デフォルトの名無しさん
03/03/21 21:27
>>525
> >>524
> スレタイトルがわるい
分かりやすくていいじゃないの?
何が不満なの?

527:525
03/03/21 22:47
>>526
別に不満はないよ。不満があるのは>>524さんでしょ。

528:デフォルトの名無しさん
03/03/21 23:45

☆^〜^★「探し物とくとくページ」☆^〜^★
URLリンク(sagatoku.fc2web.com)
あなたの探し物きっとみつかります
ほぼ毎日 新着情報追加 毎日更新
新着情報メールでお知らせ




529:デフォルトの名無しさん
03/03/22 04:29
>>527
ここは言語仕様でなく、
実装について語るスレだったはずなんだが・・・

530:デフォルトの名無しさん
03/03/22 11:27
>>529
>前スレ1より
>>yaccやlexの使い方やら言語仕様やらの話題。

って>>1にかいてあるよ?

531:デフォルトの名無しさん
03/03/22 12:46
>>530
529ではないが、どうにも最近は厨が来るから次スレから抜きにしないか? > all
必要なときは関連して話題になるだろうし、そういう状況なら厨が入り込む余地はないだろう。
ここで在っていいのは宗教論争ではなく実装に関連した言語仕様の話題のほうがいいと思う。

532:デフォルトの名無しさん
03/03/22 15:56
yacc/lex の使い方の高度な話題はここでいいと思うが。

まあ、次スレまで行くのかどうか問題だが。

533:デフォルトの名無しさん
03/03/22 21:23
flexに #include <unistd.h> を出力させない方法はないですか?

534:デフォルトの名無しさん
03/03/22 21:59
宝石兄弟と仲良くする擦れはここですか?


535:デフォルトの名無しさん
03/03/23 07:02
(*゚ー゚) しぃ の、言語をつくろう!!(゚ー゚*)
スレリンク(prog板)


536:int
03/03/23 09:37
ちょっと聞きたいんだけど、いわゆるスクリプトと呼ばれるインタプリタ処理系は、
(中間言語を含め)内部で事前コンパイルしてるものなのでしょうか?


537:デフォルトの名無しさん
03/03/23 09:52
してるよ

538:int
03/03/23 10:15
それは、事前に全ソース(つまり頭から尻尾まで)変換してから
実行しているってことですか?


539:デフォルトの名無しさん
03/03/23 10:25
>>538
大抵は一括変換だけど、
ある単位(関数や変数など)ごとに変換していくのもあるよ

540:デフォルトの名無しさん
03/03/23 10:26
             ∩
        ∧_∧   | |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (  ´Д`)//  < 先生!こんなのを発見シマスタ!
      /       /    |
     / /|    /      \  URLリンク(saitama.gasuki.com)
  __| | .|    |         \
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\     \_____________
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||

541:デフォルトの名無しさん
03/03/23 10:29
↑ブラクラなので踏まない様に

542:デフォルトの名無しさん
03/03/23 10:52
>>533
自分はあきらめて空の unistd.h をシステムインクルードディレクトリに入れてしまいました。

543:int
03/03/23 17:16
>>539
文字通り1行毎に逐一変換&実行している言語はないのでしょうか?
なんか、そのほうがインタプリタ(スクリプト)というイメージに
ぴったりなんですが。。。


544:デフォルトの名無しさん
03/03/23 17:17
N88BASIC?

545:デフォルトの名無しさん
03/03/23 17:24
>>543
sh

546:ろうひ男爵
03/03/23 18:55
>>544
N88BASICも、入力されたときに中間コードに落とすんじゃなかったですっけ?

>>543
GOTOなどのジャンプ先のアドレス解決を毎回やると、
検索だけで重くなってしまうので実用的ではないのでは?

547:デフォルトの名無しさん
03/03/23 19:16
>>543
自分の場合は、スクリプトとして自働実行する以外に、コマンドラインのインターフェイスを
持たせたいときは、そういうことをする場合もあります。
ただ・・・
構造化された構文がこれだと作りにくいんだ、
だからある程度派手な構文を持つ場合はパースするか、コマンドラインだけ文法限定して
別パーサーで作っていたりします。
ちなみに、古いベーシックなんかが一行入力時にそのつどパースしてるんじゃないかな。
いまどきの文法はちょっと苦しいかも。

548:int
03/03/23 23:05
やはり、実行速度がもんだいのようですね。
いろいろとありがとうございました。


549:デフォルトの名無しさん
03/03/24 09:24
>>547
だからshのソース嫁。gotoはないけどブロックはある。

550:デフォルトの名無しさん
03/03/24 11:02
>>549
まあできんことは無いんだが・・・
たんに大変だなとか思ってね。

551:デフォルトの名無しさん
03/03/24 12:52
>>546
実行時にsyntax errorが出るくらいだから、それはないと思う。


552:デフォルトの名無しさん
03/03/24 12:57
>>551
たしか予約語を中間コードに置き換えるようなことはやってたと思うが。
でも構文チェックをしたり構文木を作ったりは当然しない。

553:デフォルトの名無しさん
03/03/24 16:41
>>551
N88しか知らないけど、runした瞬間に出るエラーもあるよ。
for〜nextの対応関係だったかなぁ。

554:デフォルトの名無しさん
03/03/26 22:14
その中間言語って、なにか規格みたいなものあるの?
それともデファクトスタンダードな仮想マシンがあるの???


555:デフォルトの名無しさん
03/03/26 22:19
>>554
そんなもんは無いです、当時は中間コードの利用目的は高速化とプログラムのメモリー占有サイズの削減が目的。
わずか数キロバイトにプログラムを収めるのにTEXTデータは大きすぎたのです。

556:デフォルトの名無しさん
03/03/27 03:20
つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な
エラーメッセージを吐き出しますよね。
LALR(1)で解析してて、あんなことってできるもんなんですか?
yaccとかだと、ちょっとerrorを突っ込んだだけでconflict起こしますよねぇ。
LR(1)とかだったらそこいらじゅうに、擬似シンボル埋め込めばできなくも
なさそうな気はしますが、、、
そのへんってどうなんでしょう?

557:デフォルトの名無しさん
03/03/27 03:54
>>555
THANX



558:デフォルトの名無しさん
03/03/27 11:42
>>556
「異常に的確なエラーメッセージ」の例を挙げないと、
答えづらいと思うよ。




559:デフォルトの名無しさん
03/03/27 20:00
>>556
異常に典型的なミスを犯しているだけでは?(w


560:デフォルトの名無しさん
03/03/28 17:07
VCのエラーメッセージって異常に意味不明なものが多いと思うがな。

561:デフォルトの名無しさん
03/03/29 01:13
「予期せぬ EOF が検出されました」
のどこが的確なメッセージなのかと、小一時間t(ry

562:デフォルトの名無しさん
03/03/29 16:28
やはり、>>559だろう


563:デフォルトの名無しさん
03/03/29 18:30
>>556
>つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な

具体的にどの辺が的確なエラーメッセージだと思ったのか、書け。


564:デフォルトの名無しさん
03/03/29 19:04
>>559-563
煽りは死滅スレでやれや


565:563
03/03/29 19:24
>>564
煽りに見えてのはお前だけだと思われ。
もし>>556=>>564だとしたら被害妄想だよ。
死滅スレ居座りすぎて病気になったか(w
説明不足を解消せよってだけ。

566:デフォルトの名無しさん
03/03/29 19:27
>>565
>>558がもう指摘してるじゃん。

567:563
03/03/29 19:45
>>566
んなことわかってるよ。
これじゃ話が進まないから催促してるの。

568:デフォルトの名無しさん
03/03/29 21:15
563 は "(w" とかつけている段階で論外。
毎日見ていない人もいるだろう、そのうち書かれた時に理由を考えればいい。
ただ煽るだけで意味のないことするな。

569:デフォルトの名無しさん
03/03/29 21:49
結局556がアホなだけだな。

570:デフォルトの名無しさん
03/03/30 20:24
インタプリタの中間コードは8ビットが普通ですか?
いきなり32ビットとはしてるものはありますか?


571:デフォルトの名無しさん
03/03/30 20:35
>>570
Java。全て4バイトがベース。

572:デフォルトの名無しさん
03/03/30 20:52
皆さんのお力でぜひぬるぽをageて下ちい。
  ∧_∧
 ( ´∀`)< ぬるぽ

ぬるぽ 投票ヨロシク
URLリンク(pumpkinnet.to)


573:デフォルトの名無しさん
03/03/30 21:50
Javaは8bitじゃないのか?

574:デフォルトの名無しさん
03/03/31 00:29
そういえば、java関係の本はそれこそ腐るほど(?)あるが、
バイトコードとか仮想マシンの説明をしてるものってある?


575:デフォルトの名無しさん
03/03/31 00:49
>>574
オライリがバーチャルマシン仕様の解説本出してるよ。

576:デフォルトの名無しさん
03/03/31 00:50
>>574
本屋で立ち呼んだ記憶があるからあるんじゃない?

577:デフォルトの名無しさん
03/03/31 02:52
ソースコード読めばいんじゃないの?
そこまでやるのはちょっと、、、という
のなら、そもそもVMの勉強なんてしなくても
いいんじゃないの?

578:デフォルトの名無しさん
03/03/31 03:31
Structured Computer Organization by Andrew S. Tanenbaum
URLリンク(www.amazon.com)

にちょっとだけ説明があります。
オペコードが1バイトで全体としては1〜3バイトのがほとんどだそうです。

URLリンク(java.sun.com)
のどこかに説明あるかと思いましたが、発見できませんでした。
見落としあるかもしれません。

あとamazon.comをjava virtual machineで検索すると7冊ほどひっかかりますね。
URLリンク(www.amazon.com)


579:デフォルトの名無しさん
03/03/31 04:36
WSHとかってプログラム上から使ってその結果を受け取ることは出来ないのでしょうか?
MSDNを見ますと「IActiveScript」と言うのが在るのですが,
いまいちサンプルが乏しくて困っています.

580:デフォルトの名無しさん
03/03/31 04:43
一通りの使い方ならRuby256本の邪道編に書いてあった気がするが。
スレ違いじゃないか?

581:579
03/03/31 19:20
IActiveScriptってWSHにRubyとかの他の言語拡張するための
インターフェイスなのですか?
今考えているソフトでWSHスクリプトファイルをユーザに用意してもらい,
そこに書いているスクリプトを実行することによってアプリケーションの
挙動を変化させたいと思っています.
WSHあるいはJSCRIPT,VBScript等をプログラム上でロードして実行させる
方法が知りたいです.
よろしくお願いします.

環境:
VC++ 6.0
IE Ver 6.0.2


582:デフォルトの名無しさん
03/03/31 20:09
>>577
何のソースコードを読めばいいの?
VMのソースコード?それって公開されてるの?



583:デフォルトの名無しさん
03/03/31 20:19
良い子は検索したり、過去ログ読んだりします。

584:デフォルトの名無しさん
03/04/01 01:40
<死ね>
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

VMはオープンソースのプロジェクトがいくつかあったはず。
GNUにもあった気がする。
俺が知ってるのはOSがマイナーなんで言ってもしょうがない。
</死ね>

585:デフォルトの名無しさん
03/04/01 01:43
<死ね target=">>582">
URLリンク(www.amazon.com)
全部読んだわけではないが書き方が変わってるんでVMの勉強としては素直に薦められない。

URLリンク(www.amazon.com)
は上にあげたとおり邦訳が出てるんでそっちを読め。訳に問題はない。

あとの洋書は大体到着待ち。
</死ね>


586:デフォルトの名無しさん
03/04/01 02:32
>>582
www.kaffe.org
とか…

587:デフォルトの名無しさん
03/04/05 17:27
いろいろと参考になりますね、この擦れ。
ところで、JAVAのVMがやはり事実上のスタンダードになりつつあるのでしょうかね?


588:デフォルトの名無しさん
03/04/05 17:33
現状はそう。

でもCLRとかParrotとか、未来の可能性は閉じてはいない。

589:デフォルトの名無しさん
03/04/05 17:35
>>587
なんの事実上のスタンダード?
VMといえばJavaのVMってことか?

590:デフォルトの名無しさん
03/04/05 17:57
>>581
やり方が分かったら連絡してくれ.

591:デフォルトの名無しさん
03/04/06 02:48
>>587
スタンダードというか、参照・参考にするのに比較的お手軽なのは確か。

592:デフォルトの名無しさん
03/04/08 21:55
VMってJAVAスクリプト自体は解釈できんのね?


593:デフォルトの名無しさん
03/04/08 22:17
JavaとJavaScriptは何の関係も無い(たしか)

594:名無し
03/04/09 01:24
VMが理解できるのはバイトコードだけかと

595:デフォルトの名無しさん
03/04/09 11:34
はぁ?

596:デフォルトの名無しさん
03/04/09 13:44
>>593
そだね最初はNetscape社のLiveScript。でJavaが現れて
なんとなく名前をJavaScriptに変更。

URLリンク(www.howtocreate.co.uk)

つうかこれくらいはgoogleですぐ見つかるんだが…

597:デフォルトの名無しさん
03/04/10 11:47
Javaを意識してみたという点では、まったく無関係でもない。

598:デフォルトの名無しさん
03/04/10 12:40
>>597
ばーか

599:コンパイラを勉強するには?
03/04/10 15:41
今まで、業務でJavaを1年半使った以外、プログラム経験はありません。そのJavaもWeb系が主です。

こんな僕でも、コンパイラの事を理解する事ができるでしょうか?JavaCCと言うのをやろうとしているのですが、
これをやるには、Java以外の知識よりもプログラム全般に詳しくないとできないですよね?

『おまえには、まだ無理だ。そんなんじゃJavaCCなんて理解できるはずはない。』なんてことは、皆さん思いませんか?
それとも、私ほどの経験でもJavaCCを理解する事は可能なんでしょうか?

何年かかっても良いので、最良の道を行きたいと思っています。
それには、やはりC言語などからプログラムというものを理解し、一般のコンパイラ事情を知ってから、JavaCCに行った方が良いのでしょうか?

よろしくお願いします。

600:デフォルトの名無しさん
03/04/10 15:50
愛さえあればできるよ。

601:デフォルトの名無しさん
03/04/10 15:52
できちゃった♥

602:デフォルトの名無しさん
03/04/10 16:15
>>599
個人的にゃJavaって泥臭いとこを隠してるから一回Cでそういう所を
見た方がいい気がする。

UNIX使えるならシェル書いてみるのはどうよ。

603:デフォルトの名無しさん
03/04/10 16:17
Java慣れてるならJavaでいいじゃん。
なんで遠回りすんの?>602

604:デフォルトの名無しさん
03/04/10 16:28
んー?別にCで全部やれっちゅうワケじゃないのよ。
ただ、作ろうとしてるモンはJavaでもCでもない「別の言語」
だから他の言語との違いを知っとった方がいいかと思う。

605:デフォルトの名無しさん
03/04/10 16:34
あ、でもJavaってアプリ自身がJavaで書かれたコードを実行する機能を
持たれられた気がするな…

マクロとかだとそっちの方が早いか?

606:デフォルトの名無しさん
03/04/10 17:50
>>599
C yacc lex は書籍が多いから、それがいいかもね。
とりあえず C をマスターしておいて、整数だけbasicからjavaへのトランスレータとか作ってみたらどう?
でき上がったものは無意味だけど、やり方は理解できると思うよ。

607:デフォルトの名無しさん
03/04/10 18:05
(´-`).。oO(>602 コンパイラ作るのになんでシェルが関係あるんだろう?)

最終的に機械語やバイトコードに落とす必要は必ずしもないのだし、
そこまでいくには道のりは遠いので、まずは構文解析できるように
なればいいのでは。
ただ、言語を作るのはただツールをいじっていればなんとかなるものでもない。
きちんとしたものを作れるようになるには知識が必要なので、しっかりした
解説を読むべし。
Java + JavaCC で書いてあるwebなり本なりが見つかればそれでもいいし、
見つからなければCを覚えて本を読む方がいい。理論がわかればツールを使うの
はJavaCCだろうがyaccだろうがたいしてかわらない。

過去ログを見ればweb上の講義ノートもあったと思う。(前スレだったかも)


608:デフォルトの名無しさん
03/04/10 18:24
シェルスクリプトあたりからってことじゃないの

609:デフォルトの名無しさん
03/04/10 18:40
だとしてもなんでshなんだよ。
まだLISPでもやってた方がいいぞ。

610:コンパイラを勉強するには?
03/04/10 19:55
どうも、皆さん幅広いご意見ありがとうございます。
大変参考になったのですが、やはり難しそうですね。しかし、生まれつき、計算とかが
好きなものですから、話しを見ているだけで、とてもわくわくしてきます。

やはり、いきなり、JavaCCに入るのではなく、他の方から入っていく事にします。

もっといろいろ読みたいので、良ければみなさん、またいろいろ書いておいてください。

よろしくお願いします。

611:デフォルトの名無しさん
03/04/10 20:36
>>610
yacc lex なら、そんな難しいものじゃないから、習うより馴れろでガンガンいけばいいよ。
ただCは押さえて置かないと進むものも進まないから、Cはがんばってね。
多分なじみの薄い物で参考資料も少なく、yacc を使うにあたって必要不可欠なCの概念は union だと思います。
そこは気合で行ってくれ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4934日前に更新/200 KB
担当:undef