メインコンテンツまでスキップ

基本的な構文

字下げ依存構文

Punyochi はインデントに意味を持ちます.

例えば,この式は (3 * 4) + 5 と解釈され,値は 17 になります.

3 * 4 + 5

一方,下の式は 3 * (4 + 5) と解釈され,値は 27 になります.

3 *
4 + 5

このように,インデントされた式はグループ化され,演算の優先順位が一段階高くなります.もちろん,インデントの代わりに丸括弧 () を用いることもできます.

入れ子インデント

他の多くの言語と異なり,インデントで式を始めることができます.

//
1 + 2
*
3 + 4

上の式では,最初の行に空のコメント // が置かれています.このように書くことで,直後の式のインデントが明確化され,1 + 2 はグループ化されます.したがって,式は (1 + 2) * (3 + 4) と解釈され,値は 21 となります.

字下げされた式を入れ子にすることができます.下の式は 1 + ((2 + 3) * (4 + 5)) * 6 と解釈され,値は 271 となります.

1 +
//
2 + 3
*
4 + 5
* 6

式の逐次評価

複数の式をセミコロン ; で区切ることで,それらの式を左から順に評価します.改行は式の区切りになりません

println "hoppe"; println "mochi"

上のプログラムを実行すると,まずコンソールに hoppe と表示され,次に mochi が表示されます.

式をコロン : で区切ると,右から左に評価されます.下の例では,まず変数 x5 を代入し,次にその値を表示しています.

println x : x = 5

マクロ

Punyochi には,いくつかのマクロが存在します.マクロを記述するには,行頭に # を置きます.下は,define マクロの例です.

#define N 100

println N // 100

実行時に評価される通常の式と異なり,マクロは構文解析時に作用します.

#define N 100

N = 200; // 無効 (100 = 200 と展開されるため)

println N // 100