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