『コンパイラ・スクリプトエンジン』 相談室 2
■ このスレッドは過去ログ倉庫に格納されています
0001nanashi de fault
NGNG>yaccやlexの使い方やら言語仕様やらの話題。
前スレ
【コンパイラ・スクリプトエンジン】相談室
http://pc.2ch.net/test/read.cgi/tech/981672957/
前スレアーカイブ(かちゅ用)
http://www.1me.jp/hp/prg_c-s_lab
前スレに張られたリンク + x
>>2-6
0002デフォルトの名無しさん
NGNGコンパイラおよびコンパイラコンパイラに関する本
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/
計算機能論ホームページ
http://buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/index.html
0003デフォルトの名無しさん
NGNGLinks and Selected Readings
http://www.gnu.org/software/gcc/readings.html
NASM Manual
http://www.bekkoame.ne.jp/~bero/docj/nasm/nasmdoc0.htm
インテル(R) Itanium(TM) プロセッサ
http://www.intel.co.jp/jp/developer/design/itanium/index.htm
インテル(R) Pentium(R) 4 プロセッサ関連マニュアル (宝庫です)
http://www.intel.co.jp/jp/developer/design/pentium4/manuals/index.htm
Streaming SIMD Extensions 2 (SSE2)
http://developer.intel.com/software/products/college/ia32/sse2/index.htm
0004デフォルトの名無しさん
NGNGTurbo 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)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/
KITE_ASM (lex)
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デフォルトの名無しさん
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/
0006デフォルトの名無しさん
NGNGThe Odd Stage (吉里吉里というゲームのスクリプト)
http://www.din.or.jp/~glit/TheOddStage/
tiny C コンパイラ (C)
http://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/
0007デフォルトの名無しさん
NGNG0008nanashi de fault
NGNGたまに、よくわかんないのとか、リンク切れ、
その他重要じゃないのが入ってたんで添削しました。
あと、Intelとか張ったのはおれのしわざです。
では後誰か頼みます。
0009デフォルトの名無しさん
NGNGhttp://www.intel.co.jp/jp/developer/design/litcentr/index.htm
00101
NGNGすげぇ
つかそれだけ紹介すりゃ良かった・・・
0011デフォルトの名無しさん
NGNGhttp://gaogao.moemoe.gr.jp/
0012デフォルトの名無しさん
NGNGhttp://sourceforge.jp/projects/dmonkey/
0013デフォルトの名無しさん
NGNG(´×`)
0014デフォルトの名無しさん
NGNGミッフィー?
0015デフォルトの名無しさん
NGNG(;゚×゚)
0016s
NGNGhttp://www.computing.surrey.ac.uk/research/dsrg/fog/
ページ中程のCxxSrc.tgz/CxxSrcNT.tgz
0017デフォルトの名無しさん
NGNG再帰下降使うと似たような関数いっぱい書かないといけなくなるし
gccとかはどんなアルゴリズムなんですか?
0018デフォルトの名無しさん
NGNGgccのソースを見ろ。
〜〜〜 終了 〜〜〜
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG優先順位と結合規則とオペレータの関係をテーブル化する方法がある。
正式名称がなんなのかは知らないけど。
関数のポインタを使う。
似たような関数いっぱい書かないといけないのは同じだけど
メンテがし易くなる。それも気持ち程度。
0022デフォルトの名無しさん
NGNG演算子順位法かな?
基本的にはループ1つで実装できたので、「似たような関数いっぱい」とは
違うかも。
0023デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
日本語で読める本では、結局これが一番(だと思ってる)。
バイブルだから・・・としり込みしないで読もう!
この本がコンパイラ本1冊目であっても十分読める(と思う)。
●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
2分冊うざい、という人にはこの本。
●コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
悪くはない(偉そう)。この本は最適化がメイン。
0024デフォルトの名無しさん
NGNG>●コンパイラ 原理・技法・ツール 1&2
>http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
1巻はオススメしない。
LL(1)とかLR(N)とかはイラン。
0025デフォルトの名無しさん
NGNG●コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
という本もある。ただし、サイズの割に値段が手軽じゃない罠
0026デフォルトの名無しさん
NGNG再帰下降用のパーサー・ジェネレータもあるよん。
0027デフォルトの名無しさん
NGNGhttp://www.antlr.org/
0028デフォルトの名無しさん
NGNG再帰下降(手書き)とyaccでは、どちらが速いルーチンが作れますか?
yaccだという噂ですが、、、。
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGどう考えてもyaccでしょ。
0031デフォルトの名無しさん
NGNG再帰呼び出し/復帰1回より配列読み出しとgotoの方が速いだろ
うな。
ただ、Javaみたいに関数(メソッド)呼び出しが速くて配列操作が
比較的遅い言語だとどうかなあ…
まあ、yaccっていうからCに限るのかな。
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGjavaccとかいうのがあったはず
0034デフォルトの名無しさん
NGNGJavaCCはLL(k)だね。
0035デフォルトの名無しさん
NGNGYet Another Compiler Compilerだから別にCとは限らない。
0036デフォルトの名無しさん
NGNG普通マルチスレッドで設計するでしょうか?
もう1つの言語スレでちょっと話題になってたのに、
今は全然違う方向に逝ってるからキケナイ...
0037デフォルトの名無しさん
NGNG>GUIを利用した仮想マシン
VMなのにGUIに依存するの?
Smalltalk見たいなもの?
0038デフォルトの名無しさん
NGNGいや、スクリプト言語を作りたいんだけど、
言語と作るって言うのもなにかな〜と思って。
003938
NGNG要はHSPみたいなものを作りたいのです。
0040デフォルトの名無しさん
NGNGもう少し志を高く持とう。
004138
NGNGコンソール感覚でGUIアプリ作れたらなとか考えてるだけだしなー
大体作ること自体面白そうだし。
0042デフォルトの名無しさん
NGNG>コンソール感覚でGUIアプリ作れたら
意味がわからん。
0043デフォルトの名無しさん
NGNGいや、目標(HSP)が引く杉ってこと。
004438
NGNG>>コンソール感覚でGUIアプリ作れたら
>意味がわからん。
それもそうだ。
たとえば、
list = file_search("C:\My Documents\*.jpg");
foreach(list, itr){
image = image_load(itr);
tile_draw(image, 48, 32);
}
ぐらいの記述量でフォルダ内の画像一覧を表示するアプリが書けるとか。
いや、たとえだけど。
>43
>いや、目標(HSP)が引く杉ってこと。
そうか?
そうか。
うーむ。
004642
NGNGよく見てなかった。スマソ
0047デフォルトの名無しさん
NGNGLISPは構文解析いらないから楽だよ
0048デフォルトの名無しさん
NGNGいらないってこたあないだろ。
たしかに構文は簡単だけどさ。
0049デフォルトの名無しさん
NGNG環境を作るのってむずかしい?
0050デフォルトの名無しさん
NGNG最低限の構文は必要かと。
むちゃくちゃ楽なのは確かだけど。
あとはマクロで構文唐。
0051デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGFORTHは?
と言ってみるテスト。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGうっさいハゲ
0057デフォルトの名無しさん
NGNGパーサー担当は君に決定!
0058デフォルトの名無しさん
NGNGところで、GCの無いLISPって理論的に可能でしょうか。
0059デフォルトの名無しさん
NGNG無限にメモリを消費し続けてください
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG0064HELP!あ〜にゃにゃにゃ〜にゃ〜
NGNG0065逝って良しの1
NGNG0066デフォルトの名無しさん
NGNG再帰下降なら楽じゃん。
0067デフォルトの名無しさん
NGNGGNU bison ならすぐ見つかるだろ。
0068デフォルトの名無しさん
NGNG森氏のkmYaccならVectorで検索すれば有るんじゃない?ソース付きで。
この人のcppとmakeは自分なりに手直しして未だに使わせてもらってる。
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGCマガの2000年5月号をよめばわかります。
0072デフォルトの名無しさん
NGNGそういうやつは生理的に氏ね!
0073デフォルトの名無しさん
NGNGGNU のソースが生理的に嫌いだってのは、分からんでもない。あのインデントは
読みたくないよ。(というわけで GNU indent 通して整形してから参照してる俺)
0074デフォルトの名無しさん
NGNGむしろライセンスの方じゃないの。
0075デフォルトの名無しさん
NGNG73 の皮肉と諧謔を込めた文意を読み取れ。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNGちなみにこの人、LSI-Cコンパイラの作者な。
yaccもcppもmakeもその一部。
007868
NGNG宗教じみたライセンスも理解できんので
避けてるのです。生理的に。用途違うかな。
>>77
普段LSI-C試食版使ってるので、cppで気づきました。
LSI-Cは一人の天才プログラマが作ったって噂があったけど、
本当だったんですな。あこがれます。
0079真68
NGNG>>77
知っている。今はLSI JAPANの取締役らしいな。
bisonのジェネレータが出力するソースは見にくくて吐き気がするが、
kmyaccのは綺麗で分かりやすい。実用にも問題無いし、学習用にもお勧め。
俺はbisonから完全に乗り換えたよ。テーブルの小ささに惚れた。
008064
NGNG008173
NGNGはずれ(w
>>78
> 宗教じみたライセンスも理解できんので
GPL は理解しておいて損はないと思うよ。
俺は GPL の趣旨には賛同しないので、自分が公開するソフトのライセンスは
GPL にしない。でも GPL で公開されているソフトには有用なモノも多いし、ライ
センスを理解して使えば GPL に汚染されずに旨い部分だけ頂ける。
(ちなみに個人的には BSD、仕事絡みではクローズドな人です)
0082デフォルトの名無しさん
NGNGこの辺のところを、もう少し詳しく教えて( ゚д゚)ホスィ
008364
NGNG0084デフォルトの名無しさん
NGNGFisrt Follow Directorの計算アルゴリズムが良くわからん。
オーム者コンパイラ(中田育男 8刷 p85)
誰かわかりやすく教えてくれ。
0085.
NGNG0086
NGNG過去ログ。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNGだけど、検索しても、どうしても見つかりませんでした。
知ってる人いますか?
0089デフォルトの名無しさん
NGNG7行スレのことか?
0090デフォルトの名無しさん
NGNGExpert Cに載ってる奴じゃない?
http://www.ioccc.org/1990/dds.c
0091デフォルトの名無しさん
NGNGこれ、VC6でコンパイル通らないんだけど、何だったらできる?
0092デフォルトの名無しさん
NGNGstruct C {
C (f)(); /*Cを返す関数f*/
C(); /*コンストラクタ*/
};
というので、{}のなかの 'C'
まで読んだ時点でそれがclass-nameかdeclaratorかどうやって判断しているの?
ひとつだけの先読みではわからないですよね。LALR(1)とかいうのとはちがうのですか?
0094デフォルトの名無しさん
NGNG読んだ時点で判断してるわけないと思うが。
そこは意味解析で判断する部分。
構文解析の段階だと
C();
は「戻型が省略された関数C」とでも解析されるんだろう。
structの定義('}')が終わった段階で、
初めて意味解析が走ると考えたほうが自然。
0095デフォルトの名無しさん
NGNGstruct の } 終わってから解析って、そりゃ構文解析でほとんど何もやってない
に等しい気が……。struct C の段階で「C」を型名としてシンボルテーブルに登
録しておいて
C (f)();
→ 識別子 '(' 識別子 ')' '(' 識別子 ')' ';'
ぐらいにバラしてスタックに積んでおき、この段階で意味解析に掛けると思う。
構造体の宣言が終わらなくても ';' 単位でばらせば、十分に解析可能だよね。
少なくとも型名やら名前空間やら、必要な情報は事前に出てるわけだし。
(そうでもない?)
0096デフォルトの名無しさん
NGNG適当な中間の非終端記号を入れて判定を遅延させて、
十分読み込んだところで判定を確定する、という話じゃないの?
009796
NGNG009892
NGNGCの場合、構文解析の段階でtypedefとenumを辞書引きすればよさそう(試してない)
だったので、C++もその延長でいけるかとおもっていたのです。
LALR(2)でならそれでもいけるかな?
0099デフォルトの名無しさん
NGNGC は型名と変数名は異なる名前空間で定義されるから(型名と重複する変数名
を定義可能)、その方針でやる場合には
型名を読み込んだ
→ 字句解析側に、次にアルファベット列が来たら identifier を返すように設定
と、構文解析・字句解析での情報のやりとりが必要になるかと。
010092
NGNGtypedef名だけは型名と変数名の両方に登録されるようなので、
typedef t int;
int t();
なんてのはエラーにしないといけない(?)のでどっちにしても
意味解析でも構文解析じみたことはしなければいけないみたいですね。
0101100
NGNGtypedef int t ○
■ このスレッドは過去ログ倉庫に格納されています