SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

JavaCCでスクリプト言語を作成する

JavaCCでスクリプト言語を作成する 第1回

JavaCCとJJTreeを使ったプログラムの構築方法


  • このエントリーをはてなブックマークに追加

最近では、JavaやC++以外にも、スクリプト言語や関数型言語、論理型言語といったさまざまな言語が活気付いているため、これからプログラム言語を作ってみたい人が増えてくるかもしれません。そこで本稿では、JavaCCを使ってスクリプト言語を実装する手順を解説します。

  • このエントリーをはてなブックマークに追加

はじめに

 少し前まではプログラム言語と言えばJavaかC++、VBという感じでしたが、Webの広まりと共にPerlが使われて、PHPが現れ、Rubyが注目されて、JavaScriptが熱をおび、いろいろな言語が活気付いてきました。そして最近は、手続き型以外の関数型言語や論理型言語などにも触手が伸びているようです。

 こうなると、次はプログラム言語を実装したりオリジナルのプログラム言語を作ってみたい人も増えてくるかもしれません。そこで本稿では、JavaCCを使ってプログラム言語を実装する手順を解説します。

対象読者

 Javaの基本が分かっていてプログラム言語の作成に興味がある方。

必要な環境

 JavaCCは最新の4.0を利用します。ダウンロードしたファイルを任意のフォルダに展開しておいてください。

 今回はJ2SE 5.0をベースにプログラムを記述します。JavaCC自体はJ2SE 5.0に依存するわけではないので、J2SE 5.0の拡張構文を使わなければJ2SE 1.4などでも利用できます。

 ビルドにはAntを利用します。パスの設定などを行い、Antが利用できる状態にしておいてください。Antのバージョンは1.6.5で確認しています。

JavaCCとは

 「JavaCC」はJava Compiler Compilerの略で、文法定義を与えると、その文法に従って読み込み処理を行うプログラムを生成することができます。

 以前はソースが公開されていませんでしたが、現在ではBSDライセンスのオープンソースで公開されています。JavaCCが実際に使われている事例としては、PythonのJava実装であるJythonや、式言語のOGNLが挙げられます。

 同じようなパーサー生成ツールとしてANTLRがあります。実は構文定義ファイルの書き方や処理プログラムの記述はANTLRの方が若干やりやすいのですが、実現できることに大きな違いはありません。

 主な違いは、JavaCCで生成する場合、特別なライブラリに依存しないことです。ANTLRの場合は「antlr.jar」が必要になります。

 ANTLRはStrutsのValidatorでの条件式定義に使われているので、Strutsを利用した方なら「antlr.jar」というファイルを見かけたことがあるかもしれません。

 JavaCCで生成したパーサーの場合は、このようなライブラリは不要です。

JavaCCとJJTree

 「JJTree」は、JavaCCで作成したパーサーで構文ツリーを生成するために前処理を行うプリプロセッサです。現実的には、JavaCCを使う場合にはJJTreeを使うことになると思います。前述のJythonやOGNLでもJJTreeが使われています。

 本稿では、構文定義ファイルにJavaコードを記述しないこと、生成したファイルを編集しないことを基本方針にしていきます。そのためにはJJTreeが欠かせないので、本稿ではJJTreeを前提にして話を進めていこうと思います。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
今回作成するファイル

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
JavaCCでスクリプト言語を作成する連載記事一覧

もっと読む

この記事の著者

きしだ なおき(キシダ ナオキ)

フリーのプログラマ。Javaでの業務アプリケーションからC++での小型端末などさまざまなプログラムを開発。また、入門者向けのJavaセミナーなども行う。そのセミナーで鍛えられたテキストが、著書である「創るJava」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/367 2006/08/09 11:26

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング