JIS X 3008:1994 プログラム言語Pascal | ページ 2

2
X 3008-1994 (ISO/IEC 7185: 1990)
その要求事項に対する違反を誤りと規定する。処理系は,これらの情報を使わなくても,そ
うした違反があると報告できることもある。しかし,違反となるかどうかが,実行してみる
か,実行をシミュレートしてみるか,又はそうした情報をもとにして検証手順を踏んでみる
かしなければ分からない場合が必ずある。要求事項に対する違反のうち,違反となるかどう
かがそうした情報を使わずに判定できるものは,誤りといわない。
2. 処理系は,できる限り多くの誤りをできる限り完全に検出するように努めることが望ましい。
ただし,その検出が過大な負担となる場合は,この限りでない。

3.2 拡

張 (extension) この規格の6.に対する変更のうち,この規格に準拠するプログラム(5.2参照)を排除することがないもの。ただし,幾つかの特定のつづりの識別子の使用を禁じてもよい(6.1.2及び6.1.3
参照)。

3.3 処理系定義

 (implementation-defined)  処理系によって異なっているかもしれないが,個々の処理系
では定義されている。

3.4 処理系依

存 (implementation-dependent) 処理系によって異なっているかもしれず,個々の処理系で定義されているとも限らない。

3.5 処理系

 (processor)   プログラムを入力として受け取り,その実行の準備を行い,それをデータとと
もに実行して結果をもたらすためのシステム又は機構。
参考 処理系とは,インタプリタ又はコンパイラと実行時システムといったものだけではなく,その
背後にある計算機とオペレーティングシステム又はそれと同等の機構をも含めていう。例えば,
コンパイラ単独では処理系とはいわない。

4. 定義の方法

 この規格では,プログラム要素の構文を規定するのにBackus−Naur記法に基づいた記述
法を用いる。本来のBackus−Naur記法に幾つかの変更を加えて,記述をより便利にし,再帰的な生成の代
わりに繰返しによる生成ができるようにした。この記述法で使う記号の意味を表1に示す。プログラム要
素についてのそれ以上の規定は,文章又は等価なプログラムの断片によって示す。こうしたプログラムの
断片は,この規格の関連する要求事項に従った意味をもつ。そこでは,6.で標準の識別子として定義する
識別子は,それぞれ対応する標準の実体を表す。
表1 構文の記述に使う記号
記号 意味
= 定義する
> 部分的に定義する
| 又は
・ 定義の終わり
[x] x又は空
[{x}] xを0個以上並べたもの
(x | y) 又はy(一つにまとめて扱うために用いる)
xyz 終端記号xyz
超識別子 非終端記号
超識別子は,漢字,仮名及び英字の列とする。
生成規則の中の終端記号又は非終端記号の列は,その各々が生成する最終的な文字列をその順に連結し
たものを表す。6.1では,この連結は,字句どおりのものとする。すなわち,他の文字をそれらの間に置い
てはならない。6.2以下での連結は,6.1の規則に従う。
Pascalのプログラムを書くのに必要な文字は,6.1で定義する字句及び字句分離符を書くのに必要となる

――――― [JIS X 3008 pdf 6] ―――――

                                                                                              3
X 3008-1994 (ISO/IEC 7185: 1990)
文字として間接的に定める。
終端記号及び非終端記号についての関係を表すのに,“の”,“の中の”,“含む”又は“直接に含む”とい
ういい方をする場合,その意味は,次のとおりとする。
・ yの.x――yを定義している生成規則の右辺に現れるx
...x――“yの.x”と同義
・ yの中の
..y――1回又は何回かの生成を経て,xを生成するy
・ xを含む
..yのうち,そのxを含む
.....y――xを含む .. ..
・ xを直接に含む 他のyを含まないもの
これらの規約は,6.において構文上の要求事項,及び意味上の規定を与える際の構文上の条件を規定す
るのに用いる。
この規格の中の参考は,規格の内容をより明らかにし,規格を適用する際の助けとするための記述とす
る。参考は,この規格の一部ではない。
この規格の中の例は,参考と同等とする。

5. 規格準拠性

 この規格に対する準拠の仕方は,水準0及び水準1の2種類とする。水準0は,整合配
列引数を含まない。水準1は,整合配列引数を含む。

5.1 処理系

 この規格に準拠する処理系とは,次の条件を満たすものをいう。
(a) 水準0の準拠の場合,6.のうち6.6.3.6(e), 6.6.3.7及び6.6.3.8以外で規定する言語の全機能を,6.に定義
する意味をもって受け入れる。
(b) 水準1の準拠の場合,6.に規定する言語の全機能を,6.に定義する意味をもって受け入れる。
(c) 6.に規定する言語のどの機能を実現するにあたっても,プログラム中に6.の規定と違う書き方をする
よう求めたり,何かを追加して書くよう求めたりすることがない。
(d) すべての処理系定義の機能に対して,その定義を与えた文書が用意してある。
(e) この規格のすべての要求事項(それに対する違反を誤りと規定する場合を除く。)に対して,与えられ
たプログラムが違反しているかどうかを判定し,その結果をプログラムブロックの実行に先立って処
理系の利用者に報告することができる。違反があれば,プログラムブロックの実行を禁止しなければ
ならない。
(f) 誤りと規定する違反のそれぞれに対して,次のいずれかの扱いをする。
(1) 用意した文書に,誤りについては報告しないと明記し,用意した文書の中にそうした扱いをする個々
の場合を記した独立した節を設けておく。
(2) プログラムの実行準備の段階で,誤りがある,又は実行時に誤りが起こるかもしれないと報告する。
そのような報告を出した場合にも,実行準備を継続することができる。その場合,プログラムブロ
ックの実行を禁止することもできる。
(3) プログラムの実行中に,誤りが起こったと報告する。
更に,プログラムの実行中に誤りを報告したときには,その実行を終了する。文の中で誤りが生じ
たとき,その文の実行は完了しない。
参考1. したがって,処理をプログラムの実行直前で終えるか,実行途中まで継続するかは,利用者
が指定できる。
(g) 6.に規定のない機能又はそこで禁止する機能を処理系が受け入れる場合には,それらの機能のすべて
を記した文書が用意してある。そうした拡張は,“extensions to Pascal as speciffied by ISO/IEC 7185”と
明記する。

――――― [JIS X 3008 pdf 7] ―――――

4
X 3008-1994 (ISO/IEC 7185: 1990)
参考 日本語による場合は,“JIS X 3008に対する拡張”と明記する。
(h) こうした拡張のいかなる使用に対しても,誤りに対するのと同様に処置することができる。
(i) 処理系依存の機能のいかなる使用に対しても,誤りに対するのと同様に処置することができる。
参考2. 5.1で用いた“できる”という言葉は,報告及びその後の処置が利用者の指定によって切り替
えられる仕組みにしておいてもよいことを示す。
処理系が,この規格に完全に又は部分的に準拠している,と表示する場合には,次の様式によらなけれ
ばならない。準拠の表示は,その処理系の使用時に出力するか,又は用意した文書に明記しておくかでな
ければならない。処理系がこの規格に完全に準拠している場合,準拠の表示は,次のとおりとする。
“本処理系” complies with the requirements of level“番号”of ISO/IEC 7185.
参考 日本語による場合は,次のとおりとする。
“本処理系”は,JIS X 3008の水準“番号”に準拠している。
処理系がこの規格の一部だけに準拠する場合,上の準拠の表示を行ってはならない。その場合の準拠の
表示は,次のとおりとする。
“本処理系”complies with the requirements of level“番号”of ISO/IEC 7185, with the following
exceptions:“この規格の要求事項のうち処理系が準拠していないものの完全な一覧表,又はそうし
た文書の参照”
参考 日本語による場合の書出しは,次のとおりとする。
“本処理系”は,次の事項を除いてJIS X 3008の水準“番号”に準拠している。
いずれの場合も,“本処理系”の部分は,その処理系を間違いなく識別できる名前で置き換え,“番号”
の部分は,該当の水準番号で置き換えなければならない。
参考3. この規格に完全には準拠しない処理系は,準拠していない事項についての完全な明細をその
準拠の表示に書かなくてもよい。準拠していない事項を識別するのに十分な情報を網羅した
文書を参照しておくだけでよい。

5.2 プログラム

 この規格に準拠するプログラムとは,次の条件を満たすものをいう。
(a) 水準0の準拠の場合,6.のうち6.6.3.6(e), 6.6.3.7及び6.6.3.8以外で規定する言語の機能だけを使って
いる。
(b) 水準1の準拠の場合,6.に規定する言語の機能だけを使っている。
(c) 処理系依存の機能についての特定の解釈に依存していない。
参考1. この規格に準拠するプログラムは,処理系定義の特定の値又は機能に依存していてもよい。
2. 規格準拠プログラム及び規格準拠処理系に対する規定は,規格準拠プログラムを規格準拠処
理系で処理した場合に,常に同じ結果が得られることを保証するものではない。結果は,同
じかもしれないし,異なるかもしれない。それはプログラムによる。このことを例示する簡
単なプログラムに次のものがある。
program x (output) ; begin writeln (maxint) nd.

6. 要求事項

6.1 字句要素

    参考 6.1に示す構文規則は,文字から字句要素を構成する方法及びこれらの字句要素の分離の仕方を
与える。これらには,6.1以外で規定する構文に対する規則がそのまま当てはまるわけではない。

――――― [JIS X 3008 pdf 8] ―――――

                                                                                              5
X 3008-1994 (ISO/IEC 7185: 1990)

6.1.1 一般規則

 Pascalプログラムを構成する字句要素は,特殊記号,識別子,指令,符号なし数,ラベ
ル及び文字列とする。文字列(6.1.7参照)中を除いて,英字の表現の違い(大文字・小文字の別,字体の
違いなど)は,プログラムの意味に何ら影響を与えない。
英字 = a | b| c | d| e | f | g| h| i
| j | k| l | m| n| o| p| q| r
| s | t | u| v| w| x| y| z.
数字 = 0| 1| 2| 3| 4
| 5| 6| 7| 8| 9.

6.1.2 特殊記号

 特殊記号は,それぞれ特別な意味をもち,構文上の単位を区切る働きをもつ。
特殊記号 =+|-|*|/|=|<|>|[-]
|.|,|:|;|↑|(|)
|<>|<=|>=|: =|..|予約語 .
予約語 =and-array-begin-case-const-div
|do-downto-else-end-file-for
|function-goto-if-in-label-mod
|nil-not-of-or-packed-procedure
|program-record-repeat-set-then
|to-type-until-var-while-with

6.1.3 識別子

 識別子は,どんな長さでもよい。識別子を構成している文字を,英字の大文字・小文字の
区別をせずに順に並べたものを,その識別子のつづりという。識別子は,どの予約語とも異なったつづり
でなければならない。標準の識別子と規定するものは,特別な働きをもつ(6.2.2.10及び6.10参照)。
識別子 = 英字 [{ 英字 | 数字}] .
例 X
time
readinteger
WG4
AlterHeatSetting
InquireWorkstationTransformation
InquireWorkstationIdentification
..

6.1.4 指令

 指令は,手続き宣言又は関数宣言の中でだけ用いる。指令は,標準の指令forwardだけとす
る(6.6.1及び6.6.2参照)。指令は,どの予約語とも異なったつづりでなければならない。
指令 = 英字 [{ 英字 | 数字}] .
参考 多くの処理系が,拡張として,指令externalを用意している。この指令は,手続き頭部又は関
数頭部に対応する手続きブロック又は関数ブロックが,プログラムブロックの外にあることを
示すのに用いる。通常,対応するブロックは,何らかの処理を加えられた上で,ライブラリ中
に置かれる。

6.1.5 数

 符号なし整数は,整数型(6.4.2.2参照)の値を10進法で表す。符号なし実数は,実数型(6.4.2.2
参照)の値を10進法で表す。英字e及びそれに続く指数は,その前の部分の表す値に10の指数乗を乗ず
ることを意味する。符号なし整数が表す値は,閉区間 [0, maxint] 内になければならない(6.4.2.2及び6.7.2.2
参照)。

――――― [JIS X 3008 pdf 9] ―――――

6
X 3008-1994 (ISO/IEC 7185: 1990)
符号付き数 = 符号付き整数 | 符号付き実数 .
符号付き実数 = [ 符号 ] 符号なし実数 .
符号付き整数 = [ 符号 ] 符号なし整数 .
符号なし数 = 符号なし整数 | 符号なし実数 .
符号 = + |‐ .
符号なし実数 = 数字列 . 小数部 [ e 指数 ]
| 数字列 e 指数 .
符号なし整数 = 数字列 .
小数部 = 数字列 .
指数 = [ 符号 ] 数字列 .
数字列 = 数字 [{ 数字}] .
例 1e10
1
+100
‐0.1
5e-3
87.35E+8

6.1.6 ラベル

 ラベルは,数字列とし,その数字列の表す整数値によって区別する。その値は,閉区間 [0,
9999] 内になければならない。ラベルの.数字列が表す整数値を,そのラベルのつづりという。
ラベル = 数字列 .
..

6.1.7 文字列

 文字列要素を1個だけ含む文字列は,文字型(6.4.2.2参照)の値を表す。2個以上の文字
.. ..
列要素を含む文字列は,その文字列が含む文字列要素と同じ個数の成分をもつ文字列型(6.4.3.2参照)の
値を表す。同じ個数の成分をもつ文字列は,すべて同じ文字列型をもつ。
文字列要素として許される表記の集合から文字型の値の部分集合への処理系定義の1対1対応がなけれ
...
ばならない。文字列の中の文字列要素は,それと対応する文字型の値を表す。
文字列 = 文字列要素 [{ 文字列要素}] .
文字列要素 = アポストロフィ表記 | 文字列用文字 .
アポストロフィ表記 = .
文字列用文字 = 処理系定義の文字集合の文字の一つ .
参考 アポストロフィ自身を,文字列用文字にはできない。文字列中でアポストロフィを表したい場
合には,アポストロフィ表記を用いる。
例 A
;
Pascal
THIS IS A STRING

6.1.8 字句分離符

}] も*) も含まない文字及び改行から成る列を注釈本体という。このとき,構文要素
([{ | (*) 注釈本体 (}] | *) )
は,その[{ 又は(*が文字列中又は注釈本体中にある場合を除いて,注釈という。
参考 以下の例示においては,注釈中の文字として漢字又は仮名を用いることがある。これは,この

――――― [JIS X 3008 pdf 10] ―――――

次のページ PDF 11

JIS X 3008:1994の引用国際規格 ISO 一覧

  • ISO/IEC 7185:1990(IDT)

JIS X 3008:1994の国際規格 ICS 分類一覧