Full BASIC構文規則の読み方

Full BASIC規格は,印刷された規格票,JISハンドブック,あるいは,日本工業標準調査会のJIS検索のページ(規格番号 X3003)から知ることができます。また,こちらでも公開されています(図表を除く)。
構文規則の表記法は,規格票の3.1(pp.7〜9)に書いてありますが,慣れないと難解なので,簡単に解説を加えます。

構文規則を表すのに用いる記号は,
= ⊃ ? * | { }
と空白の8個です。ただし,{と}は必ず対にして用いられます。

=と⊃は,他の記号とは用いられ方が違い,必ず,
構文単位名 = ・・・
構文単位名 ⊃ ・・・
の形で用いられます。

空白は,前後の要素を続けて書くことを意味します。
?は,あってもなくてもよい要素を表します。
* は,0個以上の反復を表します(だから,なくてもよい)。
⊃は,含意です。

たとえば,規格の4.1に
プログラム ⊃ program行? 主プログラム 外部手続き単位*
とあります。
これは,プログラムには,最初にprogram行を書くことができて(なくてもよい),それに続けて,主プログラムが書かれ(必ずなければならない),その後,外部手続き単位を0個以上,いくつでも続けて書いてよい という意味になります。
そして,=でなく,⊃でプログラムが定義されているということは,この形以外のプログラムの形式が,規格の別のところに定義されていることを意味します。

主プログラムは,
主プログラム = 手続き区* end行
となっているので,最小限,end行が(最後に)必要で,“手続き区”なるものを,0個以上,end行より手前に反復して書いたものだということになります。また,⊃ではなく,=で定義されているので,主プログラムには,これ以外の形式はありません。
手続き区の定義は,
手続き区 = 内部手続き定義 | 区
となっています。縦線|は,「又は」を意味する記号です。つまり,主プログラムとは,内部手続き定義,または,区をそれぞれ0個以上,任意の順序で書いて,最後にend行を書いたものだということになります。

{ }は,その内側に書かれた要素をひと固まりとして扱うことを意味します。
たとえば,
for文 = FOR 制御変数名 等号 始値 TO 限界 {STEP 増分}?
となっているので,for文は,
    FOR 制御変数名 = 始値 TO 限界

    FOR 制御変数名 = 始値 TO 限界 STEP 増分
のいずれかの形をしていると読めます。
(構文規則のなかで,構文要素としての記号文字は,構文規則を表すのに用いる記号との混乱を避けるため,その文字名称で書かれています。文字名称は,巻末の表4.1(pp.160〜162)で定義されています。)

また,|で区切られた要素を{ }で括ることがあります。
do文 = DO 出口条件?
出口条件 = {WHILE|UNTIL} 論理式

となっているので,do文は,
DO
DO WHILE 論理式
DO UNTIL 論理式
のいずれかの形に書かれることになります。

規格には,{ }* の形が頻繁に現れます。
たとえば,
data文 = DATA データ要素並び
データ要素並び = データ要素 {コンマ データ要素}*

となっています。これは,
data文 = DATA データ要素 {コンマ データ要素}*
と書いても同じことで,data文には,データ要素を,コンマで区切って,一個以上いくつ書いてもよいことを意味します。

?と*は直前に書かれた要素に対して作用しますが,|は,空白で区切って書かれた一連の要素の列に対して作用します。
たとえば,
幾何図形文 ⊃ PLOT LINES | PLOT LINES コロン 点並び セミコロン?
となっていますが,これは,
幾何図形文 ⊃ PLOT LINES
幾何図形文 ⊃ PLOT LINES コロン 点並び セミコロン?

と同じ意味です。

構文規則では,別のページで定義した規則を参照することが頻繁に起こります。どこに書いてあるか分からない構文要素が出てきたら,附属書E(pp.177〜192)にある構文規則一覧で調べることができます。
たとえば,「点並び」は,
点並び = 座標対 {セミコロン 座標対}*
で,座標対を調べると,
座標対 = 数値式 コンマ 数値式
となっています。この作業は,すべてが文字に還元されるまで続きますが,本当にそこまでやると大変です。


戻る