トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

clover2

[マイナー言語]

clover2

ab25cqさんが開発してるclover2を使ってみる

  環境準備

  • WSLのDebian/stretchを使ってみる
    • 依存ライブラリ等は右を参照 INSTALL
$ sudo apt-get install gcc
$ sudo apt-get install ctags
$ sudo apt-get install clang
$ sudo apt-get install libreadline-dev
$ sudo apt-get install libpcre3-dev
$ sudo apt-get install libz-dev
$ sudo apt-get install ctags
$ sudo apt-get install make

  ビルド

  • インストールまで余裕で通る
$ git clone https://github.com/ab25cq/clover2.git
$ cd clover2
$ ./configure --with-optimize
$ make
$ sudo make install

  試運転

$ clover2 -v
clover2 version 4.0.7

コンパイル

  • HelloWorld
$ cat hello.cl
println("Hello")

$ clover2 hello.cl
Hello

サンプルコード

型をブロックの中でも書かなくてはいけないのと、型宣言が後置なのがScalaっぽい

$ cat str.cl

array:String[] = ["Hello", "World"];

array.each{|s:String|
    println(s);
}

$ clover2 str.cl
Hello
World
  • FizzBuzz
for (i:int = 1; i < 101; i++) {
  if (i%15 == 0) {
    println("FizzBuzz");
  } elif (i%3 == 0) {
    println("Fizz");
  } elif (i%5 == 0) {
    println("Buzz");
  } else {
    println(i.toString());
  }
}
 clover2のソースコードには2種類あります。一つがクラスを定義したソースファイルで拡張子はclclとしてください。

ほうほう

 cclover2 HelloWorld.clclはHelloWorld.oclclというクラスファイルを作ります。 clover2 HelloWorld.clはHelloWorld.oclという仮想マシン用の実行形式のファイルを作り、そのまま実行します。

.clではクラスが定義できなかった

サンプルコード(Union-Find)

  • 競技プログラミング的なクラスなどを作ってみる
    • UnionFind.clcl
class UnionFind
{
  id: int[]
  rank: int[]

  def initialize(n:int) {
        self.id = (0..n).to_a;
        println(n);
  }
}

un:UnionFind = new UnionFind(3);
お名前: コメント: