基本的な構文
字下げ依存構文
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 が表示されます.
式をコロン : で区切ると,右から左に評価されます.下の例では,まず変数 x に 5 を代入し,次にその値を表示しています.
println x : x = 5
マクロ
Punyochi には,いくつかのマクロが存在します.マクロを記述するには,行頭に # を置きます.下は,define マクロの例です.
#define N 100
println N // 100
実行時に評価される通常の式と異なり,マクロは構文解析時に作用します.
#define N 100
N = 200; // 無効 (100 = 200 と展開されるため)
println N // 100