『コンパイラ・スクリプトエンジン』 相談室 2at TECH
『コンパイラ・スクリプトエンジン』 相談室 2 - 暇つぶし2ch248:デフォルトの名無しさん
02/11/07 02:31
以下のような構文を作ります。データを定義しているフォーマットです。xmlとかcvsみたいな物です。
ここから木の様に情報を取り出したいと思ったのですが、上手くパーサを作れません。
tokenizerは簡単に出来るのですが、どうすれば良いですか。rubyでやってます。

object hoge
 caption='hogehoge'
 val=0
 object fuga
  caption='fugafuga'
  object aaa
   caption='aaa'
  end
  object bbb
   caption='bbb'
  end
  object ccc
   caption='ccc'
  end
 end
end

249:ねこま
02/11/07 02:39
インデントレベルだけで解釈できれば簡単そう


250:デフォルトの名無しさん
02/11/07 02:46
トラバースと逆の手順。
各ノードは子供と親のリンクを持つ。

<でノードを生成、現在処理中のノードへの参照を
親への参照として新規ノードへ設定。
その後で親に子として新規ノードへの参照を設定。
処理中のノードの参照として新規ノードを指させる。

>でシングルタグか開始タグか終了タグかを判断し
親に戻るかどうかを決める。
戻る時には処理中のノードの参照として
親を指させる。

こっちにドキュメントを置いてます。
サンプルソースはC++。
ソース玉は整理してないんで乱雑にメモテキストとか
テストデータが散らかっててちょっと気が引ける。
URLリンク(sourceforge.jp)
こういうドキュメントが欲しいとか
掲示板に投げておけばそのうち対処するかも。

251:デフォルトの名無しさん
02/11/07 02:55
>>248
rubyじゃできないな。

252:デフォルトの名無しさん
02/11/07 03:22
手抜き実装で考え方だけ。言語も適当。

loop
  token w = Tokenizer.next();

  if w == 'object' then
    currNode := currNode.pushNewNode( Tokenizer.next());
    continue;
  end if

  if w == 'end' then
    currNode := currNode.parent();
    if currNode is null then break;
    continue;
  end if

  Tokenizer.skip();
  currNode.pushNamedValue( w, Tokenizer.next());
end loop

Node というクラスはツリーのノードを表す。
各ノードは子ノードとして、object か namedValue を持つことができる。
pushNewNode は object 子ノードとして追加して、その新規子ノードを返す。
引数はノードの名前を表す。
pushNamedValue は namedValue 子ノードとして追加する。戻り値はなし。
第一引数は値の名前、第二引数は値の中身。

253:デフォルトの名無しさん
02/11/07 04:33
今ちょっと色々調べてたんですけど、色々とヒント有り難うございます。
一週間前にはかけらすらないような事趣味でやり始めて分かったんですが構造を持つ
ファイルフォーマットってコンパイラ作成のような視点が必要なんですね。
さすがにインデントでは無理だってすぐ分かりましたが、xmlに近いことは
気づきませんでした。そう言えばxmlと似てますね。

内部データ構造を持つファイルフォーマットのパーサーの解説の一般的なドキュメント
希望>250

254:デフォルトの名無しさん
02/11/07 07:52
schemeで書くとこんな感じなんだが

(define (hoge-read s)
 (let loop ((x s) (stack '()))
  (if (pair? x)
   (case (car x)
    ((object)
     (loop (cddr x) (cons (list (cadr x) (car x)) stack)))
    ((end)
     (if (null? stack)
      (error "Syntax-error - Corresponding 'object' is required :"
       s))
     (if (pair? (cdr stack))
      (loop (cdr x)
       (cons
        (cons (reverse (car stack)) (cadr stack))
        (cddr stack)))
      (loop (cdr x) (reverse (car stack)))))
    (else
     (loop (cdddr x)
      (cons
       (cons (list (car x) (caddr x)) (car stack))
       (cdr stack)))))
   (if (and (pair? stack) (pair? (car stack)))
    (error "Syntax-error - 'end' is required :" s)
    stack))))

255:デフォルトの名無しさん
02/11/07 07:52
;テスト
(define hoge-read-test-data '(
object hoge
 caption = "hogehoge"
 val = 0
 object fuga
  caption = "fugafuga"
  object aaa
   caption = "aaa"
  end
  object bbb
   caption = "bbb"
  end
  object ccc
   caption = "ccc"
  end
 end
end
))

(hoge-read read-tag-test-data)
=>
(object
 hoge
 (caption "hogehoge")
 (val 0)
 (object
  fuga
  (caption "fugafuga")
  (object aaa (caption "aaa"))
  (object bbb (caption "bbb"))
  (object ccc (caption "ccc"))))

256:デフォルトの名無しさん
02/11/07 08:20
(中身的に変んないけど)Cに変換すると
scmobj_t hoge_read(scmobj_t s) {
 scmobj_t x = s;
 scmobj_t stack = nil;
 tail_recursive_loop:
 if (pairp(x)) {
  if (car(x) == make_symbol("object")) {
   stack = cons(list2(cadr(x),car(x)),stack);
   x = cddr(x);
   goto tail_recursive_loop;
  } else if (car(x) == make_symbol("end")) {
   if (nullp(stack))
    return error("Syntax-error - Corresponding 'object' is required :",s);
   if (pairp(cdr(stack))) {
    x = cdr(x);
    stack = cons(cons(reverse(car(stack)),cadr(stack)),cddr(stack));
    goto tail_recursive_loop;
   } else {
    x = cdr(x);
    stack = reverse(car(stack));
    goto tail_recursive_loop;
   }
  } else {
   stack = cons(cons(list2(car(x),caddr(x)),car(stack)),cdr(stack));
   x = cdddr(x);
   goto tail_recursive_loop;
  }
 } else if (pairp(stack) && pairp(car(stack)))
  return error("Syntax-error - 'end' is required :",s);
 return stack;
}


257:デフォルトの名無しさん
02/11/14 06:59
>>245
Expression Templateをはじめ各種のテンプレート・メタ・プログラミングは
知ってたけどPaser Generatorにまで行きつくとは。 
 カ コ イ イ ! !
テンプレートらしく解析対象の列の要素型がパラメタ指定できるのもカコイイ!
(char, w_charに始まってユーザー作成のクラスまで)
字句解析器も含んでるしね。

当方Java(正確にはバイトコード)のPartial Evaluationを実装中なのだが、
Javaに演算子多重定義が導入されていれば、
合わせ技で同じようなことが狙えたのになァ。惜しい。
(メソッド呼び出し式で書けば良いわけだが、カッコ良さが大いに減る。)

258:デフォルトの名無しさん
02/11/17 16:17
>>257
でも、あんまり真剣な用途には使えないよね。

実行時にパーザ生成するんだったら、文字列で文法与えても良いな。

259:祐一ゴン
02/11/17 19:39
やぁ、ぼく押金さん(*´∀`*)ノ
中学の時からポカリの粉を麻薬と思って鼻から吸ってたけどヽ(`Д´)ノ ウワァァン!!全然トリップできないや!最近初めてその事実を知ったよ
今部屋をテラフォーミングしたら鼠の干からびた死体が出てきたよ、あまり旨くなかったよ


260:デフォルトの名無しさん
02/11/18 04:16
パスカルとベーシックってどっちが作りやすいですか?

261::-)
02/11/18 07:12
pascal→delfy
ベーシック→HSP

HSPはタダの開発環境です。デルフィは10万円くらい?

262:デフォルトの名無しさん
02/11/18 11:55
たとえば、関数呼び出し
a(b(c(d())));
ってのをなんらかの中間コードにしてあって、
これを1パスでコード生成できるの?
(最適化はどうでもいい)

a();
のコード生成はできるけど、
a(b());
のようにネストするとできなくなって困ってます。

263:デフォルトの名無しさん
02/11/18 12:01
>>262
ちょっとは考えろ
つーか、お前の言う中間コードって何のためにあるのさ

264:デフォルトの名無しさん
02/11/18 13:15
>>262
> ってのをなんらかの中間コードにしてあって、
> これを1パスでコード生成できるの?

「これ」というのが「中間コード」を指しているのなら、
どのような「中間コード」なのか示してもらわないと。

) を検出したタイミングでコード生成すりゃいいだけの
話なんだけど。

265:デフォルトの名無しさん
02/11/18 17:40
バイトコードバイトコード!

266:デフォルトの名無しさん
02/11/19 00:50
>>261
デルファイじゃないのか?Delphi
嘘教えるなよ

267:デフォルトの名無しさん
02/11/19 01:10
>>261はどうみても無知だろ

268:デフォルトの名無しさん
02/11/19 03:22
>>260はコンパイラ作るならbasicかpascalどっちを作ったほうがいいかって
いってるんだろ。どっちだろう、俺はベーシック知らないからなんとも
いえん。

269:デフォルトの名無しさん
02/11/19 03:26
コンパイラならPascalだろうが、
インタプリタならBasicの方が楽だろう。
昔のBasicインタプリタは4KBくらいだった。

270:デフォルトの名無しさん
02/11/19 03:59
ベーシックインタプリタのコードってないの?

271:デフォルトの名無しさん
02/11/19 05:11
>>271
ほれ
URLリンク(homepage2.nifty.com)

272:デフォルトの名無しさん
02/11/19 11:09
>>260-270
…この21世紀になんでその2択に拘るんだw。

273:257
02/11/19 11:13
>>258
使えないかねぇ…。この辺の技術には期待したいトコロなんだけどなぁ。
私も使ってみたわけではないので大丈夫と言い切れるもんではないんだが。

実行時というか、コンパイル時にテンプレートの展開動作を利用して
パーザが作られるようなんだが。

274:デフォルトの名無しさん
02/11/21 13:10
>>270
ギコBASICは参考にならないですか?

275:デフォルトの名無しさん
02/11/21 14:05
この辺は?
URLリンク(member.nifty.ne.jp)

276:デフォルトの名無しさん
02/12/03 17:38
bisonが吐き出したコードってなんでVC++でコンパイル通らないんだ?
激しく鬱…

bison++/flex++に乗り換えるかのぉ。ドキュメント少なすぎだが・・・

277:デフォルトの名無しさん
02/12/03 18:48
>276
> bisonが吐き出したコードってなんでVC++でコンパイル通らないんだ?
gcc 使え、というお達しかと……。ところで byacc とか kmyacc はどう?

278:276
02/12/04 14:34
正確にはC++ソースとしてコンパイルしようとすると、VC++には入ってない(おそらくPOSIX互換の?)インクルードファイルを要求されてコンパイルできません。
まぁ、別にオブジェクト指向な解析器が作りたいというわけではなく、ただアクション書くのにクラスとか使いたいだけなんだが…

何かいい方法あったらキボンヌ!というか、bison++/flex++の日本語ドキュメントなんか激しくほすぃかも

279:デフォルトの名無しさん
02/12/04 14:47
>278
include 外せばいいんじゃないの?

280:デフォルトの名無しさん
02/12/04 19:38
>279
それだと毎回 *.y からコード生成するたびに書き換えが必要になるから、
ダミーのヘッダファイルをでっち上げるに一票。

っつか、どうしても再入可能にしたいとかで bison の機能が必須でなければ、
bison 以外の yacc 互換処理系を試す方が幸せかも知れんが。

281:278
02/12/05 01:17
>>280
bison以外ならC++ソースとしてビルドできるんですか?

今日はbison++/flex++試しマスタ。今度はVC++だとエラー出まくって全然ビルドできない罠。

byaccとkmyacc試してみるかなぁ。

282:デフォルトの名無しさん
02/12/05 08:55
yaccの使い方教えろや

283:bloom
02/12/05 09:10

URLリンク(www.agemasukudasai.com)

284:デフォルトの名無しさん
02/12/05 09:23
coco/r使えよ

285:デフォルトの名無しさん
02/12/05 12:01
coco/rって何か教えろや

286:デフォルトの名無しさん
02/12/05 15:39
うえーんコンパイラフレームワークキボン( ●д●)

287:デフォルトの名無しさん
02/12/05 16:53
>>286
lex + yacc + RTL(gcc)じゃ駄目か?

288:デフォルトの名無しさん
02/12/05 16:56
yaccかbisonについて優しく解説してるサイトはありませんか?
または本でも。

289:デフォルトの名無しさん
02/12/05 18:16
ちょっと聞いていいですか?
このスレ、結構人が訪れているみたいなんだけれど、
実際にコンパイラレベル(変な言い方だけど)のものを作ってる、もしくは作った人っています?
自分はスクリプトぐらいなら、何とかいけそうなんだけれど、
コンパイラまでくるとかなり大変じゃないですか?

290:デフォルトの名無しさん
02/12/05 19:34
仮想的なスタックマシンとかのコンパイラなら
作ってる人は沢山いると思うよ。

291:デフォルトの名無しさん
02/12/05 19:40
>288
オライリーの lex & yacc 本

>289
アセンブラを出力させるなら、そんなに面倒じゃない。実行できるバイナリを出力
しようと思うと、山のような詳細に追われて力尽きる。

292:デフォルトの名無しさん
02/12/05 20:17
インストラクションコードへの変換が面倒だなあ。
テーブル化するのが。

293:デフォルトの名無しさん
02/12/06 07:28
変な聞き方してしまいました。
コンパイラといっても仮想マシンコードに変換するスクリプトコンパイラだってあるし。
ネエィテブなアセンブルや直接、実行形式を吐くコンパイラのことを聞いたつもりでした。

294:ろうひ男爵
02/12/13 20:28
>>289
自分は構造化BASICで186のDOSの.COMを出力する物を作ったよ。
今は暇を見つけて簡易的なC言語コンパイラを作ってるよ

295:デフォルトの名無しさん
02/12/13 20:34
だれか僕のためにCコンパイラのソースみせてください。
Cじゃなくてもパスカルでもベーシックでもいいっす。
( ̄人 ̄)オ・ネ・カ・゛イ♪ヽ(* ̄〓 ̄*)ノ^☆ブチュゥゥ♪

296:デフォルトの名無しさん
02/12/13 20:41
ギャーーーーー

297:デフォルトの名無しさん
02/12/13 20:56
>>295
URLリンク(gcc.gnu.org)

298:デフォルトの名無しさん
02/12/13 21:15
>>295
ほれ

#include <stdio.h>
main()
{
printf("逝ってよし");
}


299:デフォルトの名無しさん
02/12/13 21:33
ウワァァァァァァヽ(`Д´)ノァァァァァァン!

300:ろうひ男爵
02/12/14 17:55
>>295
BASICで、

[ラベル:] if 比較式 goto ラベル
[ラベル:] print "メッセージ"
[ラベル:] 代入式

でよかったら、構文解析もほとんどいらないし簡単じゃない?
改行で行末にして、変数の頭にRをつけてR10とかすれば、
悩むところはないと思うよ。

パスカルだとラベルを読み込むときに細工すればLL(1)だよね、
そんなに難しくないはずだよ。
Cにしろパスカルにしろなにがしらの本を読んだ方が良いんじゃない?

言語はどのレベルの物を作ろうとしてるの?
それと、実行環境はスクリプトで中間言語に落としての実行環境?

301:デフォルトの名無しさん
02/12/14 19:56
>295
どうせ渡されたところで読めない、に 1 票。

言語処理系を作るのが初めてなら、とりあえず「UNIX プログラミング環境」でも
買ってきて hoc の実装追ってみれば?

302:デフォルトの名無しさん
02/12/14 20:38
つーかコンパイラのソースが見たいんならgccなりOpenWatcomなりがあるわけで。
それぐらい自分で探せヴォケつー。

303:デフォルトの名無しさん
02/12/14 21:05
bccが一番読みやすいなり

304:デフォルトの名無しさん
02/12/14 21:24
>302
いきなり gcc は厳しすぎ。

10年前だと「アルゴリズム+データ構造=プログラム」読めというところだが、
さすがに古いよな…。

305:デフォルトの名無しさん
02/12/14 22:29
URLリンク(www.amazon.co.jp)
はどうよ? インタープリタだけど。

306:デフォルトの名無しさん
02/12/14 22:31
たけーんだよバカ

307:デフォルトの名無しさん
02/12/15 00:57
専門書の類は、どれもそんなもんだ。諦めれ。

308:デフォルトの名無しさん
02/12/15 07:18
一応タダで読めるけどな。
URLリンク(i.loveruby.net)

309:ろうひ男爵
02/12/20 04:02
Cマガでコンパイラのことをやってますね。
演算子順位法とLL(1)をざらっと、LALRの概説です。
計12ページぐらいだったので、ここにいる方には物足りませんが、
読みやすかったので、人に聞かれた場合にはイイかも。

310:デフォルトの名無しさん
02/12/20 04:16
スレリンク(lobby板)
これよんでみれ!

311:デフォルトの名無しさん
02/12/20 04:44
えっ、bisonで生成したコードってVC++じゃ、
コンパイルできないのですか?
じゃあ、かわりにVC++で通るyacc互換でお勧めってあります?
仕事でも使うかもしれないので商用OKだとありがたいのですが。

312:デフォルトの名無しさん
02/12/20 04:56
GC(ガベコレ)についてちゃんと勉強してみたいのですが、
何かいい書籍はありますか?今は少しづつですが、gccに含まれている
Boehmのソースで勉強してますがなかなか思うように進みません。

VMにそのようなものが書かれているものがあればそれでもOKです。
よろしくお願いします。

313:デフォルトの名無しさん
02/12/20 06:48
>>312
とりあえず、>>305に紹介されてる本読むとか。

314:デフォルトの名無しさん
02/12/20 09:45
>>309
概説でしかないし、yaccはちょこっとだけしか載ってない。
作るための特集じゃなくて、基礎知識をお勉強するための記事だった。
という印象。

315:デフォルトの名無しさん
02/12/20 09:47
>>311
VCでコンパイルできなかったっけ?
まぁいいや。

URLリンク(www.kohsuke.org)
これなんかどうよ。使った事無いけど。

316:ろうひ男爵
02/12/20 13:09
>>314
さすがにあのページ数だと、1つでも掘り下げるのは難しかったみたいですね。
その中では演算子順位法が分かりやすかったと思います。

317:デフォルトの名無しさん
02/12/20 13:40
>>311
通るよ。

でもbisonで生成したコードにはGNUのテンプレートが含まれるので、商用はま
ずかったと思う。


318:デフォルトの名無しさん
02/12/20 22:12
>>312
書籍じゃないけど。
URLリンク(www.dcs.qmul.ac.uk)


319:デフォルトの名無しさん
02/12/21 01:10
>>317
出力されたコード見れば分るけど 1.24 以降は特例として GPL 適用外になってる。

320:デフォルトの名無しさん
02/12/21 08:09
>>319
あ、変わったんだ。サンクス。

321:デフォルトの名無しさん
02/12/21 18:09
bisonを使った宿題が出ているのですが、
ここでそのことについて質問してもいいでしょうか?

322:デフォルトの名無しさん
02/12/21 23:16
>>321

>yaccやlexの使い方やら言語仕様やらの話題。
だから、宿題丸投げじゃなきゃいいと思うよ。


323:デフォルトの名無しさん
02/12/22 01:11
>>321
 何か本を入手した?(購入するのも、図書館で借りるのも可。)もしまだなら、
   書名:UNIX Literacy Series Vol.12 UNIX yaccとlexの使い方
   発行所:HBJ出版局
   著者:田中正広
   ISBN:4-8337-8728-8
を入手して読んでみるといいYO!現在これ読んで某課題と格闘中(^^;
 で、そういった本を読んでから質問するのなら十分OKかと。>>322に同意

324:デフォルトの名無しさん
02/12/22 01:13
スクリプト言語でアセンブラ処理系は作れるのか?

325:デフォルトの名無しさん
02/12/22 01:28
>124
作れるよ

326:デフォルトの名無しさん
02/12/22 11:56
最近、Flex&Bisonをいじり始めました。
まだ、基本概念を勉強中なのですが、Flex&Bisonを使った「C++」用の
チュートリアルや簡単なサンプル実装などないでしょうか?
「C」での実装はいろいろあるんですが、自分はC++で実装したいの困ってます。
C++での解説も申し訳ない程度にはあるんですが、やっぱりサンプルがあると助かります。

327:デフォルトの名無しさん
02/12/22 12:04
スクリプト言語でアセンブラ処理系ってのもいみなさそうだな。
C言語をスクリプト言語として動くように作ったことはあるが。

328:デフォルトの名無しさん
02/12/22 14:09
>>327
意味あるよ

329:デフォルトの名無しさん
02/12/22 14:52
>>328
新規チップの設計用とか?w

330:デフォルトの名無しさん
02/12/22 15:38
>329
ユーザにアセンブラ処理系の機能拡張をさせる場合には、スクリプト言語を
そのまま使えるのは嬉しいかも。自前でマクロ言語作るのって手間だし、マ
クロの設計がダサいとユーザの不満もたまるし(w

ただ、往々にしてバイナリ入出力の扱いって C, C++ の方が楽なんだよね。

331:デフォルトの名無しさん
02/12/22 18:58
Cマガの特集見ました。
よしこれから面白くなるってところで、終わってました。
期待してたのにちょっと悲しい。

332:321
02/12/22 21:22
自己解決しました。
皆さん、ご迷惑をおかけしました。

333:デフォルトの名無しさん
02/12/23 00:22
URLリンク(catalog.compilertools.net)
このあたりはどうかな。


334:デフォルトの名無しさん
03/01/02 18:47
RTLでいいですか?

335:デフォルトの名無しさん
03/01/02 19:45
あははコンパイラを作るのって楽しいなぁ(´∀`)

336:デフォルトの名無しさん
03/01/02 19:48
YACC link
URLリンク(www2.dewa.or.jp)

337:デフォルトの名無しさん
03/01/04 01:51
>336
チクショー!!
まんまとだまされたぜ。

338:デフォルトの名無しさん
03/01/04 08:38
山形オートキャンパークラブ(´д`;)

339:中卒
03/01/04 14:37
ナカータ育男の本でわけわからん数式が出てきてるんですがどうにかなりませんか?

340:ろうひ男爵
03/01/04 20:02
>>339
頑張って、勉強するしかないのでは。
もしくは、より簡単な、今月のcマガの特集とか、
コンパイラの仕組み 渡邊 坦 著
とかはどう?

341:デフォルトの名無しさん
03/01/04 20:23
「モナーのコンパイラスレ出張所」ページでも作るか。
AAで語るFSAとか。ネタよろしこ。

342:名無しさん
03/01/05 10:35
>>339
その本は悪魔の本なので除霊する必要があります。早急にこちらへ
送ってください。
# 一万えんもする本なんて買えねーよ。

343:デフォルトの名無しさん
03/01/09 02:50
名スレの予感

344:デフォルトの名無しさん
03/01/09 03:32
>>53
いいんだよ。気にしないで。
まさゆきが嬉しそうだから。

286 名前:ひろゆき ?3SHRUNYAXA 投稿日:03/01/08 17:56 ID:MVMcp6tb
     ♪___
   ♪  ヽ=@=ノ¶  タイーホ
     ヽ( ・∀・)ノ   タイーホ
         (  へ)    ミンナ タイーホ
          く       タイーホ
   ♪  ___
     ♪ヽ=@=ノ ¶ タイーホ イッテヨシ
      ヽ(・∀・ )ノ  タイーホ
         (へ  )    オマエラ モウ
             >    ダメポ



345:デフォルトの名無しさん
03/01/09 04:15
ID:ZBsKvw39 (゚∀゚)アヒャヒャ
ID:fh6iaOXC (゚∀゚)アヒャヒャ

346:デフォルトの名無しさん
03/01/09 14:17
荒すな

347:デフォルトの名無しさん
03/01/09 14:21
test

348:デフォルトの名無しさん
03/01/09 14:32
自分が作るほどには2ちゃんねる掲示板は必要ないと。

まあ、遊びでしかないからね。

仕事の合間にやってるだけだろ。

349:デフォルトの名無しさん
03/01/09 17:48
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
──────────────
Keep your thread alive !
スレリンク(software板)l50
──────────────

350:デフォルトの名無しさん
03/01/09 20:46
>>200は原田先生に聞いてみた?

351:デフォルトの名無しさん
03/01/09 23:03
私はは匿名掲示板なんて無くてもいいのだが。
自分の発言に責任を持つのは当然だと思います。

352:デフォルトの名無しさん
03/01/10 00:56
これからは、心を入れ替えて良い子にします。
よろしくお願いします。

353:デフォルトの名無しさん
03/01/10 09:36
>>62
だれの目から見てもどうかではなく、裁判所が判断してどうかってこと
なんだよね。
だから、「名誉を毀損した」ってことが確定するのは、判決した瞬間なのよ、、、


354:デフォルトの名無しさん
03/01/10 09:57
>>62
だれの目から見てもどうかではなく、裁判所が判断してどうかってこと
なんだよね。
だから、「名誉を毀損した」ってことが確定するのは、判決した瞬間なのよ、、、


355:デフォルトの名無しさん
03/01/10 10:15
>某○○
こいつって・・・

356:デフォルトの名無しさん
03/01/10 10:48
ひろゆきの家に一人千円位寄付って事で送りつけるって手も有る!
遊び場作ってやって遊んでる奴の為に訴えられて金払わなきゃいけ
なくなったら止めたくもなる罠!

357:デフォルトの名無しさん
03/01/10 11:30
☆★☆
|・∀・)♪  おあよーおあよー!
|⊂ ノ
|` J    朝だす、みんな起きるだす!!

358:デフォルトの名無しさん
03/01/10 11:58
29■■■■■■■■■■■■■■□□
28■■■■■■■■■■■■■■■■■■■■■■□□□□□□□□
27■■■■■■■■■■■■□□□□□□□□
26■■■■■■■■■■■■■■■□□□□□□□□□□□
25■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□
24■■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□□□□□□
23■■■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□
22■■■■■■■■■■■■■■■■■□□□□□□□□
21■■■■■■■■■■■■■■■■■■■■■□□□□□□
20■■■■■■■■■■■■■■■■□□□□
19■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□
18■■■■■■■■■■■■■■□□□□□□□
17■■■■■■■■■■■■■■■■□□□□□□□□□□
16■■■■■■■■■■■□□□□
15■■■■■■□□□□□
14■■■■■□□
12■
09■
06■


359:デフォルトの名無しさん
03/01/10 12:50
おい!おまいら!

URLリンク(dailynews.yahoo.co.jp)

のアンケートで5を選びませんか? 目標50%

360:デフォルトの名無しさん
03/01/10 15:15
だからあれほどかちゅにしろとっ…!

361:デフォルトの名無しさん
03/01/10 16:41

それじゃあ匿名掲示板の長所を否定することと同義
じゃないか。俺の言ってることに賛成といいながら
IP記録にも賛成とはどういうことだ。

362:デフォルトの名無しさん
03/01/10 23:02
質の低い書き込みを減らしたいのに
質の低い板を生かしておくのはどうしてなんでしょうか?

363:デフォルトの名無しさん
03/01/10 23:07
全ての板ってことっすか?

364:デフォルトの名無しさん
03/01/11 00:25
今回の件で言論の自由さえも脅かされることになるかも
誰も何も言えない時代が来そうな伊予柑

365:デフォルトの名無しさん
03/01/11 00:34
匿名掲示板の意味を履き違えてる人が多くて萎える。

366:デフォルトの名無しさん
03/01/11 09:57
それ、なんかの話であったな。
たしか漫画だった。なんってやつだったけなぁ

367:デフォルトの名無しさん
03/01/11 10:30
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
──────────────
Keep your thread alive !
スレリンク(software板)l50
──────────────

368:デフォルトの名無しさん
03/01/11 11:22
ぬちゃんねる

369:デフォルトの名無しさん
03/01/11 11:53
事実無根で訴えます。

370:デフォルトの名無しさん
03/01/11 13:27
昔+にもいたぞ。
バカ丸出しだなw

371:デフォルトの名無しさん
03/01/11 16:12
もう、マンコとかアナルとか書き込めなくなっちゃうね!

372:デフォルトの名無しさん
03/01/12 00:20
マスコミや官僚・政治家・企業の秘密独占
そこからの権力維持
これを打ち破るのが巨大掲示板群
2ちゃんねるだ
警察は言論統制を目的に2ch攻撃の手を緩めない
個人情報保護法
当面は反米野郎を血祭りにあげるのだろう

373:デフォルトの名無しさん
03/01/12 00:30
6億って鯖実況?

374:デフォルトの名無しさん
03/01/12 10:44
判例がいっぱい出来たら
もうメガサイトなど誰もやらない・やれないんじゃないか?

375:デフォルトの名無しさん
03/01/12 15:20
>>1-343
荒らされる前までのリンク。

376:デフォルトの名無しさん
03/01/12 21:16
URLリンク(www.sponichi.co.jp)

もう予告は止めた方が良いだろうね。

377:デフォルトの名無しさん
03/01/12 21:18
法律上の「代理」の意味はスルーしたようです(w

378:山崎渉
03/01/13 18:56
(^^)

379:山崎渉
03/01/15 18:10
(^^)

380:デフォルトの名無しさん
03/01/20 12:53
マ板にあったギコBASICスレが御亡くなりになりました。
2000年の6月からの長寿スレ なのに残念です。


381:デフォルトの名無しさん
03/01/20 14:51
native compilerを作った奴いるか?

382:デフォルトの名無しさん
03/01/20 16:21
自分の時間で作れるのはスタックマシン中間言語インタプリタへのコンパイラまでだった




383:デフォルトの名無しさん
03/01/20 16:47
Scheme で >>382 みたいなコンパイラ、VM を作るのに参考になる論文とかあっ
たら教えてください。英語か日本語のやつで。処理系のソース見てるんだけど
難しくて。

384:デフォルトの名無しさん
03/01/20 17:52
処理系のソースから何かを得られないのなら、参考文献で
概要を理解することはできても永遠に「作れない」気がする。
というわけで、何のソースを見てるのか分からないけど、
ソース解析を侮らずにしっかりやるのがよいと思われ。

385:デフォルトの名無しさん
03/01/21 20:57
>>383
理論が先か実践が先か・・・

386:デフォルトの名無しさん
03/01/21 22:29
コンパイラの本を読んでいると、コンパイラを変換系、高級言語で書かれた
ソースコードを原始言語、コンパイラによって得られたアセンブラコードを、
目的プログラムと呼ぶ、と書かれているのですが、この3者の関係って、
変換系=アセンブラ、原始言語=アセンブラコード、目的プログラム=オブジェクトコード
にも当てはまるのでしょうか?

387:デフォルトの名無しさん
03/01/21 22:37
compilerはtranslatorの一種?

388:デフォルトの名無しさん
03/01/21 23:45
アセンブラみたいに1:1対応に近いものは
コンパイラとは呼ばないんじゃないかなあ。
よく分からんけど。

389:デフォルトの名無しさん
03/01/22 01:01
HTMLのようなタグ付き文字列を解析したいんだけど、
良い方法はありますか?

例えば、
<data><name>aaaa</name><size>2000</size></data>
のような文字列からaaaと200を取り出したいんですけど・・・
よろしくお願いいたします。

390:デフォルトの名無しさん
03/01/22 01:02
2000でした。申し訳ありません。

391:デフォルトの名無しさん
03/01/22 01:08
>>389
それはXMLのDOM使った方がいいんでないの?
だとするならスレ違いじゃないかねえ。

392:デフォルトの名無しさん
03/01/22 01:11
>>389
取り出すだけなら、
1. < が現れたら > まで読み飛ばす
2. > が現れたら < までを出力とする
3. ただし、半角スペース、タブ、改行は読み飛ばす

393:デフォルトの名無しさん
03/01/22 01:21
>>391
レスサンクスです。
私XMLのDOMっていうのはよく分からないんです。
下降再帰の手法でできるのかなぁ・・・とか思ったんで。

>>392
やはりそのようにやるしかないんでしょうか・・・
ファイルが複雑になったり、ファイルの形式が変わったりすると
パーサを書くのが嫌になってきてるんで・・・

クラスが10種類ほどあるんですが、その種類によって全部構造が違うんです。
ファイルから読み込むと同時に、オブジェクトに値をぶち込みたいんですけど
やはりこういうプリミティブなやり方しかないんですね・・・
明日のことを考えるとちょっと鬱になってしまいました・・・

394:デフォルトの名無しさん
03/01/22 01:26
>399
このスレの上のほうで一度でているが
上昇解析な手法がある。
URLリンク(sourceforge.jp)
再帰だと解析終わるまで戻ってこないから、
用途が限定される。こちらは一文字単位で
戻ってくるからエディタなんかでも使えそ。

395:デフォルトの名無しさん
03/01/22 01:36
>>394
なるほど、そういうのもあるんですか・・・
でもなんか散雑な感じで、夜中の思考力ではなんだか分かりませんでした・・・
スミマセン・・・・

つまりはxmlを解析してパースツリーを構築するものですよね?


396:デフォルトの名無しさん
03/01/22 01:41
>>395
そうでふ。
プログラム見れば分かるけどすげー短くて
ボーゼンとするほど単純。

397:デフォルトの名無しさん
03/01/22 03:08
>>394
それって上向き解析なの?オートマトンでツリー作ってるように見えるんだけど。

398:デフォルトの名無しさん
03/01/22 03:24
>>397
プログラムの書き方が上向き解析のスタックを
使う要領でノードを操作してる上向き風味。
オートマトンは字句解析だけ。

399:デフォルトの名無しさん
03/01/22 23:53
いや全然上向きに見えないなー。むしろ下向き?
どんどん部分木作ってるわけでしょ。
あとオートマトンも字句解析の一つ上で使ってるように見える。
どうでもいいけど。

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 だと思います。
そこは気合で行ってくれ。

612:コンパイラを勉強するには?
03/04/10 21:32
気合で行くわ。

613:デフォルトの名無しさん
03/04/10 21:38
どうも、仕事で簡易スクリプトを作ることになりそう。
基本的には、引数付の関数呼び出しと変数への値代入程度
で済ませたいけど、制御構造も作らざるを得ないかも・・・。

まあ、ちょうどよい勉強と思ってやってみるつもりです。


614:デフォルトの名無しさん
03/04/10 23:03
仕事なら既存のやつ使った方がいいんじゃねーの?

615:デフォルトの名無しさん
03/04/11 00:59
この時期だし研修用でそ

616:デフォルトの名無しさん
03/04/11 09:34
>>614
アプリケーション組み込み物のスクリプトだと既存という訳にはいかんよ、作るしかないです。
仮にソースが取得できたとしても、殆どがGPLに侵されたコードで再利用は不可能だからね。

617:デフォルトの名無しさん
03/04/11 12:46
>>616
perlもpythonもrubyもtclもGPL以外での利用を認めてるが。

618:デフォルトの名無しさん
03/04/11 13:17
>>617
たとえば
URLリンク(www.ruby-lang.org)
とかは?
近は過激な運動家がいたりして危ないから、そういう報流すのは良くないよ~

619:デフォルトの名無しさん
03/04/11 13:18
近→最近

620:デフォルトの名無しさん
03/04/11 13:37
つーかGNU謹製のguileですら非GPLソフトへの組み込みを認めていたりするのだが。

621:デフォルトの名無しさん
03/04/11 13:45
>>620
お仕事用というのだから、組み込みよりもソースの公開が問題なんじゃないの?

622:デフォルトの名無しさん
03/04/11 14:16
>>621
GPLと互換性のないライセンスのソフトに組み込める==ソース公開の義務がない(スクリプトエンジン以外は)

623:デフォルトの名無しさん
03/04/11 14:25
>>622
その解釈は結構きわどいと思うな・・・

624:デフォルトの名無しさん
03/04/11 14:46
スクリプトエンジンに手を加えずに使うんだったらいいんじゃない?
手を加えたくなってもフィルタで済ます。

625:デフォルトの名無しさん
03/04/11 19:46
>>618
> URLリンク(www.ruby-lang.org)
「または以下に示す条件で」って書いてあるじゃん。
rubyに関しては何度かMLでもそういう話があるが、結論としては
「迷惑をかけないでくれ」だけのはず。

ところで過激な運動家って何だ?


626:デフォルトの名無しさん
03/04/11 21:34
Qちゃん

627:デフォルトの名無しさん
03/04/12 00:43
>>626
過激だったのか。中の人も(ry

628:デフォルトの名無しさん
03/04/12 06:46
そろそろスレ違い気味なのでGPLスレでも建てて議論してくだちゃい

629:デフォルトの名無しさん
03/04/12 12:46
ここだな?
【殺しの】ライセンス【道で拾った】
スレリンク(tech板)


630:デフォルトの名無しさん
03/04/12 17:19
>>599
JavaCC使うなら、LL解析法だからLALR解析法を使うyaccは勉強しなくていいよ。
ちょっとした簡単な言語のインタプリタを作ったことがかなり前にあるんだけど、
簡単なインタプリタならそんなに難しくないはず。
LL文法とBNFがわかれば、JavaCCは使えるようになると思う。
言語処理系の本を1冊借りてきて、Let's Try!

631:デフォルトの名無しさん
03/04/12 17:23
追加。
ドキュメントが英語で分かりにくいから、
URLリンク(village.infoweb.ne.jp)
URLリンク(www.asahi-net.or.jp)
この辺を参考に。
大量にサンプルがついてるから、それを参考にして作るといいかも。

632:デフォルトの名無しさん
03/04/14 21:08
LL(k)らしいんだけど誰か使てる?
URLリンク(spirit.sourceforge.net)



633:デフォルトの名無しさん
03/04/16 23:30
func();
という長い関数があったとして、これを
func1();
func2();
func3();
と分割するようなプログラムを作ってみたいと思ってます。

なにか参考になる情報、またはすでにそういうものがあったら教えてください。
それでは宜しくお願いします。


634:デフォルトの名無しさん
03/04/16 23:41
>>633
リファクタリングで検索

635:デフォルトの名無しさん
03/04/16 23:43
>>634
それは手作業でやるのでは?

636:デフォルトの名無しさん
03/04/16 23:49
>>635
おまえは一体どう分割したいのかと(ry
まさか単純にぶった切るつもりか?


637:デフォルトの名無しさん
03/04/16 23:52
単純にぶったぎりますが、ちゃんと途中経過を保存・復元する部分を付け加えたいです。


638:デフォルトの名無しさん
03/04/17 00:11
>>633の説明だけで何を判れと言うのか。

639:デフォルトの名無しさん
03/04/17 00:20
>>637
ローカル変数を全部構造体に入れてfunc()で確保、
func1(),func2(),func3()にそいつのポインタを渡してアクセス。

真面目にやるならフロー解析が必要。

640:山崎渉
03/04/17 15:16
(^^)

641:デフォルトの名無しさん
03/04/19 08:22
荒したい策の保守あげ

642:デフォルトの名無しさん
03/04/19 15:36
荒らしたい 策

643:山崎渉
03/04/20 03:02
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

644:山崎渉
03/04/20 03:41
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

645:デフォルトの名無しさん
03/04/23 03:52


646:棄教者 ◆egKIKYO7cg
03/04/24 15:18
最近 Perl の Parse::Yapp というモジュールで遊んでいます。
Yacc の Perl 版です。
これで何かハックした神の報告を待つ。

647:デフォルトの名無しさん
03/05/23 14:24
♥ 

648:名無し@沢村
03/05/23 16:07
おまいらよ、コンパイラをつくっただけじゃ言語はできんぞ。
リンカの解説はないか?

649:デフォルトの名無しさん
03/05/23 18:15
>>84
超遅いレスだけど、漏れも同じところで詰まっている。
P82までは何とか理解できたけど、LL(1)文法の理論説明になると急に難しくなる。
かなり前のページで定義したことが突然出てきたりするし。

コンピューター学科や数学科出身の人を前提にしているのだろう
漏れは情報学科出身ではないから読んでいてつらい・・・

しかも時間の空いているときに少しづつ読むような読み方では、前回読んだことを
覚え続けるのが困難。

650:649
03/05/23 18:26
First集合,Follow集合,Director集合は、
ある文法がLL(1)文法かどうかを調べるためだからとりあえず読み飛ばすことにします・・・

651:649
03/05/23 18:30
>>648
去年、"Linkers & Loaders" (John R.Levine著 ポジティブエッジ訳・オーム社)を読んだのですけど、
説明がかなり大雑把で実装レベルで直接役立てるのはちょっと無理な気がしました。

652:デフォルトの名無しさん
03/05/23 18:31
大したこと書いてないので、斜め読みで十分。
とにかく、実際に作ってみるのが○

653:652
03/05/23 18:34
中田育男の「コンパイラ」本のことね。

654:649
03/05/23 18:48
>>652-653
レスありがとうございます。
私は情報工学は素人なので、斜め読みするほどの能力はありませんが、
理論から導き出される結論自体はそれほど難しいとは思っていないので
なんとか最後まで読んで見ます。

655:逆コンパイラ
03/05/23 20:16
EXEファイルをC言語に戻す逆コンパイラソフトを教えてもらえませんか。

656:デフォルトの名無しさん
03/05/23 20:22
戻す?

657:デフォルトの名無しさん
03/05/23 20:38
>>655
URLリンク(www.itee.uq.edu.au)
URLリンク(www.backerstreet.com)

658:逆コンパイラ
03/05/23 20:47
>>657
上の一番のHPのdcc Decompiler はどこからダウンロードしますか

659:デフォルトの名無しさん
03/05/23 22:32
>>658
Table of Contentsの中に思いっきり「配布」という単語があるわけだが。
辞書とか翻訳サイトつかってでもContentsの一覧ぐらいは一通り嫁。

660:デフォルトの名無しさん
03/05/26 23:13
↓VMにも色々あるようですが、どういう方式でしょうか?
memory to memory
SICD machine
chemical abstract machine
categorical abstract machine
while-if machine

661:649
03/05/27 15:02
中田育男氏のコンパイラを読み終わって、PL/0'のソースコードをざっと眺めていたのですが・・・
字句解析と構文解析以外は普通のプログラミングですね。
結局はyacc&lexの勉強をしろということでよろしいでつか?

662:棄教者 ◆egKIKYO7cg
03/05/27 15:51
>>661
そりゃ天下のGCCだって構文解析器はBisonを使って書かれているからね。


663:デフォルトの名無しさん
03/05/27 16:02
>>661>>662
若者ならyaccは無視してantlrをやったほうがいいでしょうか?


664:649
03/05/27 16:24
>>663
漏れも良く分からないけどJava環境ならANTLRになるのでは?
漏れはC言語使うのでyaccが魅力的でつ

665:デフォルトの名無しさん
03/05/27 16:30
>>663
若者ならまずは手書きから始めるのが良いですよ。
言語にもよるけど、再帰的降下法はいちばん単純でわかりやすい。

パーサジェネレータを使う場合にも、一度手書きパーサを経験しておかないと
なにがなんだかわからない、という人が多いようです。


666:デフォルトの名無しさん
03/05/27 16:46
どうも。やってみます。ただ、23歳はもう若者じゃなかったかもしれません。

667:デフォルトの名無しさん
03/05/27 17:52
あっというまに

668:649
03/05/27 17:53
>>665
手書きの経験が必要でつか?
漏れは若者じゃないからいいや・・・

669:デフォルトの名無しさん
03/05/27 17:56
手書きの方が速い

670:デフォルトの名無しさん
03/05/27 18:05
昔、手書きでCコンパイラを作るとかぶちあげて、全く後が続かず、
入院したことにして結局うやむやにした香具師がいたな。


671:デフォルトの名無しさん
03/05/27 18:10
ただのツール使いはヘタレ。

672:名無し@沢村
03/05/27 20:29
おまいらよ、コンパイラは字句解析と構文解析だけではないぞ。
いいか、コンパイラはな、字句解析、構文解析、意味解析、最適化、リンカ、ローダとどれが欠けてもダメよ。わかるか?
おまいらに、コンパイラをつくる能力があるか?

673:デフォルトの名無しさん
03/05/27 20:53
アセンブラなら作ったことあるぞ。
コンパイラからアセンブリコード吐かせればOKだな。

674:デフォルトの名無しさん
03/05/27 20:59
最適化はあくまでオブションだし、ローダはOSの仕事だがなw

675:デフォルトの名無しさん
03/05/27 21:14
>>672
大半の人が作りたいのはスクリプトのコンパイラでないの?
それなら、字句解析、構文解析、意味解析だけで何とかなるのでは。

676:デフォルトの名無しさん
03/05/27 21:30
>スクリプトのコンパイラ
バイトコードコンパイルという意味だよね?


677:デフォルトの名無しさん
03/05/27 22:40
>>676
そうっす

678:デフォルトの名無しさん
03/05/27 22:50
リンカはリンカだろ・・

679:デフォルトの名無しさん
03/05/27 23:07
>>678
Delphiのよーに、コンパイラがリンクまでやってくれると便利なときがあるよ。
同じシンボルがエクスポートされた.objも、別々のユニットから{$L}で取り込めば呼び分けられるし、
リンクエラーとか名前の衝突とかも、リンカじゃなくてコンパイラのエラーになるので
原因となるソースコード上での位置がわかるし。

680:デフォルトの名無しさん
03/05/28 05:29
>>674
正直、最近のマシンは最適化してやらないと実力が出ないから
コンパイラ/インタプリタでの最適化は重要だし、
処理系のコード的にも非常に大きな部分を占めてるんだが。

681:デフォルトの名無しさん
03/05/28 05:36
>>680
追伸:
オプションなのは最適化なんてしなくていいってコトじゃなくて
様々な最適化技法がプログラムの性質によってそれぞれ有効度があり、
あまり効かなかったり却って遅くなるような場合に外したりパラメータを調節するのが目的。
(昔はデバッグを簡単にする目的もあったけど最近のデバッガは優秀だから
最適化されていてもデバッグできたりするらしいね。)

682:デフォルトの名無しさん
03/05/28 06:00
ほう。最近のデバッガは、最適化で消えた変数も追いかけられるようになったりするの?

683:デフォルトの名無しさん
03/05/28 07:37
消えたといっても、スタックローカルからレジスタに移っただけだろ? だからレジスタにある間は追いかけられる。

684:デフォルトの名無しさん
03/05/28 10:30
最適化について知らないなら、まず調べてから書いてください。

685:デフォルトの名無しさん
03/05/28 11:32
681が言ってるのはインライン展開とか実行順変更程度なら大丈夫という話
682が言ってるのは完全に消えた変数の話
683が言ってるのはレジスタ最適化の話
684が言ってるのは・・・・?


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