FooooScript言語仕様(バージョンfoo) ドラフト1a

※この文書は意見募集を目的として公開される草案であり,最終の仕様ではない。

目次

  1. 概要
  2. バージョンと互換性
  3. ソースファイル
  4. 文字コード
  5. 利用可能な文字
  6. 構造
  7. 命令語
  8. コメントアウト
  9. エラー処理

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