#?SuikaWiki/0.9
[1] プログラム言語 [[Pascal]] ([[ISO/IEC7185]]:1990,
[[JISX3008]]-1994) の文法記述に使われている [[BNF]]
変種について。

規格票では4章に説明があります。実際の Pascal
の構文定義は6.1にあります。

-DEF  = "="   ;; 定義する
-PDEF = ">"   ;; 部分的に定義する
-OR   = "|"
-EOD  = "."   ;; 定義の終わり
-option = "[" elements "]" ;; 0*1
-repetition = "{" elements "}" ;; 0*∞
-group  = "(" elements ")" ;; 集団化
-char-val = "‘" 1*CHAR "’" ;; 終端記号
-超識別子 = 1*超識別子文字 ;; 非終端記号
-超識別子文字 = [[漢字]] / [[仮名]] / [[英字]] ;; 仮名・漢字は JIS で追加。

-rule = rule-name defined-as elements [FWS] EOD
-rule-name = 超識別子
-defined-as = [FWS] (DEF / PDEF) [FWS]
-elements = [FWS] alternation [FWS]
-alternation = concatenation *(or-operator concatenation)
-or-operator = [FWS] OR [FWS]
-concatenation = element *(FWS element)
-element = rule-name / group / repetition / option / char-val

- [2] Pascal では一般に大文字・小文字を区別しません。従って Pascal 仕様書ではこの構文を使って定義する際に文字列 (終端記号) に小文字を使っていますが、大文字でもよいことになります。
- [3] 構文使用例: [SAMP(BNF)[識別子 = 英字 { 英字 | 数字 }.]] (6.1.3 より)
- [4] 規格票には [CODE(BNF)[‘'’]] というのも出てきます。構文規則を [[ASCII]] で表記するとすると [CODE[''']] になってしまいそうですが、そういうことは考えていないようです。まあ印刷文書だしいいんでしょう。
