前実行時計算

前実行時計算 (pre-runtime computation) は、インタープリターがプログラムを読み込んだ後、なおかつ、イニシャライズ実行または本体実行を行う前に行う計算である。また、前実行時計算で実行される文を前実行時文 (pre-runtime statement)、前実行時計算で評価される式を前実行時式 (pre-runtime expression) という。

dependency ブロックの main 引数は前実行時計算で評価される。その結果が真であれば dependency ブロックの内容が有効になる。その結果が偽であれば dependency ブロックは無効となる。

前実行時文

演算指定子が pre runtime assertmain 複合名または pre runtime messagemain 複合名である統合演算文は前実行時文である。

pre runtime assert 前実行時文は main 引数が必須、message 引数が省略可能である。main 引数は前実行時式、message 引数はリテラルな文字列である必要がある。main 引数が偽と評価されるときインタープリターは停止する。また、このとき、message 引数で指定された文字列が出力される。

pre runtime message 前実行時文は if 引数が必須、then 引数と else 引数が省略可能である。if 引数は前実行時式、then 引数と else 引数はリテラルな文字列である必要がある。if 引数が真と評価されるとき、then 引数が省略されていなければ、then 引数で指定された文字列が出力される。対称的に、if 引数が偽と評価されるとき、else 引数が省略されていなければ、else 引数で指定された文字列が出力される。

前実行時式

前実行時式は 1 個の統合演算式である。統合演算式の演算指定子は複合名である。また、統合演算式の引数は複合名または統合演算式である。前実行時式では以下の統合演算式を使用できる。

論理演算

演算指定子が andmain 複合名で、left 引数と right 引数が前実行時式であるとき、論理積を返す。

演算指定子が ormain 複合名で、left 引数と right 引数が前実行時式であるとき、論理和を返す。

演算指定子が notmain 複合名で、right 引数が前実行時式であるとき、論理否定を返す。

演算指定子が ifmain 複合名で、if, then, else 引数が前実行時式であるとき、if 引数の値が真であれば then 引数の値を返し、if 引数の値が偽であれば else 引数の値を返す。

演算指定子が pre runtime truemain 複合名であるとき、真を返す。

演算指定子が pre runtime falsemain 複合名であるとき、偽を返す。

機能検査

演算指定子が available pre runtime statementmain であり、main 引数が複合名であるとき、main 引数で指定された複合名が前実行時文であるかを返す。

演算指定子が available pre runtime expressionmain であり、main 引数が複合名であるとき、main 引数で指定された複合名が前実行時式であるかを返す。

演算指定子が available blockmain 複合名で、main 引数が複合名であり、その複合名の姓が argument symbol であるとき、main 引数で指定されたブロックが既知であるかどうかを返す。

演算指定子が available control flow statementmain であり、main 引数が複合名であるとき、main 引数で指定された複合名が制御構文であるかを返す。

演算指定子が available control flow expressionmain であり、main 引数が複合名であるとき、main 引数で指定された複合名が制御式であるかを返す。

演算指定子が valid pre runtime expressionmain であるとき、main 引数に記述された式が前実行時式として解釈されるかを返す。

実行位置

演算指定子が execution position independentmain 複合名で、main 引数が複合名であるとき、main 引数で指定されたブロックまたは制御構文が実行位置にかかわらず効果を発揮するかどうかを返す。ブロックを指定する場合は、main 引数の複合名の姓を argument symbol とする必要がある。実行位置がブロックまたは制御構文に達したときそれらが実行されるならば、偽を返す。

引数

演算指定子が available argumentmain であり、verb 引数と argument 引数が複合名であり、argument 引数の姓が argument symbol であるとき、verb 引数で指定された前実行時文、前実行時式、ブロック、制御構文、制御式が、argument 引数で指定された引数を解釈するかどうかを返す。ブロックを指定する場合は、verb 引数の複合名の姓を argument symbol とする必要がある。

演算指定子が mandatory argumentmain であり、verb 引数と argument 引数が複合名であり、argument 引数の姓が argument symbol であるとき、verb 引数で指定された前実行時文、前実行時式、ブロック、制御構文、制御式の argument 引数で指定された引数が必須であるかどうかを返す。ブロックを指定する場合は、verb 引数の複合名の姓を argument symbol とする必要がある。

演算指定子が mandatory unified operationmain であり、verb 引数と argument 引数が複合名であり、argument 引数の姓が argument symbol であるとき、verb 引数で指定された前実行時文、前実行時式、ブロック、制御構文、制御式の argument 引数で指定された引数が、統合演算式である必要があるかどうかを返す。ブロックを指定する場合は、verb 引数の複合名の姓を argument symbol とする必要がある。

演算指定子が available argument valuemain であり、verb 引数と argument 引数と value 引数が複合名であり、argument 引数の姓が argument symbol であるとき、verb 引数で指定された前実行時文、前実行時式、ブロック、制御構文、制御式の argument 引数で指定された引数に value 引数で指定された複合名を与えたとき、特別に解釈されるかどうかを返す。ブロックを指定する場合は、verb 引数の複合名の姓を argument symbol とする必要がある。

複合名

演算指定子が special namemain であり、main 引数が複合名であるとき、main 引数で指定された複合名が特殊な目的のために予約されているかを返す。

演算指定子が special family namemain であり、main 引数が複合名であるとき、main 引数で指定された複合名の姓が特殊な目的のために予約されているかを返す。