読者です 読者をやめる 読者になる 読者になる

Google新言語 Noopのビルド

noop google java

Googleから新言語のNoopが公開されました。
JavaVMで動作するいろいろな言語のいいとこ取り言語のようです。
http://code.google.com/p/noop/

noopはこんな感じです。

namespace arithmetic;

import noop.Application;
import noop.Console;

class Arithmetic(Console console) implements Application {

  Int main(List<String> args) {
    Int i = 1;
    Int j = 2;
    Int k = i + j;

    console.println(k);
    return 0;
  }
}


Noopのビルド手順です。

環境構築

Noop

http://code.google.com/p/noop/

hg clone https://noop.googlecode.com/hg/ noop

以下をinstall
maveneclipseがあるという方は、Builderは読まず環境構築のmavenまで飛ばしてOKです

Buildr

http://buildr.apache.org/

gemでinstall

gem install buildr

補足ですがjrubyだとinstallが出来なかった。ローカルにbuildrのgemファイルをdownloadしてきて--local指定もNG

yone098>jruby -S gem install buildr
JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)

buildrのinstallが完了したら, ダウンロードしてきたbuildfileを指定してbuildr

buildr -f buildfile

これでtestまで実行されると、scalatestフォルダが作成されテスト結果ファイル(16個)が出来上がります。



環境にruby gemsやjrubyが無いというJavaな人は、Mavenでビルドします。

Maven2

まず、pom.xmlが無いので作成します。

mvn -s init.settings.xml org.twdata.maven:maven-yamlpom-plugin:0.4.1:sync

pom.xmlが出来たら、それでOKでは無いです。
repositoryのURLが、http:#となっている為にmvnコマンド実行後のdownloadの際にヌルポで落ちます。
ですので、以下のようにpom.xmlを書き換えます。


その後

mvn eclipse:eclipse


junit4runnerがリポジトリにないためEclipse上でビルドエラーが発生します。
ですので、junit4-runnerをgithubからダウンロードしローカルリポジトリにインストールします。
mavenリポジトリは何処?と思いきや、githubにしかないところが渋いですね。

git clone git://github.com/teigen/scalatest-junit4runner.git
cd scalatest-junit4runner
mvn clean install

やっとここで環境が整ったわけですが、NoopAST.javaでビルドエラーが出ます。
antlrでのpackage周りのエラーです。antlrのファイルをパッケージ名にあった以下のフォルダ構成に修正します。

src/main/antlr/noop/grammar/antlr

今度は、grammarファイルへ適切なimportが書かれていない為にビルドエラー。
ですので、適切なimportをgrammerファイルに記述してあげれば、ビルドは通りそう。
ただ、膨大な量なので時間切れ。



JavaEclipse環境でのビルドからのテストは時間切れで出来ませんでしたが, 構築までが長いですね。。。