この規格ページの目次
5
X 3017 : 2013 (ISO/IEC 30170 : 2012)
5.2.2 生成規則
生成規則は,次の形式とし,見やすさを考慮して,適宜,改行したり空白を入れたりして表記する。
X :: Y
ここで,Xは非終端記号[5.2.4 b)参照]とし,Yは項列(5.2.3参照)を縦線(|)で区切って並べたも
のとする。生成規則は,Yに並んでいる項列それぞれが表す文字の並びの集合の和集合を,非終端記号X
が表す文字の並びの集合であると定義する。このことから,生成規則X :: Yを,“Xの生成規則”という。
また,Xをこの生成規則の“左辺”といい,Yを“右辺”という。非終端記号XはYに現れている非終端
記号をそれぞれ直接に参照するという。非終端記号Aが非終端記号Bを参照するという関係を,次のとお
り再帰的に定義する。
− AがBを直接参照する場合,AはBを参照する。
− Aが非終端記号Cを参照し,CがBを参照する場合,AはBを参照する。
注記1 項列は,5.2.3に規定されるとおり,文字の並びの集合を表している。
構文規則中の自然言語で書かれた制約,又は,意味規則(5.3参照)で,項列Xに言及する“X”は,項
列Xが表す文字の並びの集合の一つの要素を表す。特に,Xが一つの非終端記号《Y》[5.2.4 b)参照]であ
る場合,“《Y》”は非終端記号が表す文字の並びの集合の一つの要素を表し,非終端記号《Y》自体を表す場
合は“非終端記号《Y》”と記述する。また,“《Y》”が表す文字の並びは,“《Y》という形式である”という。
非終端記号《Y》が非終端記号《Z》を直接参照するとき,“《Y》の《Z》”は,《Y》が表す文字の並びのうちその
ような《Z》が表す部分を指す。
注記2 例えば,生成規則“《X》 :: 《Y》 《Z》”の《X》が表す文字の並びxは,《Y》が表す文字の並びy
と《Z》が表す文字の並びz とから構成され,x=yz である。このとき,“《X》の《Z》”はzを指
す。
“《Y》内の《Z》”は,《Y》が表す文字の並びのうち,非終端記号《Y》が参照する《Z》が表す部分を指す。
“《Y》のそれぞれの《Z》”が表すものは,次のa) c)による。
a) この記法は,一次項P(5.2.4参照)に含まれて《Z》が現れており,かつ,《Y》の生成規則の右辺に,P
の0 回以上反復[5.2.4 f)参照]であるP*が現れている場合に対して用いる。
b) 《Y》の生成規則の右辺のP*を長さn(n ≧ 0)のPの並びで置き換えてできるものをYnとする。《Y》
が表す任意の文字の並びyについて,Yiが表す文字の並びがyであるようなiが存在する。
c) “《Y》のそれぞれの《Z》”は,Yiに繰り返して現れる《Z》が表すyの部分それぞれを指す。
ある細分箇条の生成規則において《Y》が参照する《Z》がただ一つしかない場合,構文規則中の自然言語で
書かれた《Y》に対する制約,又は,《Y》の意味規則において,“《Z》”は,“《Y》の《Z》”又は“《Y》内の《Z》”
の省略形である。
非終端記号《入力要素》(8.1参照),《プログラム》(10.1参照)及び《パターン》(15.2.15.4参照)を開始
記号という。
注記3 あるプログラムのプログラムテキストの解釈は,まず《入力要素》の生成規則(8.1参照)に基
づいて字句解析を行い,その解析結果の《入力要素》に基づいて《プログラム》(10.1参照)の
構文解析及び意味解析を行う。また,《正規表現リテラル》(8.7.6.5参照)の解釈は《パターン》
(15.2.15.4参照)に基づいて行う。そのため,非終端記号《入力要素》,《プログラム》及び《パ
ターン》を開始記号という。
例1 次の例は,《入力要素》の生成規則である。この生成規則は,《入力要素》は,《行終端子》,《空白
――――― [JIS X 3017 pdf 11] ―――――
6
X 3017 : 2013 (ISO/IEC 30170 : 2012)
類》,《コメント》,《プログラム終端指示子》又は《字句》のいずれかであることを表す。
《入力要素》 ::
《行終端子》
|《空白類》
|《コメント》
|《プログラム終端指示子》
|《字句》
例2 《Y》及び《Z》を次のように定義する。
《Y》 ::
《Z》 ( “#” 《Z》 )*
《Z》 ::
“a”|“b”|“(” 《Y》 “)”
このとき,《Y》の表す次のような文字の並びそれぞれに対して,“《Y》のそれぞれの《Z》”は下線を付し
た部分それぞれを表す。
a
a#b
a#b#a
(a#b)
a#(a#b)#a
5.2.3 項列
項列は,項(5.2.4参照)の並びとする。項列Sは,T1 T2 . . .Tn(n ≧ 1)という並び[ここで,Ti(1 ≦
i ≦ n)は項とする。]であり,t1 t2 . . . tnという形式(ここで,tiは,Tiが表す文字の並びの集合の任意の
要素とする。)の全ての文字の並びの集合を表す。ただし,Tiが特記項の場合のtiの意味は,5.2.4 d)で定義
する。
《行終端子》(8.3参照),《空白類》(8.4参照)及び《コメント》(8.5参照)は,《字句》(8.7参照)の区切
りとして使われ,通常は無視されるため,箇条8及び15.2.15.4以外では,《行終端子》,《空白類》及び《コ
メント》は生成規則の右辺から省かれている。すなわち,生成規則の右辺の項列の中で,項の前後には次の
ような項があるものとみなす。
( 《行終端子》|《空白類》|《コメント》 )*
ただし,《行終端子》又は《空白類》が表す文字の並びの集合の要素が現れてはならない場所,又は,現れ
なければならない場所をそれぞれ,特記項の禁止[5.2.4 d) 2)参照]又は必須[5.2.4 d) 3)参照]で示す。
例 次の例は,“alias”[終端記号,5.2.4 a)参照],《新しい名前》及び《別名付与対象名》を,この順番
で並べた文字の並び(ただし,それらの要素の間に任意の数の《行終端子》,《空白類》及び/又は《コ
メント》があってもよい。)を表す。
“alias” 《新しい名前》 《別名付与対象名》
5.2.4 項
項は,文字の並びの集合を表すか,又は,項が含まれる項列が表す文字の並びの集合に対する制約を表
す。項は,次のa) h)のいずれかとする。特に,a) c)の項を,一次項という。
注記1 項は,再帰的に定義されていることに注意する。
――――― [JIS X 3017 pdf 12] ―――――
7
X 3017 : 2013 (ISO/IEC 30170 : 2012)
a) 終端記号
タイプライタ体の文字の並びを二重引用符(“”)で囲んで表記する。終端記号は,そのタイプライタ
体の文字の並びだけからなる集合を表す。
例1 “+” は,+という1文字の並びを表す。“def” は,defという3文字の並びを表す。
b) 非終端記号
その名称を二重山括弧(《》)で囲んで表記する。非終端記号が表す文字の並びの集合は,生成規則に
よって定義する。
注記2 対応する国際規格では,非終端記号の表記に斜体字を用いている。
例2 次の生成規則によって定義される《2進数字》は,“0” 又は “1” を表す。
《2進数字》 ::
“0”|“1”
c) 一括
項列を縦線(|)で区切って並べたものを丸括弧[()]で囲んで表記する。一括は,そこに並んでい
る項列それぞれが表す文字の並びの集合の和集合を表す。
例3 次の例は,《英数字》又は《行終端子》を表す。
( 《英数字》|《行終端子》 )
d) 特記項
語句を角括弧([])で囲んで表記する。特記項は,その語句に応じて,次のことを特記する。
1) 否定先読み
否定先読みは,[先読み S]と表記する。Sは,終端記号をカンマ(,)で区切って並べたものを波
括弧({})で囲んで表記する。否定先読みは,Sに並んでいる非終端記号が表す文字の並びが,そ
の否定先読みの直後に現れてはならないという制約を表す。
例4 次の例では,《括弧なし実引数》が “[{” で始まってはならないことを示している。
《括弧なし実引数》 ::
[先読み[{“[{”}]] 《実引数リスト》
2) 禁止
禁止は,[T禁止]と表記する。Tは,一次項とする。禁止は,そこにTの表す文字の並びが現れて
はならないという制約を表す。
例5 次の例は,そこに《行終端子》が現れてはならないことを表す。
[《行終端子》禁止]
3) 必須
必須は,[T必須]と表記する。Tは,一次項とする。必須は,そこにTの表す文字の並びが一つ以
上現れなければならないという制約を表す。
例6 次の例は,一つ以上の《行終端子》が現れなければならないことを表す。
[《行終端子》必須]
4) その他の特記項
その他の特記項は,[U]と表記する。Uは,d) 1) d) 3)のいずれにも該当しない語句とする。この
特記項は,Uが示す文字の並びの集合を表すか,又は,その特記項が含まれる項列が表す文字の並
――――― [JIS X 3017 pdf 13] ―――――
8
X 3017 : 2013 (ISO/IEC 30170 : 2012)
びの集合に対する,Uが示す制約を表す。
例7 次の例は,《ソース文字》とは,ISO/IEC 646:1991の国際基準版で規定された任意の文字で
あることを表す。
注記3 ISO/IEC 646:1991の国際基準版は,対応日本工業規格(日本産業規格)のJIS X 0201:1997の参考1
(ISO/IEC 646との関係)にも記載がある。
《ソース文字》 ::
[ISO/IEC 646:1991の国際基準版で規定されている任意の文字]
例8 次の例は,“=begin” が行頭に現れなければならないという制約を表す。
[行頭] “=begin”
e) 省略可
一次項の右肩に疑問符(・)を付けて表記する。省略可は,その一次項が表す文字の並びの集合に,文
字の空列を加えた集合を表す。
例9 次の例は,《ブロック》があってもなくてもよいことを表す。
《ブロック》・
f) 0回以上反復
一次項の右肩にアスタリスク(*)を付けて表記する。0回以上反復は,その一次項が表す文字の並び
の集合から,0回以上任意の要素を取り出して並べてできる文字の並び(0回取り出したときは文字の
空列となる。)全てからなる集合を表す。
例10 次の例は,《elsif節》を0個以上並べた文字の並びを表す。
《elsif節》*
g) 1回以上反復
一次項の右肩に正符号(+)を付けて表記する。1回以上反復は,その一次項が表す文字の並びの集合
から,1回以上任意の要素を取り出して並べてできる文字の並び全てからなる集合を表す。
例11 次の例は,《when節》を1個以上並べた文字の並びを表す。
《when節》+
h) 除外
二つの一次項の間に負符号(−)を置いて表記する。除外は,負符号の左の一次項が表す文字の並び
の集合から,負符号の右の一次項が表す文字の並び全てを取り除いてできる集合を表す。
注記4 対応する国際規格では,“but not”を用いて除外を表記しているが,この規格では,代わり
に負符号(−)を使用する。
例12 次の例は,《一重引用符文字列メタ文字》でない《ソース文字》を表す。
《ソース文字》 − 《一重引用符文字列メタ文字》
5.2.5 概念的名前
開始記号が参照していない非終端記号(ただし,開始記号を除く。)を概念的名前という。概念的名前と
非終端記号とを区別するため,概念的名前に対する生成規則は,:: を ::= に置き換えて表記する。
注記 この規格では,意味的に関連のある非終端記号が,構文規則上では離れた位置にあることがあ
る。このような非終端記号をまとめる名前[例えば,《代入》(11.4.2参照)]を付けるために,
――――― [JIS X 3017 pdf 14] ―――――
9
X 3017 : 2013 (ISO/IEC 30170 : 2012)
概念的名前を使用する。また,概念的名前は,意味規則の中だけで参照する非終端記号[例え
ば,《2項演算子》(11.4.4参照)]を定義する場合にも使用する。
例 次の例は,《代入》という概念的名前を定義する。《代入》は,《代入式》又は《代入文》のいずれかに
言及するために使うことができる。
《代入》 ::=
《代入式》
|《代入文》
5.3 意味規則
構文規則に対応する意味規則は,必要とする細分箇条の中に“意味規則”という見出しを設けその下に
記す。この規格では,プログラムの動作を,そのプログラムを評価するという過程によって規定する。プ
ログラム構成要素(非終端記号の表す文字の並び)を評価すると,通常,値がもたらされる。これをその
プログラム構成要素の(評価結果の)値という。意味規則は,対応する構文規則で規定されるプログラム
構成要素に対する評価の方法と評価結果の値とを規定する。
意味規則に記述されたあるプログラム構成要素に対する評価の手順の開始を,そのプログラム構成要素
の評価の開始,そのプログラム構成要素に対して行うべき手順がなくなった時点を,そのプログラム構成
要素の評価の終了という。あるプログラム構成要素の評価が開始され,かつ,そのプログラム構成要素の
評価が終了していない場合,そのプログラム構成要素は評価中であるという。
ある非終端記号Xに対する意味規則の記述がなく,かつ,Xの生成規則の右辺が他の非終端記号を縦線
(|)で区切って並べたものである場合,Xの意味規則は,Xが参照する他の非終端記号の意味規則に従
う。
例1 《変数》(11.5.4参照)は次の生成規則をもち,意味規則の記述をもたない。
《変数》 ::
《定数識別子》
|《大域変数識別子》
|《クラス変数識別子》
|《インスタンス変数識別子》
|《局所変数識別子》
この場合,《変数》の意味規則は,《定数識別子》,《大域変数識別子》,《クラス変数識別子》,《イ
ンスタンス変数識別子》又は《局所変数識別子》の意味規則に従う。
生成規則の右辺に同じ非終端記号が複数出現する場合,意味規則でそれぞれの非終端記号を区別するた
めに,非終端記号の末尾に添字で番号を付けることがある(例えば,《演算子式》1)。
概念的名前の意味規則は,その概念的名前が表す文字の並びの集合の要素であるプログラム構成要素の
意味規則をまとめて記述する。意味規則において,概念的名前《X》に言及する “《X》” は,非終端記号《X》
が表す文字の並びの集合の要素であるプログラム構成要素を表す。
例2 《論理AND式》(11.2.3参照)は次の生成規則をもつ。
《論理AND式》 ::=
《キーワードAND式》
|《演算子AND式》
《論理AND式》は概念的名前であり,プログラムテキストの構文解析の過程で,《キーワー
――――― [JIS X 3017 pdf 15] ―――――
次のページ PDF 16
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語