- 1 名前:デフォルトの名無しさん [2006/10/15(日) 11:38:10 ]
- プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,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/ 関連リンクは多分 >>2-10 あたり
- 2 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 11:38:42 ]
- Wikiのまとめページ
www6.atwiki.jp/compilerandscriptengine/ ★コンパイラ一般 ・色々なツールの紹介 catalog.compilertools.net/ ・コンパイラ関連のリンク集 www.ulis.ac.jp/~nakai/rel_web_compilers.shtml ・スクリプティング言語資料室(仮) (リンク集) www.kt.rim.or.jp/~kbk/ ・Compiler Construction www.ie.u-ryukyu.ac.jp/~kono/lecture/compiler/ ・情報システム工学実験 III コンパイラ・コンパイラ math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html ・OS/Programming 簡単な C コンパイラ www.csg.is.titech.ac.jp/~chiba/lecture/os/ ・正規表現 hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm ・コンパイラ研究・開発情報の一集積所 compilers.cs.uec.ac.jp/ ・Links and Selected Readings www.gnu.org/software/gcc/readings.html ・国産のコンパイラ共通インフラストラクチャCOINS www.coins-project.org/
- 3 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 11:39:14 ]
- ★字句・構文解析
・Lex and YACC primer/HOWTO (邦訳) ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html ・Turbo Pascal Lex/Yacc www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html ・Jim Roskind's LALR(1) C++ Grammar ttp://www.empathy.com/pccts/roskind.html ・Flexと Bisonを同時に使う guppy.eng.kagawa-u.ac.jp/2005/SysProg/both.html ・KITE_ASM (yacc,lex) www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/ ・bison用のC++ LALR skeleton ttp://www.bj-ig.de/software/bison/ ・ANTLR(非yaccのパーサジェネレータ) ttp://www.antlr.org/ ・JavaCC(Java Compiler Compiler) ttps://javacc.dev.java.net/ ttp://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html ttp://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html ・CUP, JLex, JFlex www.cs.princeton.edu/~appel/modern/java/ (JLex, CUP) ttp://www.jflex.de/ ・SableCC ttp://www.sablecc.org/ ・¬<><∪∪ (notavacc)LALR(1) ne.cs.uec.ac.jp/~koto/notavacc/ ・boost::spirit(C++のテンプレートでEBNFの構文を模倣) spirit.sourceforge.net/ ttp://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト) ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
- 4 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 11:39:49 ]
- ★ごみ集め
・GC FAQ -- draft www.iecc.com/gclist/GC-faq.html ・A garbage collector for C and C++ www.hpl.hp.com/personal/Hans_Boehm/gc/ ・一般教養としての Garbage Collection www.is.s.u-tokyo.ac.jp/vu/jugyo/processor/process/soft/compilerresume/gc/gc.html ・Garbage Collection : Algorithms for Automatic Dynamic Memory Management www.amazon.com/exec/obidos/ASIN/0471941484/ ★処理系,スクリプト ・kikyou.info (吉里吉里というゲームのスクリプト) kikyou.info/ ・tiny C コンパイラ (C) www.watalab.cs.uec.ac.jp/tinyCabs.html ・6809用 Micro C コンパイラ www.axe-inc.co.jp/pds/mc09.html ・Portable Object Compiler (Obj-C >> C のトランスレータ?) users.pandora.be/stes/compiler.html ・自作コンパイラの部屋(PL/1, Pascal等) www.tokumaru.org/ ・『Rubyソースコード完全解説』サポートページ i.loveruby.net/ja/rhg/ ・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』 www.okisoft.co.jp/esc/go.html ・MSによるPEフォーマット仕様書(日本語) www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
- 5 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 11:40:24 ]
- ★学会
・PLDI research.microsoft.com/conferences/pldi06/ コンパイラの研究に関する最新成果を知りたければまずはここ。 ・POPL www.cs.princeton.edu/~dpw/popl/06/ PLDIよりは理論寄りだが大いに参考になる。 ・ICFP icfp06.cs.uchicago.edu/ 関数型言語に関する学会。とても難しい。 ・OOPSLA www.oopsla.org/ オブジェクト指向言語に関する学会。最近はやや低調? ・ICCC www.st.cs.uni-sb.de/cc/ ヨーロッパ系。派手さはないが堅実。
- 6 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 11:40:56 ]
- ★参考書籍
・コンパイラ 原理・技法・ツール 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 [2006/10/15(日) 11:50:25 ]
- 乙
- 8 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 11:55:01 ]
- ごめ。21st Century Compilers差し替えるの忘れてたので次にはよろ
・Compilers: Principles, Techniques, and Tools(Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam) www.amazon.co.jp/gp/product/0321486811
- 9 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 13:42:10 ]
- >>8
それドラゴンブックと違うの?
- 10 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 14:31:56 ]
- 改訂版だろ?
早く訳されたやつでないかな(・∀・)
- 11 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 00:02:01 ]
- Ahoをアホつって通じるかな
- 12 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 00:55:29 ]
- C++用パーサジェネレータ作ってみた
暇な人いじってみて tinyurl.com/yefoxa 動かなかったらごめん
- 13 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 01:13:01 ]
- なんじゃ
また構文解析か
- 14 名前:デフォルトの名無しさん [2006/10/17(火) 10:45:19 ]
- >>11
スロバキア語でAhojって通じるかな
- 15 名前:デフォルトの名無しさん [2006/10/17(火) 10:52:24 ]
- >>12
あのね、今時そういうの流行らないの。 だいたい、同じようなものがいくらでも存在するのに、なんでそういうの作ろうと思ったわけ? 新規性がないんだよね。 いや、悪いとは言わないよ。 でも、これからのコンパイラ作りというのは、COINSやGCCのような コンパイラインフラストラクチャ(COINSの用語を借りるなら)を利用して 最小限の労力で必要な部分だけを作るというように変わりつつあるのに、 君は今時そんなことをやってるんだねぇ。
- 16 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 11:05:49 ]
- >>15
いいよねぇ、ケチだけつける楽な人生で
- 17 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 11:14:24 ]
- >>16
>>16
- 18 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 11:15:44 ]
- >>16
だってほら、何かしようとする子って「やる気」がある子でしょ? そういう子は先につぶしておかないと後々やっかいなんですよ。
- 19 名前:12 mailto:sage [2006/10/17(火) 11:46:01 ]
- 私が既存のどれを試したかはドキュメントにも書いた( tinyurl.com/yzxbdl )。
新規性がないということも書いたよ。 コンパイラの開発者ではなく、職業プログラマが、道具として、 小さいパーサを必要なところで自由に使えるものを、 というコンセプトで作ったものです。 自分はコンパイラにも使うつもりだけど。 私だって何も制約がなければocamlyacc使うよ。 ocamlであるということ以外、特に不満ないし。 既存のパーサジェネレータと格闘したことあれば わかってもらえると思うんだけどなあ。勘違いかな。 COINSにパーサジェネレータあるの? どこ? web見るとJavaCC使ってるようだけど…… caper作ってから発見した(見落としてた)のは以下の二つ。 後者はJavaだけど。 glrParser( 全然知らなかった ) notavaCC ( javaに興味がなかった&名前がJavaCCに似てたんで無意識にスルーしてしまっていた )
- 20 名前:15 [2006/10/17(火) 17:37:36 ]
- 自分が何かを為す分のエネルギーを全部他人の足を引っ張ることに使って
何が悪いのさ。
- 21 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 18:04:01 ]
- >>19
あれ?もう一度みたんだけど、最初読んだとき、>>15が書かれる前だけど、と微妙に内容が変わってないか?
- 22 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 18:10:16 ]
- >>19
あんたが考えているようなものはすでにいろんな人がいろんな実装を作っていて、新しいものを作っても大抵は他の人がやってる事なんだよ、残念だけど。 20年以上も前なら人気があった分野だけど、今は>>15が言うように変わってきている。
- 23 名前:12 mailto:sage [2006/10/17(火) 18:15:23 ]
- 微妙に変わってるけど、ほとんど見た目とかリンクだけだと思うよ。
svnのdiffみる?
- 24 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 18:28:35 ]
- nScript改造した方が早かったのにね
- 25 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 18:54:46 ]
- >>15
少しは他人の仕事も認めてみてはどうだ? 昔、自分でやってみて失敗したから腹いせなのかねぇ
- 26 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 19:21:17 ]
- 認めるって12を?
この程度だと、高校の部活で作ったレベルだと思うけど。 はっきり言って何一つ面白くない。
- 27 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 19:32:06 ]
- レベル表現に中高が出てくるレスはどういうわけか説得力が無い
引くに引けないから逆撫でに終始してます、みたいな
- 28 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 19:33:38 ]
- 高校生乙。
俺の勝ちだな。
- 29 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 19:52:39 ]
- >>28
一言多かったようだが、その態度は止めとけ。 その一言が、お前が認められない原因なのかもな。
- 30 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 20:19:40 ]
- 作ってない奴よりは上だろうな
出来るけどやらないだけとかいう奴は論外 しかし面白くないという意見には100%同意
- 31 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 21:13:06 ]
- >>29
他人のふりして説教か。 つくづく負け犬というのは、まっとうな言論でまったく勝ち目がなくなってからが 「本腰の入れ所」なんだな。 消えろ、ゴミ。
- 32 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 21:21:41 ]
- >>31
本人のふりして煽りか。 つくづく負け犬というのは、まっとうな言論でまったく勝ち目がなくなってからが 「本腰の入れ所」なんだな。 消えろ、ゴミ。
- 33 名前:12 mailto:sage [2006/10/17(火) 21:41:11 ]
- そんなことより鮫の話しようぜ
- 34 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 23:48:40 ]
- >>33
鮫ってなあに?
- 35 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 00:01:05 ]
- nanashi.info/img/mirror/1123177027649.jpg
- 36 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 02:42:56 ]
- >>30
面白くないなら面白いlこと書いてよ
- 37 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 03:47:32 ]
- 前スレのx86の命令表とかwikiにまとめてあるとうれしいなぁと
思いました。
- 38 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 06:11:50 ]
- >>31-32 ゴミですが消えてくないんですけど?
- 39 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 10:17:39 ]
- それっぽっちの日本語も正しく書けないとは、
本当にゴミだな。
- 40 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 10:47:30 ]
- >>39
日本語にそれっぽちもあれっぽちもあるんですか?
- 41 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 10:55:10 ]
- ここではクラスとしての日本語とインスタンスとしての日本語を
区別する必要があって、39は前者、40は後者なわけだ。 40のスクリプトエンジンは、意味解析に難があるな。
- 42 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 12:42:23 ]
- >>40
文章もソースコードも、量が多いほど「きちんと成立させる」のは難しくなる。 逆に、たかが一行の内容の無いレスさえまともに書けないなんてのは論外。 こんなこと(量について言っているということ)さえ説明されなきゃわからないとは、 本当に頭が悪いんだな。
- 43 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 12:46:14 ]
- >>42
数行に渡る説明よりも、一行の方が分かり易いが?
- 44 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 12:48:00 ]
- >>43
唐突に関係ない新しい切り口を持ち出して、さも反論のように書かないように。
- 45 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 12:49:57 ]
- なんで急に書く話が読む話にすり替わるんだろう
って書こうとしたら、当事者の反応の方が早かった。
- 46 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 13:00:47 ]
- >>37
freshmeat.net/projects/ia-32-instrdb/
- 47 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 14:56:26 ]
- キチガイはそろそろほっとくか・・
まあまあ楽しかったけどな。
- 48 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 16:19:27 ]
- お前ら釣られすぎw
- 49 名前:デフォルトの名無しさん [2006/10/18(水) 20:15:11 ]
- いや、どうせならVB用のパーサジェネレータ作ってくれれば良かったのに、、、
- 50 名前:12 mailto:sage [2006/10/18(水) 22:28:18 ]
- もうどうでもよさそうな話終わった?
>>49 VBって処理系無料? 無料だったら、exampleのhello0.hppをVBで記述したらどのようになるか 書いてみてくれれば、作れるかも。 無論人柱やってくれるなら、だけど。
- 51 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 22:30:27 ]
- >>50
せっかくがんばって作ったのに、みんなに叩かれてかわいそう・・;; 私は味方だからね・・
- 52 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 22:47:16 ]
- 漏れもダウンロード済み。
- 53 名前:12 mailto:sage [2006/10/18(水) 22:56:08 ]
- 動かなかったらごめんね
- 54 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 23:11:42 ]
- >>50
go.microsoft.com/fwlink/?LinkId=51405&clcid=0x411
- 55 名前:12 mailto:sage [2006/10/18(水) 23:19:28 ]
- インスコはした
VB、10年くらい前にやった気はするがまったく覚えてないんで、 どのような出力をしたらよいか (hello0.hppに相当するものはどのようになってほしいか)と わかりやすい入門サイトかなんかきぼんぬ それくれれば 週末にでもやってみる
- 56 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 23:26:33 ]
- VBか。俺は今よりもVB6(以前)の方が好きだったな。
できればそっちを作ってくれんか>12
- 57 名前:12 mailto:sage [2006/10/18(水) 23:59:40 ]
- そんな違うの?
まあhello0.hpp相当のものをくれたほうをやるよ 処理系タダならね
- 58 名前:デフォルトの名無しさん [2006/10/19(木) 00:16:10 ]
- COINSってライセンスに制約あるの?
なんかちょっと動かすごとに100円とか取られるイメージがある。
- 59 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 00:21:22 ]
- 残念。タダじゃない。もう発売&生産停止の状態。
だが一部のファンの間で未だに根強い人気があるから、オークションとかで 激しく高値で取り扱われていたりする。 俺はたしかに好きだったが、離れてからだいぶ経つから「久々にものづくりに 勤しんでみますか」程度のノリで。パーサから構築するのはさすがに骨が折れるから どうしようと思っていたらたまたまこのスレを見掛けたもので。 そんなわけだから、まあ無理なら自分で組み上げてみるよ。サンクス^^
- 60 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 00:59:31 ]
- XMLSchemaのパーサ作りたいでつ
でもでもEBNFとかなんもないでつよどうやってつくれば いいんでつかだれか助けてぉ?
- 61 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 01:38:33 ]
- MLRISC とか C-- とかはもうアクティブじゃないのかね。
- 62 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 02:16:55 ]
- x inW w2
------------------ x inW w1 UNION w2 こんなふうに文法分数みたいに定義してあるのたまに見るけど これってどうやって解釈すればいいの?分母のルールを割るの?
- 63 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 02:45:39 ]
- >>62
えっと、これは数理論理学ではよくある書き方なんだけど、 上の式(or 命題 or 述語)が成り立つならば下も成り立つ という意味。 二重線にすると、上から下が成り立つ、かつ、下から上も成り立つ(要するに同値)。
- 64 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 09:18:50 ]
- >>12
頑張れ ドキュメントも良くかけてる
- 65 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 16:16:17 ]
- フラスコに精液を溜めようと思って、実際に半分ぐらいまで溜めたんですが、
使うときにフラスコからだそうと思ったら出なくなりました。 どうやって出したら良いでしょう?
- 66 名前:12 mailto:sage [2006/10/19(木) 21:25:35 ]
- おうthx
>>65 割れば?
- 67 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 21:34:23 ]
- 自作自演乙
- 68 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 22:09:30 ]
- >>65
>使うとき 詳細(ry
- 69 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 00:31:32 ]
- いま、誰も知らないマニアックな言語のデータ構造を
Cの構造体に修正するツール作成したいのですが、 ある言語体系のルールから 別の言語体系のルールに変換するような内容の論文とか 資料とかって知りませんか?
- 70 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 00:33:30 ]
- 意訳: パーサが書けない僕でもなんか処理できちゃう魔法知りませんか
- 71 名前:デフォルトの名無しさん [2006/10/20(金) 00:58:14 ]
- パーサーの先読みが1つがデフォルトなのは知ってますが、
少なすぎませんかね?
- 72 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 06:32:53 ]
- 例えばLR(k)をLALR(1)にするとかってことか?
つか先読み1つより大きくすると別の問題しょいこむだけだぜ
- 73 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 09:37:44 ]
- >>71
大体複雑なのが出来るだけだから、複雑になるリスクとの兼ね合い。
- 74 名前:デフォルトの名無しさん [2006/10/20(金) 14:52:43 ]
- >>72,73
よく言われることだと思うけど、それほど複雑にならない気もする。 例えば、LALR(99)なんてのは論外としても LALR(2)ぐらいならメリットの方が多いのではないかな?
- 75 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 15:13:59 ]
- ならそれでいいじゃないか?
つべこべ議論する事じゃないと思うが?
- 76 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 15:15:34 ]
- お前こそつべこべいうなよ
- 77 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 18:03:25 ]
- すまなかった。
- 78 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 18:07:19 ]
- この2や99ではない、1ってのがミソなんだな。
- 79 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 20:19:37 ]
- >>78
"Zero-One-Infinity Rule" だね
- 80 名前:デフォルトの名無しさん [2006/10/21(土) 00:08:42 ]
- シフトを続ければ、1も99も同じ
- 81 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 13:28:49 ]
- >>71
Packrat Parsingでは、無限長先読みができますよ、と
- 82 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 16:21:29 ]
- >>81
HaskellのPersecとかだね?
- 83 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 17:18:32 ]
- バナナ気持ちいいよバナナ
- 84 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 19:01:01 ]
- >>82
Parsecは確かに無限先読みが使えるけど、Packrat Parsingとは違うもの Parsecは基本的にはLL(1) + Syntactic Predicate(Parsecで言うtryのこと) Packrat Parsingのアルゴリズムは、基本的には再帰下降型Backtracking Parserで、 (入力開始位置、非終端記号)のペアに対して、一度計算したSemantic Valueを再計算 しないように記憶しておくことで入力文字数に対して線形オーダの計算量でできるように 効率化したもの
- 85 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 20:36:54 ]
- >>84
空間計算量はO(n^2)になりそうな気がするけどどう?
- 86 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 01:31:58 ]
- なんか、凄くレベルが高いなこのすれ。
俺的にはyaccの書き方に四苦八苦していて、gawkとかのお手本を勉強してたんだけど、 shift/reduce が沢山でていてちょっと安心した。 普通 shift/reduce や reduce/reduce って0に持って行くものだと思ってたけど、 現実は違うのかな?
- 87 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 02:28:37 ]
- >>86
慣れだよ。
- 88 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 02:58:48 ]
- yacc(happy)使うくらいならParsec使いたいな
- 89 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 03:33:35 ]
- >>85
非終端記号の個数mと入力文字数nに対して、空間計算量はO(mn)。で、 非終端記号の数は通常一定なので、大体O(n)と考えて良いと思う。 ただ、それでも莫大なメモリを消費することには変わりないので、 巨大なXMLファイルなどを解析するのは向いてない。 Java用のPackrat Parser GeneratorでRats!というのがあるので、 興味があれば使ってみれば良いかも。 ちなみに俺はyaccのようなbottom up parserの挙動はイメージしづらいんで、 あんまし好きじゃない。自分では、JavaCCのようなLL(k) Parser Generatorをもっぱら使ってる。
- 90 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 03:40:30 ]
- >>86
reduce/reduce は0にしないとだめなんじゃないか?
- 91 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 17:56:12 ]
- True AWK の結果(↓)
awkgram.y: conflicts: 43 shift/reduce, 85 reduce/reduce
- 92 名前:デフォルトの名無しさん [2006/10/22(日) 21:23:58 ]
- コンパイラってどうやって作るの?
- 93 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 21:25:53 ]
- まず、HSPを卒業して他の言語を覚えることから始めないとダメだ。
- 94 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 23:10:49 ]
- ,-、 ,.-、
./:::::\ /::::::ヽ /::::::::::::;ゝ--──-- 、._/::::::::::::::| /,.-‐''"´ \:::::::::::| / ヽ、::::| / ヽ| l. l .| ● | l , , , ● l ` 、 (__人__丿 、、、 / >>1 糞スレ `ー 、__ / /`'''ー‐‐──‐‐‐┬'''""´ ./ ___ l __ l ./ / |/ | `ー-< / ./ ./ `ー‐--{___/ゝ、,ノ
- 95 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 23:11:30 ]
- >>93
HSPでかけないアルゴリズムってあるの?
- 96 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 23:19:13 ]
- >>95
ランレングス
- 97 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 23:31:29 ]
- 冗談でしょう
- 98 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 23:50:44 ]
- >>95
普段使ってないので言語仕様確認してみたけど、構造体定義や配列のネストが無い みたいなんでコンパイラ内の中間構文木の処理なんかが相当苦労しそうな気がする。
- 99 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 23:56:34 ]
- 何かでDLL作成して、それ以外をHSPで作成すれば問題ない。
・・・・HSPってDLL読み込めるの? 使ったこと無いからわかんない。 (調べてない。) HSPを使う意味ね〜
- 100 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 00:19:03 ]
- >>86
本職で書いている訳では無いので、言語設計の文法は出来るだけシンプルなものにする方向 でしか書いてないけど、自分の場合はreduce/reduceは無効になっている構文が発生するので 無くす方向で、shift/reduceもログチェックして意図した通りの動作になっているか確認してる。 C++とか複雑過ぎるパーサ書く場合は知らない、awkは省略規則による例外文法が多いのかも しれないけど類似のJavaScript程度の言語なら殆どshift/reduce無しで書ける筈だと思う。 (if文とtry文、オブジェクトリテラル構文で発生している程度
|

|