[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 10/19 19:42 / Filesize : 260 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

「コンパイラ・スクリプトエンジン」相談室13



1 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:49:02 ]
プログラミング言語処理系の開発に興味のある人達のスレッドです。

字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

過去スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/
3 pc5.2ch.net/test/read.cgi/tech/1070089173/
4 pc5.2ch.net/test/read.cgi/tech/1100097050/
5 pc8.2ch.net/test/read.cgi/tech/1106129164/
6 pc8.2ch.net/test/read.cgi/tech/1115335709/
7 pc8.2ch.net/test/read.cgi/tech/1129287390/
8 pc8.2ch.net/test/read.cgi/tech/1131273918/
9 pc8.2ch.net/test/read.cgi/tech/1135082582/
10 pc8.2ch.net/test/read.cgi/tech/1146844753/
11 pc11.2ch.net/test/read.cgi/tech/1160879890/
12 pc11.2ch.net/test/read.cgi/tech/1188688416/
関連リンクは多分 >>2-10 あたり

6 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:53:35 ]
★参考書籍

・コンパイラ 原理・技法・ツール 1&2
 www.amazon.co.jp/exec/obidos/ASIN/4781905854/
 www.amazon.co.jp/exec/obidos/ASIN/4781905862/
 通称ドラゴンブック。バイブル。
・コンパイラ構成法 原田 賢一
 www.amazon.co.jp/exec/obidos/ASIN/4320029224/
 www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード)
・プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
 www.amazon.co.jp/exec/obidos/ASIN/4000103458/
 一冊で済ませたい人へ。
・コンパイラの構成と最適化 中田 育男
 www.amazon.co.jp/exec/obidos/ASIN/4254121393/
 最適化がメインだが、構文解析からコード生成までの基本事項も解説されている。
・コンパイラの仕組み 渡邊 坦
 www.amazon.co.jp/exec/obidos/ASIN/4254127081/
 薄い奴(185p)を読みたい人に。
・21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
 www.amazon.co.jp/exec/obidos/ASIN/0321131436/
 まだ出ていない。
・スモールコンパイラの制作で学ぶプログラムのしくみ
 www.cbook24.com/bm_detail.asp?sku=4774121770
 初心者向けの優しい解説本。


以上

7 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 21:07:26 ]
>>1

8 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:12:16 ]
>>1 乙これはポニーテールだからなんとかかんとか

テンプレ追加

PEG(解析表現文法),Packrat Parser
ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95

9 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 20:21:44 ]
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

10 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:49:04 ]
スクリプトエンジン作ってみたい。
お勧めのサイト教えて

11 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:13:10 ]
>>10
数レス前も読めないのか…

12 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:35:19 ]
やっぱいいや

13 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:13:29 ]
@wiki 更新しときました。

14 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:15:27 ]
「★字句・構文解析」に追加。

caper
naoyuki.hirayama.googlepages.com/caper.html





15 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 04:46:47 ]
>>10
サイトでないけど
www.amazon.co.jp/スクリプトエンジン-プログラミング-坂本-千尋/dp/4797347627/ref=sr_1_1?ie=UTF8&s=books&qid=1233603981&sr=8-1

これで最低限の知識は得られると思う

16 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 17:32:19 ]
パーサジェネレータは検索すれば山ほどひっかかるけど、
スキャナージェネレータは少ないね。
すぐに見つかるのはLex, Flex, JLex, JFlexくらいか。

UINTVAL = "[0-9]+";

のように書けばスキャナークラスを生成してくれる、
お手軽スキャナージェネレータは無いのかな?



17 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:05:33 ]
>>16
つ「正規表現」

18 名前:デフォルトの名無しさん [2009/02/07(土) 15:58:49 ]
各コードジェネレーターが生成したコードの処理速度を比較結果を掲載しているサイトってないの?

19 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:22:18 ]
ここで聞いていいのかわからんけど、ActionScriptのDSL処理系ってない?
ActionScriptっていちいちコンパイルせなあかんやん?
面倒なんよね
オンザフライで処理してくれるDSLあると便利何やけど、emebedded向けなライブラリないかな?

検索してるんだけど、全然でてこないんだ

20 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:19:58 ]
>19
むかしActionScriptで書かれたJavaScript実装で、fiberみたいなこともできるのがあったけど、
ググッたら出てこなかったorz...


21 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:21:40 ]
>>16
マイ・オートマトンブームを起こすしかない。


22 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:54:30 ]
>>16
PEGでいいじゃん

23 名前:19 mailto:sage [2009/02/08(日) 01:06:23 ]
みなさん、ありがとう。

wonderfl関係あさってたらいろいろ発見しますた。

wonderflでポケコンでシューティング | wonderfl build flash online
wonderfl.kayac.com/code/338bb2c5f0058713460610b8794d4efa4f80309a

2009-01-08 - Simple Inspiration
d.hatena.ne.jp/keim_at_Si/20090108

Cannon macro language
www.yomogi.sakura.ne.jp/~si/SolidImage/cml/index.html

ゲーム用のちっこいDSLがあればなーと思ってたので調度よかった・・・
wonderflのはまあコンパイルはしないといけないけど、文字列を外部にだせばどんだけでもいけるよね

24 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 22:34:36 ]
Xtalの作者ってバンダイナムコゲームスで活動してるんだな…



25 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 02:01:57 ]
保守

26 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:16:19 ]
jp.ne.cappuccino.keisuken.lex
が字句解析してくれるみたいです。
cappuccino.jp/keisuken/java/lex/docs/specification.html

27 名前:16 mailto:sage [2009/03/25(水) 05:11:37 ]
>>17
>>21
>>22
>>26
何気なく書いただけなのに、暖かいレスさんくす。

他にもJavaの場合には、標準ライブラリのStreamTokenizerを使っても
字句解析らしきことができるようです。

www5b.biglobe.ne.jp/~psoft/lesson/StreamTokenizer.html



28 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 20:03:50 ]
XtalのPEG採用って、言語仕様側じゃなくて、アプリ側だったのか。

言語仕様側だったらセミナーにはぜひ行ったところだったんだが。

29 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 20:31:43 ]
Xtalスクリプトのコンパイラ自体はC++でがりがり書いてるからな。
PEGパーサを組み込みライブラリとして持つとのことようだが(詳しくはソースコード参照)

30 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:05:00 ]
コンパイラつーか、パーサね。

パーサジェネレータ使わずにがりがり書いてるね。腕力のある人はうらやましいわ。

31 名前:転載 mailto:sage [2009/04/05(日) 09:38:58 ]
IGDA Japan chapter - ニュース
www.igda.jp/modules/news/article.php?storyid=1622
13:10 - 14:00
「ごく簡単な並列処理スクリプトシステムの設計と実装」
□講師
小久保啓三(HAL東京)
(株)スクウェアでの代表作「ロマンシング・サガ」「FF5」「クロノトリガー」「FF7」。クロノトリガーとFF7では、スクリプトシステムの設計と実装に携わる。

14:00 - 14:50
「『サクラ大戦X』でのスクリプト運用事例」
□講師
秋葉晴樹(セガ)
株式会社セガ 第三CS研究開発部 リードプログラマ。
代表作は、サクラ大戦シリーズ、のび太の新魔界大冒険、ブレイザードライブ。
サクラ大戦シリーズは3から参加、主にADVパートのプログラムを担当。

15:20 - 16:10
「汎用スクリプト言語Xtal 設計と実装」
□講師
石橋立宣(バンダイナムコゲームス)
NBGI プログラマ。
PSP塊魂のエンディングミニゲームやシステム周り担当。
PSP太鼓のADV部分やシステム周り担当。
趣味で、C++組み込み用スクリプト「Xtal」を開発。

16:10 - 17:00
「Squirrelスクリプトを使った実装と活用」
□講師
神尾隆司(スクウェア・エニックス)
Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル の開発に関わる。
北出智(スクウェア・エニックス)
PS2 聖剣伝説4、Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル 等の開発に関わる。

32 名前:デフォルトの名無しさん [2009/04/07(火) 12:55:27 ]
誘導されてきました。よろしくお願いします。

自作ソフトで使うマクロの文法を、拡張しようと思い、
lexやらyaccやらbisonやら調べ始めたのですが・・・難しい・・・

例えば呼び出し前に新たなトークンを追加したり、関数定義みたいなことが
出来るようにするサンプルを探しているのですが、見つかりません。

・自作ソフトはプラグインで拡張可能になっていて、マクロのプラグイン名
 を自前で解析していますが、区切り文字の検出とか括弧の扱いとか、自力
 では限界なので・・・プラグイン名を追加トークンにして、ライブラリお
 任せ一発という形に出来ればと思っています。
 (プラグイン辞書の関数ポインタ呼び出しみたいな形)

・マクロの中で関数マクロの定義が出来るようにといいのですが、
function hoge(a, b, c) = {
age; sage(a, b); uge(c);
}
hoge(1, 2, 3);
 こういうのを実現しているサンプルなどありましたら教えてください。


33 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:20:14 ]
現状、どういう風に構文解析とかしていて、どういう風にマクロを実行したり
プラグインを呼び出したりしてるわけ?

34 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 14:32:15 ]
今の時点の文法はシンプルです。プラグイン名と引数、セミコロンのみ。
 hoge[(...)]; [...]
プラグイン名を配列に積み上げて、一括でマクロ構文を読み込み、
セミコロンで分割して、参照の配列に積み直し。
動かすときに、それぞれのインターフェースを順に呼び出す形です。

これだと代入操作ひとつ出来ないので、何か良い方法を探しています。



35 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 15:06:31 ]
関数名だろうが変数名だろうが,言語組み込みじゃないトークンは
トークン化の時点では何も考えず全部「識別子」一括りでおk

36 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 15:21:59 ]
そもそも、「変数」といったものをどうやって実現したらいいのか、とか、
スクリプトを読み込んで、関数定義があったら何をして、関数の呼び出しが
あったら何をするのか、とか、そういうことがそもそも全くわかってないのでは?

なんか配列って言ってるけど、リストとか木とかをポインタで操るコードは
書ける? それができないと本格的な処理系は無理。

37 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 15:35:53 ]
目先にとらわれて本質が見えてない感じがする
高レベルな言語を触ったりしてみてもいいんじゃない

38 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 16:24:26 ]
>>35
なるほど。最後にまとめてチェックすればいいという考え方ですね。

>>36
その通りです。yaccやbisonのサンプルを探してみても、文書を
解析するところまでで、その先を実際にどうやっているかの例が
なかなか・・・。

唯一良さそうな例を見つけました。
>ttp://www.ibm.com/developerworks/jp/linux/library/l-pirates4/index.html
生のソースもとれるようですし、これで勉強してみます。
ホントはもう少しシンプルな例があればいいのですが・・・

39 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 16:53:02 ]
yacc 電卓、で検索すれば簡単な電卓の例がいくつも出てくると思うが...

40 名前:デフォルトの名無しさん [2009/04/07(火) 17:02:05 ]
yacc/lexを自作するところから始めるのがお勧め。

41 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 07:11:35 ]
LLVMの簡単な使い方ってどこ見ればいいのですかね?

42 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 08:21:46 ]
>>41
llvm.org/

43 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 13:17:44 ]
これはワクテカじゃないか?

InfoQ: LLVMおよびRubyの総まとめ:llvmruby、yarv2llvmおよびregexpllvm、Rubinius
www.infoq.com/jp/news/2008/10/llvmruby-roundup-yarv2llvm
InfoQ: MacRuby 0.5にLLVMをベースにした高速VMが搭載される
www.infoq.com/jp/news/2009/04/macruby-llvm-speed

44 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 03:35:20 ]
おー、世の中にはこんな便利なものがあるのか。
たとえ苦労してでも勉強して使いこなしたいところだな。



45 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 18:14:29 ]
>>38
コンドーさんの「yaccによるCコンパイラ」がおすすめ
・・・なんだけど、プレミアがついちゃって高いんだよなあ

46 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 12:04:35 ]
>>38
yaccやbisonでないと駄目なのかい?
古くさくて使いにくいから、今からパーサを書くなら
他にいいジェネレータがありそうだけど。

C++、C#、Javaならばcaperがお薦め。
(Javaジェネレータはまだレポジトリから落としてビルドする必要がある)

ttp://naoyuki.hirayama.googlepages.com/caper.html
ttp://code.google.com/p/caper/updates/list

どうしてもyaccやbisonがいいなら、以下を読めばいいよ。

ttp://guppy.eng.kagawa-u.ac.jp/2006/ProgLang/bison-1.2.8/bison-ja_toc.html

47 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 14:37:19 ]
>>46
日本語の文書!!

いや実は挫折してました。ごめんなさい。がんばります。

48 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:29:20 ]
紙メディアで出てるGNUのBison解説とかどうかな?

49 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 22:46:38 ]
>>48
以下のことですな。

www.amazon.co.jp/Bison入門-チャールズ-ドネリー/dp/4756130658

内容は>>46の一番下と同じなのだけど、絶版で値段が高騰しているのが問題かな。
紙媒体だと電車の中などで読めるのがいいんだけどね。


50 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 23:31:19 ]
そういえばこんなのが出るとか

Flex & Bison - by J Levine (2009/8/31)
www.amazon.co.jp/dp/0596155972

51 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 08:10:34 ]
> 内容は>>46の一番下と同じなのだけど、絶版で値段が高騰しているのが問題かな。

うわわわ。絶版してたのか。

52 名前:46=49 mailto:sage [2009/04/29(水) 10:37:05 ]
>>47
> yaccやbisonのサンプルを探してみても、
> 文書を解析するところまでで、
> その先を実際にどうやっているかの例がなかなか・・・。
>
> 日本語の文書!!

日本語で書かれていて意味解析以降も
全部載っているドキュメントを探してきた。

ecs.kuis.kyoto-u.ac.jp/isle/le3b/siryo.ps

Flexの解説 (GNU公式ドキュメントの日本語訳) もあった。

Flex入門
ascii.asciimw.jp/pb/bookmart/pdf/47561/4756130976.pdf



53 名前:52の続き mailto:sage [2009/04/29(水) 10:41:59 ]
読みやすいように、要点だけ説明しておこう。
まずは字句解析から。

まずはソースファイルを読み込み、字句解析にかける。
字句解析では文字列を切って、種類を表すタグを付ける。
(タグはenumなどの定数)

例えば、

int main(void) {return 0;}

ならば、字句解析の結果は
elem(INT, "int");
elem(ID, "main");
elem(PAREN_L, "(");
elem(VOID, "void");
elem(PAREN_R, ")");
elem(BRACE_L, "{");
elem(RETURN, "return");
elem(INTLITERAL, "0");
elem(SEMICOLON, ";");
elem(BRACE_R, "}");
のようになる。
(elemはC++のクラスのつもり)

引数は左がenum定数で右は文字列ね。
一行を1つの構造体 (またはクラスやタプル) に入れると便利。
(Flexだと種類と文字列を別々に取得するんだったかな?)



54 名前:52の続き mailto:sage [2009/04/29(水) 10:55:29 ]
字句解析の結果を構文解析にかける。
上の例だと、ベタに書くと以下のようになる。

Program
: INT ID PAREN_L VOID PAREN_R BRACE_L RETURN INTLITERAL SEMICOLON BRACE_R
;

「=」の右側には、どういう種類の文字列がどういう順で並んでいるかを書く。
これだと本当に上の例しか読めなくなるので、
例えばVOID型で中身の無い関数も定義できるようにすると、以下のようになる。
(「|」は「または」という意味, 複数のパターンのどれでもいい場合に使う)

Program
: INT ID PAREN_L VOID PAREN_R BRACE_L RETURN INTLITERAL SEMICOLON BRACE_R
| VOID ID PAREN_L VOID PAREN_R BRACE_L BRACE_R
;

これで、以下のコードも読めるようになった。

void main(void) {}





55 名前:52の続き mailto:sage [2009/04/29(水) 10:58:05 ]
しかし、こうやって全部のパターンを網羅していくときりが無いよね。
だから、部分的に抜きだして共通化する。
上の例だと、

Program
: ReturnType ID PAREN_L VOID PAREN_R BRACE_L Body BRACE_R
;

ReturnType
: INT
| VOID
;

Body
: // 空の場合は何も書かない
| RETURN INTLITERAL SEMICOLON
;

こんな具合に、共通でない部分を追い出してやるわけだ。
# void型なのにreturnしている関数や
# int型なのにreturnしていない関数も読めるようになったことに注意。

構文解析では、一度に完璧な定義を書こうとせずに、
少しずつ解析できるパターンを増やしていくとやりやすいと思う。


56 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 17:46:16 ]
>>30
LLVMもbisonパーサから手書きのパーサにかえたんだっけ。
案外、手書きの方が開発しやすいのかな?

57 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 15:51:13 ]
構文の規模や性質や、頻繁に規則をいじるかどうか、などなどによる。

58 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 01:30:41 ]
FlashのActionScriptで自作言語を作ろうとして
ttp://www.hakkaku.net/articles/20080226-154
ttp://www.hakkaku.net/articles/20080307-158
を先日から見ているんだが、字句解析の部分がさっぱりわからん。
構文解析のkmyaccの部分は良く分かるんだが、lexにあたる部分を
手書きしているらしく、なんか自力でトークンを探して分割したり
クラスをゴリゴリ作ったりしている。正直ムリポ。

その辺に落ちてるlex/flexで代用したいんだが、どうやればいいんだろう?
もしそれがムチャなことなら、「kmlex」的なものはないだろうか?

59 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 04:26:19 ]
このレベルがわからないんじゃ
言語なんて作るの無理

60 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 07:28:20 ]
AS3.0以降はRegExpあるから、自作してもすぐ出来るだろ

61 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 07:50:10 ]
RegExpで字句解析するの?

62 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 08:10:18 ]
RegExpで字句解析しないの?

63 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 08:23:56 ]
な・・・RegExpで字句解析しただと!?

64 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 09:11:48 ]
パース、構文木生成、式解釈、ニーモニック生成、コード出力をやるだけだ。
慣れたらゼロからでも数日で実装できる。



65 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 01:25:57 ]
LLVMを勉強したいです
書籍ってありますか?

66 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 02:14:25 ]
本家のドキュメントがよい。

67 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 09:20:42 ]
本家にkaleidoscopeっていう処理系を作りながらllvmを憶えるチュートリアルがあるよ。

68 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:32:34 ]
>>61
「文字列の先頭からアルファベットに引き続く、空白までの連続部分のマッチ」に
該当すれば、それを予約語として認識し、文字列からその部分を取り除いて
再度先頭から…を繰り返しているんだろう。

>>62
getChr()で一文字づつ文字を読み込んで、「空白の次にアルファベットだから
このトークンは予約語」というアタリの付けかたをしているんだろう。

69 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 17:16:46 ]
ドラゴンブック二版の邦訳買ってきたよ。すごい紙薄い。

70 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:16:41 ]
いい紙なのかな。TAOCPみたいな?

71 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 00:45:48 ]
バラシテスキャンしないと

72 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:22:08 ]
up2.viploader.net/pic2/src/viploaderf159403.jpg

バーコード邪魔

73 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:49:06 ]
[これはひどい]

絵本とかでバーコードがシールになってて、買ったらはがせるのあるけど、
そうしてほしいところだな。技術書だから無理に決まってるけど。

74 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:53:56 ]
なんか本当に剣と魔法の挿絵になってね?



75 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:01:57 ]
楯が Syntax Directed Translation
剣が LALR Parser Generation
鎧が……読めにゃい
竜が Complexity of Compiler Design かな?

76 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:24:16 ]
拡大
up2.viploader.net/pic2/src/viploaderf159408.jpg

77 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:32:24 ]
Data Flow Analysis か

78 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 00:32:32 ]
コンパイラ第2版ってどこ改訂されたの?

79 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 02:55:37 ]
全面的に

80 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 03:02:46 ]
読みやすくなってる?

81 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:40:02 ]
>>75
もう画像流れてるわ
第一版と同じで鎧は syntax directed translation じゃなかろうか

default を「省略時解釈」とか、そういうのが無くなってるといいんだが

82 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:24:48 ]
> 第一版と同じで鎧は syntax directed translation じゃなかろうか
それは盾だって>>75

> default を「省略時解釈」とか、そういうのが無くなってるといいんだが
往年の教科書では定番だったよねそういう訳

83 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:28:33 ]
最近の本は「既定の…」になるの?w

84 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:09:37 ]
ごめん、data flow analysis だな



85 名前:デフォルトの名無しさん [2009/06/06(土) 01:03:33 ]
検索でここまで辿り着きました。
宜しくお願いします。

現在、オブジェクト指向のクラスの実装などが、
コンパイラでどのように実現されているのかに興味を持ち、勉強中です。

コンパイラの本も何冊か買い、簡単に目を通しましたが、
殆どが手続き型言語のコンパイラの解説で終わっており、資料の少なさに困っています。

自分で探した範囲で、オブジェクト指向型言語のクラスの実装等に触れられている本は、
『コンパイラの構成と最適化』(朝倉出版)しか見つけることが出来ませんでした。

『コンパイラ―原理・技法・ツール』の第2版版が最近出版されたようなので、
書店で立ち読みをして見ましたが、オブジェクト指向言語に関しては、
余り記述がされていないようです(短時間立ち読みをした程度なので、見落としてるだけなのかもしれませんが…)。

上で記述した以外に、オブジェクト指向言語の具体的な実装について書かれたコンパイラ等の書籍などがご存知の方がいらっしゃいましたら、本の題名等をご教示頂けると幸いです。

86 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:21:19 ]
なぜそんなにオブジェクト指向にこだわるのか理由がよく分からないな。
まあ、単純にオブジェクト指向を特徴としている言語の実装が知りたいなら、
ソースコードを入手して眺めるのが一番早いだろう。
RubyやPythonなんかでどうだ?

87 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:24:05 ]
>>85
gcc読んでここでその成果全部書けよ
そしたら教えてやるから

88 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:40:21 ]
>>85
"Rubyソースコード完全解説"

89 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:43:11 ]
『いまどきのプログラミング言語の作り方』に、ちょっとだけ載ってたかなあ

90 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 03:16:32 ]
>>86
OOPにこだわる切欠は、自分で作ったCのプログラムを逆アセンブルして、アセンブリ言語の勉強をしていた時、JavaなどのOOP言語では、どのようにソースコードがバイトコードなどに置き換えられ、クラス等がどの様に実装されているのかに興味を惹かれたためです。

PythonやRudyに関しては、恥ずかしながら名前しか知りませんでした。
ソースコードもダウンロードしてみました。
再度の質問になり恐縮ですが、これはコンパイラのソースコードではないかと考えていますが、その様な理解で良いのでしょうか?
どちらにせよ、自分の勉強不足は明らかなので御指摘を元に、勉強してみます。
アドバイスをありがとう御座います。

>>87
まだ勉強を始めたばかりで、恥ずかしながらgccについては、知りませんでした。
gccについて、これから勉強してみたいと思います。

>>88
検索して見つけることが出来ました。
Amazonで買おうかとも思いましたが、プレミアが付いているようで、とても高いですね。

Webで本文が見られるみたいなので、それを見させていただきます。

ご教示ありがとうございます。

>>89

Amazonでも今は取り扱っていないようですね。
評判の良い本のようなので、購入を検討してみます。

ありがとうございました

91 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 03:31:26 ]
>>90
RubyやPythonは、オブジェクト指向のスクリプト言語だ。
現代のスクリプト言語はいったんバイトコードにコンパイルされてから実行される形式が一般的で、
従ってコンパイラと呼びうるすべての要素がソースコード内に含まれている。

そしてそこから先(バイトコードをどのように動かすかの仮想マシンの実装)もあるわけだ。
いい教材になるわけで。

92 名前:90 mailto:sage [2009/06/06(土) 10:21:50 ]
>>91

そうなんですか。
その事については、知りませんでした。
コンパイラの動作をソースコードを読むことで確認出来るというのは、
私のように学習を目的としている者にはありがたい話です。

Rudyは書籍やWebでの資料が充実しているようなので、これから調べてみます。

ご教示、ありがとう御座いました。

93 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 11:25:22 ]
>>92
Rubyソースコード完全解説という神書籍があってだな、絶版だが、初版が無料公開されているのでオススメ

Rubyソースコード完全解説
i.loveruby.net/ja/rhg/book/

94 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 19:53:04 ]
>>90
参考までに、Javaのバイトコード仕様はSunのサイトで閲覧できる (英語)。
SunのJDKに付属しているjavapとかで逆アセンブルできるよ。
他にEclipse用のプラグイン「Bytecode Outline plugin for Eclipse」とかでも。
Eclipse用だと「Classfile Inspector」(有料 99Euro)ってのもあったけど、いまググったら
サイトが消滅したようだ。



95 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 07:45:39 ]
速攻MinCamlコンパイラ概説

ttp://min-caml.sourceforge.net/



96 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 10:54:28 ]
>>85
英語は読めますか?

97 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 11:07:20 ]
あんまり道を示しすぎてもパンクすると思うんだが。
85とは関係なしに紹介したいサイトがあるなら、俺が消化するから構わず続けてくれ。

98 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 11:54:40 ]
www.amazon.com/Advanced-Compiler-Design-Implementation-Muchnick/dp/1558603204/
www.amazon.com/Modern-Compiler-Design-D-Grune/dp/0471976970
この辺りの概説書にはOOの実装のこと"も"解説してる。
www.amazon.com/Programming-Language-Pragmatics-Third-Michael/dp/0123745144/
はOO関連のコンセプトの整理がうまい。実装についても書いてある。

全般的な概説書はやはり記述がプアになるので、C++に限れば一番詳しいのは、訳書の
www.amazon.co.jp/dp/4810181014
これだけど、今は絶版なので、
www.amazon.com/Inside-Object-Model-Stanley-Lippman/dp/0201834545
原書を読めばいい。
ARM(注解 C++リファレンスマニュアル)も詳しく説明している。これも絶版なので、
www.amazon.com/Annotated-C-Reference-Manual/dp/0201514591

Objectのslot accessでC++と全く異なるアプローチで有名なのが、
code.google.com/intl/ja-JP/apis/v8/design.html#prop_access
Selfの元の論文が、
research.sun.com/self/papers/implementation.html
にある。JITと相性がよい。

もちろんaccessが遅くていいなら他にも幾らでもやりかたはある。
Objective-Cなんかはhash引いている。


99 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 13:07:35 ]
普段はレキサ・パーサレベルの話しか出ないのに、堰を切ったようにいろいろ出てくるな
実はみんな、教えることに飢えてたのか?

100 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:40:03 ]
lexerかparserより先に進んだ質問者がなかなかいないからじゃないかな

101 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:19:24 ]
じゃあ俺がお前らの意見を聞いて
万人が理解できるlexerとparserの
サンプル書いてやる

ということでまず何をすればいいぉ?

102 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:00:12 ]
文法決めれ

103 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:09:06 ]
>>101
かっこに対応した四則演算とかどうだ

104 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:58:23 ]
四則演算はネット上にゴロゴロしてるからイラネ



105 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:18:37 ]
forループとif-else-endifの構文サンプル

106 名前:90 mailto:sage [2009/06/09(火) 22:05:49 ]
>>93

教えて頂いて、ありがとう御座います。
絶版の資料が無料で公開されているのは、ありがたいですね。

>>94

Javaのバイトコードにも、興味があります。
Java仮想マシン仕様は、日本語の書籍でも出版されているので、今度読むつもりでした。
仮想マシンの概念は、コンピュータのアーキテクチャとも密接に関わってくる事項なので、興味深いですね。

>>96

正直、英語はまともには読めません。
日本語の資料で勉強するのに限界を感じているので、
英語の勉強をやり直そうと思ってます。

>>98

今まで知らなかった資料が多いので、参考になります。
英語の資料が多いですね。
コンパイラの勉強の前に、英語をやり直して、
資料をまともに読めるようになってから、勉強をし直すべきかもしれません。


コンパイラの勉強は、思っていたよりもしんどそうですが、
今まで知らなかった資料を紹介していただいたので、今後の勉強の指針が見えた気がします。
教えていただいた資料を参考に、頑張ってみます。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef