#?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[''']] になってしまいそうですが、そういうことは考えていないようです。まあ印刷文書だしいいんでしょう。