2008-04-01から1ヶ月間の記事一覧
僕は、maven2のリモートリポジトリから、jarをゲトしたいだけなのです。 依存してるライブラリも一緒にゲトしてくれるとグー。 そう、別にそれ以外の機能は、一切合切必要ないのです。 面倒だし、DTDが無く、自前のpullparserを使って腕力でパースしてるpom.…
実行VMのロケールを見て、日本語と英語でエラーメッセージを出す。 クォート途中で死んだら、その旨通知しる。 コメントの中で死んだら、その旨通知しる。 どんなルールの処理中に死んだのか、通知しる。 エラーリカバリとか、考えると超重い感じなので、 何…
こんな感じに、#をブロックコメントの開始の後に付けとくとバインド変数コメントになる。 /*# hogehoge.fugagua*/dummygrammar TwoWaySQL; options { language = Java; output = AST; ASTLabelType = CommonTree; } tokens { BEGINNODE; IFNODE; EXPRESSIONN…
2WaySQLの中でもかなり怪しい仕様、と言ってもこれが非常に便利なのだけど、 IN句の後ろにあるコメント及び、その後のテキストノードが括弧で括られている時、 括弧で括られている範囲を、実行時にゴッソリ落して、再構築してくれるんですなぁ。 例えば、こ…
ツリーは、ちゃんと出来ている。ASTに変換しようとしてコケている。 パーサが構築しうるツリーと、変換されうるASTにズレ的な何かがある…と言っている気がするが、 どう対応したら良いのかサパーリ分からない。誰かボスケテ。 grammar TwoWaySQL; options { …
さっきのを、ちょこちょこと弄って整理してみた。
■[ANTLR] 空白文字のスキップCommentsAdd Starwarufuzaketaichi引き続き、ASTは、タダじゃ作ってくれない。 - 設計と実装の狭間で。を添削。予想以上に大変。 らしいのだけど、せっせとコピペしたので、それなりに楽勝。 しかし、それでは芸がないので、クォ…
以下のURLからインストール出来るます。http://eclipse.seasar.org/updates/3.3/ 対応しているeclipseのバージョンが変わり、同時に、インストールする為のURLも変わっているので注意。
/と*と-が、lexer辺りでうまく処理されてなかったので、 そいつだけ独立したトークンにしつつ、Parserでまとめる感じに。 空白文字列がgrammarに山ほど出てきてしまうのは、もうちょっと先で対応するつもり。 grammar TwoWaySQL; options { language = Java;…
grammar TwoWaySQL; options { language = Java; output = AST; ASTLabelType = CommonTree; } tokens { BEGINNODE; IFNODE; EXPRESSIONNODE; ELSENODE; } @header { package twowaysql.grammar; } @lexer::header { package twowaysql.grammar; } twowaySQL…
僭越ながら ASTは、タダじゃ作ってくれない。 - 設計と実装の狭間で。 を添削。 添削してもらったので、少し直してみた。 そろそろ2byte文字も使ってみたいな…とか思って直している最中に、致命的な事が判明。 とりあえず、出来たトコまで晒しておくます。
ANTLRWorksで、ParseTreeなんてのが、出てるから、これでいいんじゃね? とか思っていたのだけど、世の中そんなに甘く無い事を理解。
まぁ、eclipseのプラグインはすでにあるのだけどさ。 Eclipse Eclipse 3.3+ for Antlr 3.xAntlrDT is a standard Eclipse plugin implementing an Antlr 3.x specific editor, outline, and builder. See http://www.certiv.net/projects/plugins/antlrdt.ht…
まぁ、何かテキトーに動きそうなツリーが出来たトコロで、 エラー処理辺りを作りこもうかな…と言う気分なのだけど、 そもそも良く分かってない部分があるので、細かい単位で動かせないと駄目だよね…と言う訳。 で、ANTLRには、gUnitと言うテスティングツール…
コメントとテキストを分割出来る様になったので、 次は、条件分岐をパース出来る様にしてみる。
スーパークラスを変えるとデバッグできなくなるので注意 (デバッグ用のスーパークラスを使ってブレークとかトレースしてる模様)
ANTLRWorksの使い方がようやく分ったので、結局、ANTLRを使う事に。 コンパイラの知識らしい知識を全く持たずに、どこまでいけるか頑張ってみる。