質問
以下の定義を見てください。これは正確に何を定義することになっていますか?EBNFによると 仕様, 、ブラケット []
オプションの項目を定義するのはなぜですか *
必要ですか?それは余計なことではありませんか(ゼロ回以上の繰り返しを意味するため)?
2つ目は、括弧内の部分をどのように解釈するかということです。ザ- -
は除外指標であるため、括弧内の項目のいずれか、または3つすべてのシーケンス(ゼロ以上)を除外することを意味しますか ^<&
, 、続いて ]]>
, 、ゼロ以上が続くから ^<&
)?
CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
それとも私は完全に間違っていますか、これはEBNF以外のものですか?
事前に感謝します
解決
XML仕様では、ISOで指定されているEBNFは厳密には使用されません。あなたが見ている場合 第6節 XML仕様のうち、使用される表記法を定義します。角括弧は、文法のオプション要素を示すためではなく、正規表現のような方法で使用されます;そして、 -
除外に使用すると、括弧内のグループ全体が除外されます。したがって、あなたが引用した行は次のように構築されていることを示しています:
[^<&]
-である任意の文字 ない 左の山かっこ(<
)またはアンパサンド(&
)[^<&]*
-左山括弧またはアンパサンドではないゼロ以上の文字[^<&]* - ([^<&]* ']]>' [^<&]*)
-左山かっこまたはアンパサンドではなく、特定の文字シーケンスを含まないゼロ以上の文字]]>
全体的なシーケンス内の任意の場所
所属していません StackOverflow