FooooScript言語仕様(バージョンfoo) ドラフト1a
※この文書は意見募集を目的として公開される草案であり,最終の仕様ではない。
目次
- 概要
- バージョンと互換性
- ソースファイル
- 文字コード
- 利用可能な文字
- 構造
- 命令語
- コメントアウト
- エラー処理
- 例
1. 概要
FooooScriptは,テキスト端末上に文字列"foooo"を容易に出力するための,チューリング完全でないスクリプト言語である。
FooooScriptは事実上,言語仕様を満たすソースコードを解釈したとき,その行数個の"foooo"文字列を出力する言語である。
2. バージョン
FooooScript言語仕様のバージョンは初版をfoとし,以降,改訂されるたびにバージョン末尾にoを一つずつ付加していく。バージョンfoの次のバージョンはfooである。<
FooooScript言語仕様の任意のバージョンのパーサは,それより古い任意のバージョンのFooooScript言語仕様で記述されたソースコードを,そのソースコードが記述された言語仕様のバージョンに於いてエラーを含まなず,かつ当該の言語仕様のバージョンが仕様上の不備を含まない限り,その言語仕様のバージョンのパーサと全く同様に解釈しなければならない。
また,FooooScriptのパーサは,バージョンの問い合わせを受けた場合に自身のバージョン及び準拠しているFooooScript言語仕様のバージョンを返さねばならない。
3. ソースファイル
FooooScriptのソースファイルはテキストファイルであり,後述する特に配慮をすべき理由がない限り,文字コードにはUTF-8を採用すべき(SHOULD)である。UTF-8が採用される場合,ソースファイルの先頭にバイトオーダーマークを付加してはならない(MUST NOT)。
特に配慮すべき理由とは,これを利用しようとしている環境でUTF-8を利用できない場合などである。この場合,ソースコードにはその環境で利用可能な文字コードを用いる。ただし,UTF-8が利用可能な環境とのファイル交換の際には文字コードをUTF-8に変更するよう努めねばならない。なお,その環境でASCIIコードが利用可能である場合は,これを優先して採用すべきである(SHOULD)。<
また,ソースファイルの改行コードは必ずLFを用いねばならない(MUST)。
なお,FooooScriptのパーサが,FooooScriptのソースコードをテキストファイルとして受け取る場合,FooooScriptのパーサはその文字コードを自動的に判定せねばならない。ただし,その補助のために,与えられるオプションを利用してもよい。
FooooScriptのソースファイルのファイル名に付する拡張子は規定されない。ただし,ファイル交換の便を図るために拡張子".fooos"を用いてもよい(MAY)。
4. 利用可能な文字
有効なFooooScriptバージョンfooのソースコードは,以下の三つの文字のみで記述される。これら以外の文字を含むソースコードはエラーとなる。
- f
- o
- LF(改行)
5. 構造
有効なFooooScriptバージョンfooのソースコードは,一つ以上の行からなる。各行は必ずただ一つの有効な命令語を含み,空の行や複数の命令語を含む行は許容されない。行と行とは改行によって区切られる。これらを逸脱するソースコードはエラーとなる。
有効なFooooScriptの拡張バッカス・ナウア記法的表現は,以下のようになる。
ソースコード = 命令語 , [改行, ソースコード]
6. 命令語
FooooScriptには,以下に示す命令語のみが定義される。以下にない語は,不明な命令語としてエラーとする。
fo+命令語
fo+命令語は,文字列"foooo"を出力する。
fo+命令語は,"fo"とそれに連なる任意の個数のoによって記述される命令語である。以下の記述はすべて有効なfo+命令語として解釈される。
- fo
- foooooo
- foooooooooooooooo
- fooooooooooooooooooo
以下にfo+命令語の使用例を示す。
ソースコード:
foo
実行結果:
foooo
7. コメントアウト
FooooScriptには,コメントアウトの記法は存在しない。
8. エラー処理
FooooScriptのパーサは,ソースコードを実行する前に文法チェックを行い,文法上のエラーがある場合にはこれを指摘する。この場合,ソースコードを実行してはならない。ただし,文法エラーが発生した時点までの実行結果をロールバックする場合に限り,ソースコードを実行しながら文法チェックを行っても良い(MAY)。
文法上のエラーではなく,実行中に発生したエラーについては,これを通知して実行を中止するものとする。
また,エラーの指摘に際しては,その発生箇所と発生事由を可能な限りユーザーに通知しなければならない(SHOULD)。
9. 例
以下に示すのは,FooooScript言語仕様(バージョンfoo)に基づいて記述されたスクリプトのソースコード例と,その実行結果である。
ソースコード:
foo foooooooooooooo fo foooooooooo foooo fooooooooooooooooooooooo foooo fooooooo
実行結果:
foooofoooofoooofoooofoooofoooofoooofoooo