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

コロニーと規則

コロニー宣言

コロニー宣言 ::= "*" 識別子 改行+ リソース+ (マクロ|規則集合)+
| "%" 識別子 改行+ リソース+ (マクロ|規則集合)+

% は組み込みコロニーの宣言に使用し、コロニー名に対応するデフォルト規則が、コード生成の段階で末尾に追加されるようになっています。

リソース

リソース ::= リテラル 改行

任意の型のリテラルを初期リソースとして書くことができます。

マクロ

1 サイクルの中で規則と同じように実行されるので、マクロは規則の一種と考えても構いません。

マクロはあくまでデバッグを支援するためのシステムです。

マクロ ::= "@debug" 識別子? 改行
| "@sleep" int型リテラル 改行

debug マクロ

そのコロニーのリソースキューの状態をデバッグ出力します。

リソースキューに文字列 Hello10 がある状態で以下が実行されると

@debug

以下が標準出力に出力されます。

 ["Hello", 10]

また、ダブルクォート省略型の文字列を引数に与えると

@debug test

先頭にその文字列が付加された状態で出力されます。

test ["Hello", 10]

sleep マクロ

以下で 1000 ミリ秒 (= 1 秒) の間プログラムを停止させることができます。

@sleep 1000

規則

規則集合 ::= 先頭の規則 以降の規則*

先頭の規則 ::= "." 規則 改行
以降の規則 ::= "|" 規則 改行

規則 ::= カンマ区切りの連続条件式 出力先 カンマ区切りの出力式?

カンマ区切りの連続条件式 ::= 連続条件式 ("," 連続条件式)*
カンマ区切りの出力式 ::= 出力式 ("," 出力式)*

条件式

連続条件式 ::= 条件式
| "[" カンマ区切りの条件式 "]"

カンマ区切りの条件式 ::= 条件式 ("," 条件式)*

条件式 ::= 式

出力式

出力式 ::= 式