TOP

構文解析ハンズオン Vol.2

イベント内容

イベントについて

このイベントは構文解析器(パーザー)を作るためのハンズオン企画(第二回目)です。第一回目 についてはこちらを参照してください。

構文解析といっても、あまり身近に感じられない人もいるかもしれません。しかし、実際には、構文解析(器) は実用プログラムに必要不可欠といっていいものです。

たとえば、Webサービスでのデータのやり取りをするための標準的な言語になったJSON、これをプログラム から取り扱うには、JSONのデータを構文解析して、木構造データとしてプログラムから扱えるように加工する 必要があります。CSVを解析してカンマ区切りの行から各項目を取り出すのも広い意味での構文解析 です。Webサービスでの入力について、特定の規則に従っているかをチェックするのも構文解析です。

既存のよく知られたデータ形式については構文解析器があらかじめ用意されていることが多いですが、 独自のデータ・フォーマットとその構文解析器を書く必要があることもあります。このとき、特に Webサービスでのバリデーションでは、正規表現を使ってアドホックなチェックを行うことが少なく ありませんが、入力が複雑になると正規表現では手に負えないか、とてつもなくメンテナンス性の低い 正規表現を書く羽目になります。

今回のハンズオンでは、主に構文解析器を書いたことがない人を対象に、構文解析の基礎について教えます。第一回 では、主に簡単さから、PEGを使った手書き構文解析器の書き方について教えましたが、今回は、構文解析器を生成 するツールの一つでるANTLRを使った構文解析器の作り方について教えます。ANTLRは、 現状の構文解析器生成系(パーザジェネレータ)の中で、もっとも実用性や柔軟性が高いものの一つです。また、 Javaをはじめとして、多くの言語に対応しているため、色々な環境で利用することができます。

今回は、

  • 整数・小数の構文解析
  • 括弧を含む数式の構文解析
  • JSONの構文解析
  • XMLのサブセット

といった題材(仮)を通じて、ANTLRの使い方や、構文解析の定石について学んでもらおうと思います。

題材についてはもっと良いものがあれば提案していただければと思います(前回と同じだと味気ないので、 もうちょっと面白い題材を考えたいです)。


参加資格:

  • Javaで普通のプログラムが書ける(具体的には以下を参照)
    • Javaで、プログラムを複数のクラスに分割することができる
    • for,while,switchといった各種制御構造を使うのに不自由しない
    • プログラムを複数のメソッドに分割することができる
  • 自分で複雑な構文解析器が書けるようになりたい
  • 休日を一日使っても良い

チューター募集: 前回同様、自分1人では手には余る企画だと思います。そこで、チューターを 3名まで募集したいと思います。構文解析器を書くのに慣れている人や、LL法や 再帰下降構文解析といった言葉を聞いてひるまないような人であれば大丈夫です。

チューターに応募された方には、ANTLRの基本的な使い方について軽く 当日までに予習してもらえればと思っています。


プログラム

  • 11:30 開場
  • 12:00~12:10 諸連絡・チューター紹介
  • 12:10〜13:10 昼食休憩
  • 13:10~12:50 構文解析の基本: @kmizu

  • 数値の構文解析(講義): @kmizu
  • 数値の構文解析(ハンズオン): @kmizu
  • 算術式の構文解析(講義): @kmizu
  • 算術式の構文解析(ハンズオン): @kmizu
  • JSONの構文解析(講義): @kmizu
  • JSONの構文解析(ハンズオン): @kmizu

参加について

会場はドワンゴ セミナールーム(松竹スクエア 13F)です。

懇親会はありません(自分がへとへとになっていそうなので)。参加者が各自で懇親会を開催する分には 自由にしていただければと思います。


参加費:無料


入場方法

地下鉄各線東銀座駅5番出口から地上にあがって、橋を渡ったところにあるビルです。 正面入口から入り奥にあるエレベーターで13Fまであがってください。


電源タップについて

無線LANと電源はありますが、電源は床埋込み式で Macのアダプタが刺さりません 。 電源タップをご持参ください。


その他

  • 喫煙室はありません
  • 貴重品は各自で管理してください
  • 会場は飲食可能です
  • 会場の1Fの裏にファミリーマートがあります
  • 会場から通りを挟んで向かい側にローソンがあります

会場は、ドワンゴセミナールームですが、今年から、セミナールームは歌舞伎座ではなく松竹スクエア13Fに移転しましたので、お間違えないようよろしくお願いします。


当日までの準備について

当日のハンズオンをスムーズに進めるために、以下のソフトウェアについて事前にインストールをお願いします。

Java SE(8以降)

Java SE(8以降)をダウンロード・インストールしておいてください。また、javacにパスを通しておいてください。Java SEは以下のURLからダウンロード可能です。 http://www.oracle.com/technetwork/java/javase/downloads/index.html

IntelliJ IDEA

エディタでコーディングしてもらっても構いませんが、IntelliJ IDEAでコーディングしてもらうことを推奨します。IntelliJ IDEAはここからダウンロード可能です。OSS版のCommunity Editionで必要な機能が揃うので、有償のUltimate Editionをダウンロードする必要はありません。

ANTLR v4 grammar plugin(IntelliJ IDEAを使う場合)

IntelliJ IDEAを使う場合、ANTLRのプラグインを導入しておくと、ANTLRの文法定義ファイルを書くのが楽になります。 File -> Settings... -> Plugins と移動して、検索窓から、"ANTLR"で検索すると、 `ANTLR v4 grammar plugin` が表示されるので、インストールしてください。プラグインを有効にするにはIntelliJ IDEAを再起動する必要があります。

Apache Maven

ビルド環境として、Apache Mavenを使います。各OSのパッケージマネージャからインストールするか、ここからダウンロード及びインストールして、パスを通してください。