このレポジトリはプログラミング言語作成ハンズオン向けのレポジトリです。 Nubとは英語で小さな塊や隆起を意味する言葉です。 Nubの文法はANTLR4を使って書かれています。 NubのインタプリタはJavaを使って書かれています。
NubのコンパイルにはMaven 3が必要です。 MavenがANTLR4プラグインを提供するため、ANTLR4は必要ありません。
src/main/antl4/com/github/kmizu/nub/Nub.g
: ANTLRによるNubの文法定義src/main/java/...
: Javaソースコードpom.xml
: Maven用コンフィグ
1
5
10
100
1000
...
1 + 2
1 + 2 * 3
(1 + 2) * 3
(1 + 2) * 3 / 4
各プログラムの行の最後にはセミコロンが必要です。
let x = 1;
let y = 2;
print(x + y); //3
x = 2;
print(x + y); //4
// let x = 1; is not allowed since x is already defined
1 < 2
3 < 4
3 <= 3
6 > 5
7 > 5
7 >= 7
1 == 1
5 == 5
1 != 2
3 != 2
print(expression);
初期は整数値の表示のみ対応しています。 将来的に整数値以外にも対応する予定です。
if (condition) {
expression
...
} (else {
expression
...
})?
if(1 < 2) {
print(1);
}else {
print(2);
}
while(condition) {
expression
...
}
let i = 0;
while(i < 10) {
print(i);
i = i + 1;
}
値宣言にはlet
を使います。代入演算sもサポートされています。
行コメントをサポートします。 例えば、
// abcdef
1 + 2; // 3
上記の//abcdef
は無視されます。
def printRange(from, to) {
let i = from;
while(i <= to) {
println(i);
i += 1;
}
}
printRange(1, 10); // from 1 to 10 are printed