このトピックは、文章校正を定義するために使用する EBNF ファイル形式の概要を説明します。
このトピックを理解するためには、以下のトピックを理解しておく必要があります。
このトピックは、以下のセクションで構成されます。
EBNF ファイルを使用可能な Syntax Parsing Engine 用に文章校正を定義するにはEBNF は「 Extended Backus-Naur Form (拡張バッカス・ナウア記法)」の略で、コンテキストに依存しない文章校正を定義するために使用される形式です。この形式の仕様は ISO 14977 です。
注:
EBNF ファイルには、文章校正の記号および生産の簡潔な説明が示される 1 つ以上のルールが含まれます。
以下は、Syntax Parsing Engine で使用される EBNF 形式の非終端記号ルール例です。
VariableDeclarationStatement =
Type, IdentifierToken, [EqualsToken, Expression], SemicolonToken
| VarKeyword, IdentifierToken, EqualsToken, Expression, SemicolonToken;
定義のヘッドと本文が等号で区切られていることが分かるように、簡潔な記号はコンマで区別され全体のルールはセミコロンで終わります。ヘッド記号にファイル内に定義するルールがなかった場合、新しい非終端記号はその旨を表すために作成されます。すでに定義済みであった場合は、このルールの生産は以前に定義されたその他の生産に対するオルタナティブとなります。このため、この例における VariableDeclarationStatement も複数行で定義されます。
VariableDeclarationStatement =
Type, IdentifierToken, [EqualsToken, Expression], SemicolonToken;
VariableDeclarationStatement =
VarKeyword, IdentifierToken, EqualsToken, Expression, SemicolonToken;
注:
非終端記号は、定義される前に使用できます。これは、コンテキストに依存しない文章校正が再帰できるように必要です。これがなければ、ネスト化されたクラスは C# のような言語で定義できません。
これは、C# 言語での簡単な定義です。
Root = {ClassDeclaration};
ClassDeclaration = ['public'], 'class', Identifier, '{', Members, '}';
Members = {Member};
Member = ClassDeclaration | FieldDeclaration;
FieldDeclaration = ['public'], Type, Identifier, ';';
Type = Identifier;
注:
このトピックの追加情報については、以下のトピックも合わせてご参照ください。