以前ScalaやるならNetBeansが最高だぜ的な煽りエントリを書いたあと、まったく進展がなかったNetBeans Scalaプラグイン(オレしょんぼりしてました)。
本家のScala IDE for Eclipseにかなり溝をあけられていましたが、
(↓これEclipse)
先日NetBeans6.7に合わせた新版がリリースされてたので、NetBeans6.7 RC1と組み合わせて使ってみました。
(↓これNetBeans)
軽く触ってみた感じ、Eclipseに比べて、補完・サジェストが賢い、動作が軽い、デフォルトの色がかわいい。Eclipseに劣っていそうなのは、バンドルされてるScalaが最新じゃない(2.7.3)ことくらいです。
そうです、NetBeansは「必要な唯一のIDEです」。
ついでなのですが、最近ようやくわかってきたParser Combinatorの使い方をちょっと紹介。Scalaはライトな言語だと言ったわけですが、Parser Combinatorもその名前からうける壁のようなものがあります。いきなり完成品のパーザーを見ても悶絶するばかり。
しかし実はそんなことなくて、落ち着いて読めば意外と簡単。
基本はこんな風。
実行すると、「parsed: はみがき」と出ます;;
理屈や仕様を考えなくても、構造をみれば、次のように見える。
"~"(チルダ)は区切り、"_"(アンダーバー)は読み捨て、くらいに考えておけば大丈夫。
文字列にマッチさせたい形の書き方は、繰り返しの扱い方などでバリエーションあるので、次のステップは、以下のソースやサイトのマネしてみるといいと思います。
・stevej/scala-json - GitHub(Twitterの中の人)
・[Scala] How to Use Combinator Parser (1) - Functional Programming Memo(日本語。とっても勉強になる。)
・External DSLs made easy with Scala Parser Combinators - Ruminations of a Programmer(英語。External DSLとはなんぞやがわかる)
ざっくり言うと、「入れ子にできる正規表現、マッチした結果を好きなオブジェクトに変換できるしくみ」っていう感じです。
今、SQLのDDL(CREATE文)のパーサーを作ろうとしていますが、例えばScalaにはXMLリテラルがあるので、DDLパースしてXMLに変換、とかいうJavaやORMにありがちな冗長作業も簡単に自動化できるハズ。
NetBeans&Scala、使ってみたくなりましたよね?ね?