構文の表記方法


 この節は、Eiffel 構文仕様 で使用する表記方法を記述します。


末端要素<terminal>

Inheritance(継承)
inherit Parent_list(親リスト)

シンボル<Symbol>

 シンボルは、空白文字や他の文字を含まない、一字以上の文字から成り立つものであり、+?= などといったものです。この生産物では、シンボルは、次の例のように、文字どおりボールド体で現れます。

Assignment_attempt(試行割り当て)
Writable(書き込み可能) ?= Expression(式)

 ここで記述している表記法は、同じように、表記法自体のシンボルを持っています。この生産物での表記法のシンボルと Eiffel のシンボルとの混乱を避けるために、表記法のシンボルは、次のように、赤で表示します。

New_feature_list(新たな特徴並び)
{ New_feature(新たな特徴) , ... }+

 カンマは Eiffel のシンボルであるのに対して、左中括弧と右中括弧、 三つのドットとプラス記号は表記法の一部です。

可変トークン<Variable Token>

 可変トークンは、IntegerIdentifier などといった、末端要素です。これらは、下に示したように、平易な英語<English>で記述します。

Identifier(識別子)
 識別子は、一字以上の文字の並びであり、 最初の文字は英字( a から z までと A から Z まで)であり、それ以降の文字があるときは、 英字、数字( 0 から 9 まで)、あるいは下線文字(_)を続けます。

生産物<production>

Construct(構成要素)
right-hand-side(左辺)

 あらゆる非末端要素は、このような生産物の正確に一つの左辺に現れます。生産物の右辺には、左辺の構成要素の構造を記述します。左辺にある非末端要素は、その期待される生産物へアクセスするためにクリックできます。右辺の書式は、集合<aggregate>選択<choice>、そして 反復<repetition> の三種類が使えます。

集合<Aggregate>

 集合は、所与の順序で連結される、固定数の部品(いくつかは付加的であるかもしれない)からなる構成要素を記述します。集合の左辺は、次の例にあるように、空でない構成要素を並べたものです。

Binary_expression(二項式)
Expression(式) Infix_operator(前置演算子) Expression(式)

 二項式 は、式、前置演算子、そして他の式から成ります。

 もし集合がオプションの構成要素を含んでいるならば、その構成要素は、赤い角括弧 [] で囲みます。

New_feature(新たな特徴)
[ frozen ] Feature_name(特徴名)

 上の例において、キーワード frozen は、オプションです。

選択<Choice>

 選択は、いくつかの所与の変種を持つ構成要素を記述します。選択の左辺は、空でない構成要素を並べ、赤い縦棒 | で区切ったものです。

Feature_name(特徴名)
Identifier(識別子) | Prefix(前置子) | Infix(中置子)

 Feature_name(特徴名) は、Identifier(識別子)Prefix(前置子)、あるいはInfix(中置子)のいずれかです。

反復<Repetition>

 反復は、すべてが所与の構成要素と同一である、可変数の部品からなる構成要素を記述します。反復の左辺は、次の二つの書式の一つになります。

{ Construct(構成要素) Separator(区切り文字) ... }
{ Construct(構成要素) Separator(区切り文字) ... }+

 ここで、Separator(区切り文字)は、通常は末端要素ですが、必ずしもそうとは限りません。これが述べていることは、記述される構成要素は、構成要素のゼロ個以上の類語<specimen>から成り、もし構成要素が二つ以上あるならば区切り文字で区切ります。最初の書式では、+ を伴わず、記述される構成要素の類語は空であってもよいです。第二の書式では、+ を伴い、それらは、少なくとも一つの構成要素を含まなければなりません。

注意事項<Note>

Interval(間隔)
Choice_constant(選択定数) .. Choice_constant(選択定数)

注意事項: 字句解析プログラムは、次の例のように、十分整然としていなければなりません。

inspect expr
when 1..2 then
...

 実際、 '1..2' は、 二つの連続した実数の定数 '1.' と '.2' ではなく、 Eiffel のシンボル '..' によって区切られた、 二つの整数定数 '1' と '2' として認識されます。


Copyright (c) 1997, Eric Bezault
ericb@gobo.demon.co.uk
http://www.gobo.demon.co.uk
Last Updated: 6 September 1997
HomeHome