- 1 名前:デフォルトの名無しさん [2010/01/08(金) 23:32:50 ]
- 最近仕事でチョいとしたパーサーを何度も作るはめになりました。
パーサー技術、実装、ちょっとした技、そのたいろいろ教えてください。 じゃ
- 20 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 07:53:01 ]
- 「コンパイラ・スクリプトエンジン」相談室14
pc12.2ch.net/test/read.cgi/tech/1258431145/l50
- 21 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 13:29:12 ]
- wikipediaからのリンク失敗する男の人って
ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90
- 22 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 13:38:14 ]
- てか >>20 のスレでやれよ。
ここまでレス付いちゃうと即死では dat 落ちしないかな。 重複で削除依頼するか。
- 23 名前:デフォルトの名無しさん [2010/01/09(土) 18:44:30 ]
- >>19
spiritはやめたほうが良い。 理由は単純にビルドが重いから。
- 24 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:48:25 ]
- >>20 コンパイラ スクリプトエンジンとはべつものだろ、ばかかおまえらwwwwww
- 25 名前:デフォルトの名無しさん [2010/01/11(月) 22:32:05 ]
- とりあえずパーサを書くには
1.パーサジェネレータなり自分で書くなりして、コードを抽象構文木に変換する 2.その抽象構文木を処理したりバイトコードに変換する という行程を踏めばいいのはわかった。 で、どこにも聞けないんで聞くんだが… 抽象構文木?AST?ってなに?データ型なの?
- 26 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:07:48 ]
- データ型として定義もできる。
とにかくコードを特定の言語で処理できる抽象構文木にさえできれば 後はその言語でその抽象構文木を操作するプログラムを書けばいいだけ
- 27 名前:デフォルトの名無しさん [2010/01/13(水) 01:04:52 ]
- antlrがもっともお勧め、LRパーサーはもはや遺物
- 28 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 12:02:12 ]
- 最近はやってるなANTLR
LALR(1)とLL(k)って実用性としてはどう違うんだ PerlとかC++はLALR(1)でパースできないと聞いたが
- 29 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 16:47:20 ]
- このスレはパーサーとか構文解析のスレです
抽象構文木をどう扱うかの話はスレ違いですので、>>20 のスレでやってください
- 30 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 08:15:10 ]
- いやです。ASTの話題はパーサーの中心的な話題です
- 31 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 12:58:44 ]
- 関数型言語だとパーサって作りやすいんだよね?
なんか、このページ diaspar.jp/node/236 に手入力でASTを作成して処理ってコードがいくつかあるけれど、 これの見た目でLispみたいな、Scalaのとこだと Add(Number(5), Sub(Number(7), Number(9))) が抽象構文木ってことでいいんだろうか…
- 32 名前:デフォルトの名無しさん [2010/01/14(木) 22:19:43 ]
- >>31 そうですぼくもそれが抽象構文木だと思ってます。
でですよ、自分で勝手に決めた文法から、こういう抽象構文木をぱぱって作ってくれるパーサー をあっという間に作ってくれるパーサージェネレーターがほしいんですよ。 yacc/lexとか、javaCCとかまじいらつくんで、もっといいのないんですか? たんにASTと作りたいだけなのに、どんだけ頭つかわして、コードかかせてんだよ!ってかんじですねw
- 33 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:15:21 ]
- >>31
だってLispは抽象構文木をそのままプログラミング言語に したものだし
- 34 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 05:02:05 ]
- >>31
関数型言語は、型名(クラス名)、コンストラクタ名、印字表現名が一致しているのが伝統的で、後者二つにはディホォールト実装がある。だからプロトタイプ実装に強い。 ただ、デバッガサポート、エラー処理やろうとすると、ディフォールト実装のままではどうにもならない。
- 35 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:32:14 ]
- >>31
パターンマッチ最強だなw
|

|