「コンパイラ・スクリプトエンジン」相談室 3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG前スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)
関連リンクは多分 >>2-8 あたり
0002デフォルトの名無しさん
NGNG色々なツールの紹介
http://catalog.compilertools.net/
コンパイラおよびコンパイラコンパイラに関する本
http://www.ulis.ac.jp/library/Kanpo/Vol14No3/nakai.html
コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml
スクリプティング言語資料室(仮) (リンク)
http://www.kt.rim.or.jp/~kbk/
Compiler Construction
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html
Compiler Construction (1997)
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html
再帰下降構文解析の手法
http://member.nifty.ne.jp/nakamula/recurs.htm
情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html
正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm
コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/
0003デフォルトの名無しさん
NGNGLinks and Selected Readings
http://www.gnu.org/software/gcc/readings.html
NASM Manual (翻訳は途中まで)
http://guriponn.at.infoseek.co.jp/nasmdoc0.htm
Intel(R) Literature Center (Intelのドキュメントはこちらから)
http://www.intel.co.jp/jp/developer/design/litcentr/index.htm
インテル(R) Itanium(TM) プロセッサ
http://www.intel.co.jp/jp/developer/design/itanium/family/index.htm
Streaming SIMD Extensions 2 (SSE2)
http://developer.intel.com/software/products/college/ia32/sse2/index.htm
0004デフォルトの名無しさん
NGNGUNIX板
yacc & lex
http://pc.2ch.net/test/read.cgi/unix/1031801314/
Lex and YACC primer/HOWTO (邦訳)
http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
Turbo Pascal Lex/Yacc
http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html
Jim Roskind's LALR(1) C++ Grammar
http://www.empathy.com/pccts/roskind.html
Flexと Bisonを同時に使う
http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html
KITE_ASM (yacc,lex)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/lex/
Cygwin
http://www.cygwin.com/
GNU utilities for Win32
http://unxutils.sourceforge.net/
0005デフォルトの名無しさん
NGNGANTLR(非yaccのパーサジェネレータ)
http://www.antlr.org/
JavaCC(Java Compiler Compiler)
https://javacc.dev.java.net/
http://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html
¬<><∪∪ (notavacc)
http://ne.cs.uec.ac.jp/~koto/notavacc/
boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
http://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
http://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0006デフォルトの名無しさん
NGNGGC FAQ -- draft
http://www.iecc.com/gclist/GC-faq.html
A garbage collector for C and C++
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
0007デフォルトの名無しさん
NGNGkikyou.info (吉里吉里というゲームのスクリプト)
http://kikyou.info/
tiny C コンパイラ (C)
http://www.watalab.cs.uec.ac.jp/tinyCabs.html
Portable Object Compiler (Obj-C >> C のトランスレータ?)
http://users.pandora.be/stes/compiler.html
自作コンパイラの部屋(PL/1, Pascal等)
http://www.tokumaru.org/
0008デフォルトの名無しさん
NGNG●コンパイラ 原理・技法・ツール 1&2
http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
通称ドラゴンブック。バイブル。
●コンパイラ構成法 原田 賢一
http://www.amazon.co.jp/exec/obidos/ASIN/4320029224/
http://www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード)
●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
一冊で済ませたい人へ。
●コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
最適化がメイン。
●コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
薄い奴(185p)を読みたい人に。
0009デフォルトの名無しさん
NGNGshuJIT (JITについて)
http://www.shudo.net/jit/index-j.html
ギコBASIC
C言語版
http://page.freett.com/gikob/gikobw00047.zip
C++版
http://page.freett.com/gikob/gbtl-beta3.zip
計算機能論ホームページ
(消えているので、どうしても見たければarchive.org等を利用する事)
http://buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/index.html
YACC link
http://www2.dewa.or.jp/rock/camp/yacc/whatyacc.htm
0010デフォルトの名無しさん
NGNGソース読んで学習する用途に、って事でkmyaccなんかも入れて良かったかも。
Compilers and Compiler Generators も迷い迷って結局入れてません。
(http://www.scifac.ru.ac.za/compilers/)
spiritの位置も少し迷ったのですが、一応パーサジェネレータ「等」って事で。
リンクは一応チェックしたつもりですが、間違ってても勘弁して下さい。
以上。
0011デフォルトの名無しさん
NGNG>(dat落ち)
この部分はいらなかったな。失敗。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG( _(
(.___.)
|| l
|| l、-‐ー、ー‐- 、
,.|| l ヽ ,、-‐ー、
iヽ ./ , i `、
l::::::i .,' / _,、-‐つ l l ',._,、i
l::::::l i ,' / ,、-'"ノ ,'i l ! l ヽ::l
l:::r.'lr/ /ノリ リノi l l iノヽ
レゝ/ / ニ・ニ=lノノリ、
i / ,、-' . . ll|l i ll,、-'´
/ /、 ヽフ ノ lノ | ま、また 立てやがった・・・
,-' ./l lノ. `‐、.___ ,、-'´l |l
,、-'´ /_rl .lヽ``‐、 ,-'"i、l l l
,、-'i / ̄ l lヽ\ i l ノ l l l
i l / i .l lヽ r-、 ノ l lヽ、
l .l / i 丶 |l `‐/ ゝソ\/ ノ 7、
!、 ヽ / ヽ ヽ / / ヽ_ ノ i / i
ヽ ``/ ヽ, / / \ l l
 ̄l !/ ヽ l
0015デフォルトの名無しさん
NGNGサンクス、自分も立てようかと思ってたんだけど、リンクが揃えられなくて・・・
しかし、いきなりの素敵な洗礼ですな。
>>13-14
殆どこの板を使った事のないド素人はすっこんでろっつーの
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG,、‐'''r." `゙ー、
,:'.:::::,イ". .: ...:.::i_;、、、;;_;|; ゙L
_,,.-‐''ノ ヽ;、‐"´,,,.........,,__`ヽ:i `,
,、‐'''""´,,、-‐f .:.::/,:-'"..:..::::::::::::::.゛:‐、',i.,'
く-‐''''ゞ"´, .:;;;;゙.、..:.:::/´".,.::./.:;ィ:::;;,イ:;':::::;::...'、ヽ.
. `'ヽ、 . :ー-ァ;;;;;;;ト'":;;|::;/:;.'::::;;;'.';;ィ;':;/i::::;;i;:::;;:,';.`;"''ァ
゙''‐-、 z-;::l:.:::::;;!、:';;'_;;.'__;;:'゙/"' .l:::;;ハ.;;':l;::l,、‐'"
|..::`'''‐i..::::;;;|/ィ ' =-、.,''. l'/、_r';'゙l;r'
l::::|:::i:;;| .::::;;l: ,''';:/ ゙ r=''';-!.i/'
. !:::l!::ll:;;i .::;;;;l::..'‐-' ,';/゙/;:l:|
',:i.!::!l::;'; :|:;;i:: ..:: :. ..''::,'|;;:|:l
'!.';l. ';.l゙、l::;;!、 ,. ,,イi;;,';;'
. ゙ '! '!';;l:..゙''‐; 、_,,,、.,;i'.i':/ l:/リ
厂 ';! ̄!トト,ィ_'リ、''_.'' '
,r.:'´`゙'= 、r'";;';ヘ_〉'';:ヽ':,
/.:::.;;.;.;;;;;`、ヽ.:.:::;;ri'ヽ_;,'., 'Y':,
/..:.;.;.;.;;;;.:.;;;;`、.'l''"´!';__;!/ .人 ',
,'...:.:;..;;;;_;;;-‐‐;,' '-‐' ..:r' ゙ヽ', ',
'.;-‐‐'".:;;.;.;.;;;;ヽ. ‐‐-'',':.. .::.:ノ:..ノ
`"'''‐、.:;.;...;;;:.;;',::. ./`、;,_;;r'"''゙゙i
ヽ.:;;.;.;;;;;;l/;:.:.:;.;;;;、'l;;:;;.;.;:.',
0019デフォルトの名無しさん
NGNG洋書だけど重要そうなのでこれも貼っとく。
21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
ペーパーバック版: http://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
ハードカバー版: http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
0020デフォルトの名無しさん
NGNGやべ、前スレ最後に出た一番重要な奴を忘れてた。
しかし高いなあ……。
あと書き忘れましたが、
beroさんとこの機械翻訳ベースの資料は軒並み消えてしまったので
NASM Manualのリンク先をFreeDOSのぐりぽんさんの所へ変えています。
まあ気合い入れて英語読めば問題無いんですが。
0021デフォルトの名無しさん
NGNGすなわち、通称「赤ドラゴンブック」でコンパイラのこと一般を勉強しているものです。
最近、「ドラゴンブックも内容が古くなってきた」という意見を耳にしたのですが、
どこらへんが古くなってきているのか教えて下さい。
0022デフォルトの名無しさん
NGNG1985年の本ですから古くなるのも無理はないでしょう。
あの本以降に発展した技術には、思いつくものだけでも
SSA
CDG/PDG
JIT
関数型言語の実現法
などがあります。しかし入門用としては今でも十分な内容だと思います。
dragon bookが終ったら、次は最適化に的を絞った本を読めばいいでしょう。
日本語なら>>8の中田先生の本あたりでしょうか。
0024デフォルトの名無しさん
NGNG21世紀ドラゴンブックまだコネー。
0025デフォルトの名無しさん
NGNGというのはおいといてw
bisonとも限らないのですが、単項の負を処理するときに、
%left NEG
...
| '-' exp %prec NEG {...}
とよく書きますけど、厳密には %left でなくて %right じゃないでしょうか?
たとえば、---5というのは、普通-(-(-5))だと思うんですが...
どこかおかしいですか???
0026デフォルトの名無しさん
NGNG単項演算子に優先順位指定は必要ないのでは?
文法の書き方にもよるけど、普通は
unary_expr:
postfix_expr
| '*' unary_expr
| '&' unary_expr
| '-' unary_expr
| '~' unary_expr
| '!' unary_expr
...
てな感じでうまく行きますよ。
002725
NGNG情報ありがとうございます。
でも、そうなんですか、知りませんでした。
いま、アスキーのbison入門という本を見ているですが、
どこにもそんな記述がありませんでした。
ふう〜、奥が深いですね。
ちなみに、
%right '='
%left '+' '-'
%left '*' '/'
%left NEG → 単項-用です。
%right '^'
みたいに、指定しています。
0028デフォルトの名無しさん
NGNG%left で ---5 の場合だと、(--) を処理せんあかんから、
0029デフォルトの名無しさん
NGNG…知らない人がこのレスを見たら意味不明だろうな
0030デフォルトの名無しさん
NGNGどちらも、正しく ---5 を処理できる。
で、生成されたcソースを見てみたが、なんと(ry
0031デフォルトの名無しさん
NGNGそれってなんデすか?
0032デフォルトの名無しさん
NGNG21st Century Compilers
http://www.amazon.co.jp/exec/obidos/ASIN/0321131436
Amazon.co.jpによれば
> 発売予定日は 2003/12/15 です。
> ただいま予約受付中です。
0033デフォルトの名無しさん
NGNG%left/%rightは同じ順位の演算子がならんでいるときに生じるshift/reduce
conflictを解決するためのもの。単項演算子が前置のみなら、そもそも
conflict はおきないので、どちらでもかまわないです。
前置と後置の両方があるときは、%left/%rightが効いてきます。
たとえば、~という演算子が前置にも後置にも使えるような構文を考えます。
expr : '~' expr | expr '~'
このとき、%left '~' なら、~x~は(~x)~と解釈され、%rightなら~(x~)と解釈
されます。
003427
NGNGなるほど!明解な回答をありがとうございました。
ちなみに、それぞれに指定したbisonソースの変換出力(C出力)
を比べてみましたが、両者は実質的に同じものでした。
重ねてお礼を申し上げます。
ありがとうございました。
***
ところで、rubyのソースコードについての書籍があると聞きましたが、
これはインタプリター等の理解&構築にはよい本でしょうか?
ちょっと高めですが、参考になるのなら、と思っています。
0035デフォルトの名無しさん
NGNG確か初めの章だけは既に公開されてるよね。
0036デフォルトの名無しさん
NGNGあんなのに金払う意味無いって。
どうしても読みたいなら図書館行ってこい。
0037デフォルトの名無しさん
NGNG煽りじゃなく、できれば理由を教えてくれ。
おれの場合、あの本読んでいて苛々するんだが、理由を明確に
説明できるほどのスキルがないんで、他の人の意見も聞きたい。
0038デフォルトの名無しさん
NGNGなるほど、HPみたら、そんな感じに宣言されてますね。
しかも、この12月でほぼ1年たつ模様。
ちょっと期待。
0039デフォルトの名無しさん
NGNG>>8 にある本ではダメなの?
0040デフォルトの名無しさん
NGNGlex & yacc に変わるような本を書いてほしい。
0041デフォルトの名無しさん
NGNG佐々 政孝さんの本は出版が少し古いんですね。
0042デフォルトの名無しさん
NGNG全部コンパイラ系の本、
rubyはインタプリター
0043デフォルトの名無しさん
NGNGコンパイラはネイティブコードを生成することが多くて、
インタプリタはしないことが多いくらいで
やることは大体一緒だと思うけど。
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG違うのは最適化くらいか?
0047デフォルトの名無しさん
NGNG同じように使えるのは、字句解析器ぐらいか?
0048デフォルトの名無しさん
NGNGなんで字句解析だけ?
0049デフォルトの名無しさん
NGNGC言語にはコンパイラとインタプリタが存在します。
本当に、同じように使えるのは字句解析だけだと思いますか?
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGコンパイラとインタプリタを備えた C の処理系なんてあったっけ?
大抵どっちかだから、共通している部分が多い事の事例にならないような。
こんな事が出来たら嬉しい人も多いだろうに。
#! /bin/env gcc <-- shbang で呼び出せる
//load Xlib <-- ライブラリのロードはコメント文で ==> コンパイラに通す時も透過的
#include <X11/Xlib.h>
int main() {
// 以下略
// 以上妄想
0054デフォルトの名無しさん
NGNG作らない(作っても意味無い)だけだろ
0055デフォルトの名無しさん
NGNGだから、共通している部分が多い事の事例にならないだろ。
0056デフォルトの名無しさん
NGNG同様な構文を持つ言語のインタプリタとコンパイラで
構文解析が共通化できない理由は何ですか?
0057デフォルトの名無しさん
NGNGそこには異論は無いです。細かい突っ込みスマソ。
0058デフォルトの名無しさん
NGNGCommon Lisp もだけど。
0059デフォルトの名無しさん
NGNG源流がLISPだからね。
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGSchemeがAlgolから受け継いでるのって何?
0064デフォルトの名無しさん
NGNGlexical scopeじゃないかな?
0065デフォルトの名無しさん
NGNG整理可能であるが、現実問題としては、そうはならないということだろう。
0066デフォルトの名無しさん
NGNG高いなぁ〜と感じた。
(2000円までだったら、速攻でかったんだけど)
とりあえず、公開待ちます。
貧乏人で、スマソ
0067デフォルトの名無しさん
NGNG2000 円で買えるコンピューター書籍はそれほどないと思うが?
なにが売ってても買わないの?
0068デフォルトの名無しさん
NGNGみんな安いよw
0069デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4844317210/
良さそうな本じゃん。Perlでこういう本ってあったっけ?
0070デフォルトの名無しさん
NGNGPerlはソースコードが多すぎる。
0071デフォルトの名無しさん
NGNGそれってinfoで全文ローカルで読めるやつのこと?
007268
NGNGinfoは使ってないのでよくわからんが、そうかもしれない。
実はもれも、本文はどこかで(英語???)読んだ記憶があった。
でも、手元に書籍であると、またちがうんだな、これが!
0073デフォルトの名無しさん
NGNGたしか、利益の一部は FSF に寄付されるんじゃなかったかな。
ところで、参考文献としてこの本は既出?
Icon 自体が面白い言語なので読んで損はないと思う。無料だし。
The Implemetation of the Icon Programming Language
http://www.cs.arizona.edu/icon/ibsale.htm
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGそうそうあったあった。どこかにサンプルコード落ちてたよ。
英語版だけど
0077デフォルトの名無しさん
NGNGコードが英語なのは普通じゃ…。
0078デフォルトの名無しさん
NGNGflexは読みやすかったけど、bisonは読みにくかった。
やはり、難しいからですかね???
0079デフォルトの名無しさん
NGNGすいません、ふと疑問に思ったんですけど、
正直、このスレってとっても
(良く言えば)→高度&専門的
(悪く言えば)→難しいばっかりで、地味&マイナー
な領域ですよね?
みなさん、本職は何をされているんでしょうか?
やはり、プロのコンパイラorスクリプト屋さんなんでしょうか?
0080デフォルトの名無しさん
NGNGプロのコンパイラ屋(コンパイラだけ作っててメシが喰える人)ってかなり少な
いと思う。(OS屋はもっと少ないけど。)
他の仕事でミニ言語が必要になったので書いてるとか、大学で論文書くために
作ったとか、あるいは趣味でやってる人がほとんどじゃないでしょうか。
僕はたまたま今仕事でコンパイラを書いていますが、100%のコンパイラ屋では
ありません。
0081デフォルトの名無しさん
NGNGゲーム屋も多いと思う。
0082デフォルトの名無しさん
NGNGどうにもならんからね。
0083デフォルトの名無しさん
NGNGネタw
008474
NGNGもし知っていたら教えてください。
0085デフォルトの名無しさん
NGNG008674
NGNG008774
NGNGPostgreSQLとかのソースを見ればいいのかしらん。
008885
NGNGだからオライリーのサイトにあるよ。
http://examples.oreilly.com/lex/
008974
NGNGきゃーありがとうございます。
0090デフォルトの名無しさん
NGNGおお〜、すごい!
本職&プロですか!
ちなみに、どんなコンパイラ書いてるんですか?
差し支えない程度で結構ですので、
0091デフォルトの名無しさん
NGNG独自のインストラクションセットを吐き出すCコンパイラだけど、
80氏と同じく本職じゃないために、とりあえず動くコンパイラを作っただけ。
最適化とかは必要最低限くらいにしか要求されていなかったし。
俺はフリーのプログラマだけど、
お金をもらえてこういう楽しい仕事が出来るときが一番嬉しいね。
0092デフォルトの名無しさん
NGNGおお〜、「フリーのプログラマ」で、しかもコンパイラまで
書けるのですか!
なんか括弧イイ!ですねぇ〜!
わたしも、フリーではあるのですが、フリーはフリーでも(ry
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNGコンパイラ書くのはそんなに難しくないよ。
漏れも大学や専門学校でプログラム勉強したことなんか一度もないけど、
コンパイラを一回書いたことがある。
そのときのネタは、スクリプトを解釈して整数、浮動小数、文字列の計算をしながら、
その結果を GP-IB (RS232 の遠い親戚みたいなもの) に送り込むヤツね。
キーワードは Bison/Flex (またはYacc/Lex)。
これらのツールが食べられるような特殊な書式さえ覚えれば、
サルでも※簡※単※な※コンパイラなら書ける。
# ただし、サルにはGCCは書けない。
0095デフォルトの名無しさん
NGNGまだ ※簡※単※?
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGUNIX USERのGCCプログラミング工房とか読んでると
すんげーキツそうなんですが。
0100デフォルトの名無しさん
NGNGこんなんとか。
0101デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています