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)。
5. 構造
有効なFooooScriptバージョンfooのソースコードは,一つ以上の行からなる。各行は必ずただ一つの有効な命令語を含み,空の行や複数の命令語を含む行は許容されない。行と行とは改行によって区切られる。これらを逸脱するソースコードはエラーとなる。
有効なFooooScriptの拡張バッカス・ナウア記法的表現は,以下のようになる。
ソースコード = 命令語 , [改行, ソースコード]
6. 命令語
FooooScriptには,以下に示す命令語のみが定義される。以下にない語は,不明な命令語としてエラーとする。
fo+命令語
fo+命令語は,文字列"foooo"を出力する。
fo+命令語は,"fo"とそれに連なる任意の個数のoによって記述される命令語である。以下の記述はすべて有効なfo+命令語として解釈される。
- fo
- foooooo
- foooooooooooooooo
- fooooooooooooooooooo
以下にfo+命令語の使用例を示す。
ソースコード:
foo
実行結果:
foooo