バージョン

特殊なシーケンス形式 (Syntax Parsing Engine)

トピックの概要

目的

このトピックは、文章校正を構成するために必要な EBNF ファイル内の特殊なシーケンス セクションの形式について説明します。

前提条件

このトピックを理解するためには、以下のトピックを理解しておく必要があります。

トピック 目的

このトピックは、Syntax Parsing Engine の概要を示します。

このトピックは、Syntax Parsing Engine の文章校正の概要を示します。

このグループのトピックでは、Syntax Parsing Engine が行う文章校正解析について説明します。

このトピックは、文章校正を定義するために使用する EBNF ファイル形式の概要を説明します。

特殊なシーケンス セクションの概要

特殊なシーケンス セクションのサマリー

Syntax Parsing Engine でサポートされる EBNF 形式を使用することにより、文章校正インスタンス、レクサー状態、終端記号および非終端記号に関する多くの説明的な情報を供給できます。

この情報は、EBNF ファイルの特殊なシーケンス内で XML を使用して指定されます。

特殊なシーケンス セクションの型

特殊なシーケンス セクションの要点チャート

セクション 詳細

文章校正プロパティ セクションでは、文章校正、レクサー状態および終端記号を定義し、EBNF ファイルの一番上でのみ許可されます。

このセクションは、次のルールで定義される NonTerminalSymbol インスタンス上で特殊なプロパティを設定するために使用されます。

文章校正プロパティ セクション

概要

文章校正プロパティ セクションでは、文章校正、レクサー状態および終端記号を定義し、EBNF ファイルの一番上でのみ許可されます。1 つの文章校正プロパティ セクションのみが可能です。

要素

以下の表は、それぞれの親/子関係を持ち文章校正プロパティ セクションで許可されるすべての要素のリストです。

Grammar 要素:

説明: 非終端記号および構文ルールツリーを除いて Grammar インスタンスですべてを定義します。これは通常の EBNF 形式で実施されます。

親要素: (なし)

属性 タイプ 説明

string

(オプション) Grammar.EndOfStreamSymbolName プロパティの値指定されない場合、値は「EndOfStreamToken」になります。

string

(オプション) Grammar.Name プロパティの値指定されない場合、値は「Null」になります。

string

(オプション) Grammar.NewLineSymbolName プロパティの値指定されない場合、値は「NewLineToken」になります。

string

(オプション) Grammar.StartSymbol 値として設定される NonTerminalSymbol の名前指定されない場合、ファイルで定義される最初の非終端記号は開始記号として使用されます。

bool

(オプション) Grammar.SupportsParsing プロパティの値指定されない場合、値は「True」になります。

SyntaxTreePruningMode

(オプション) Grammar.SyntaxTreePruningMode プロパティの値指定されない場合、値は「BasedOnChildrenAndName」になります。

string

(オプション) Grammar.UnrecognizedSymbolName プロパティの値指定されない場合、値は「UnrecognizedToken」になります。

string

(オプション) Grammar.WhitespaceSymbolName プロパティの値指定されない場合、値は「WhitespaceToken」になります。

string

(オプション) Grammar.WhitespacePattern プロパティの値指定されない場合、値は「[ \t]+」になります。

子要素 説明

終端記号を定義し、文章校正のデフォルトの LexerState (Grammar.LexerStates.DefaultLexerState) に追加します。

TerminalSymbolReference

既存の TerminalSymbol を文章校正のデフォルトの LexerState に追加します。

TerminalSymbol 要素:

説明: 新しい TerminalSymbol インスタンスを作成し、独自のレクサー状態に追加します。

親要素: GrammarLexerState

属性 タイプ 説明

(オプション) Value 属性がどのように解釈されるかを示す値とりうる値は、LiteralLiteralIgnoreCase および RegularExpression です。指定されない場合、値はリテラルになります。

bool

(オプション) 新しい TerminalSymbol が終了記号として独自のレクサー状態に追加するかどうかを示します。終了記号の詳細については、「 字句解析の概要」トピックを参照してください。

bool

(オプション) TerminalSymbol の値IsLookaheadNegative property, which indicates whether the LookaheadPattern specifies a positive or negative lookahead.指定されない場合、値は False になります。

bool

(オプション) TerminalSymbol.IsSignificant プロパティの値指定されない場合、値は「Null」になります。

bool

(オプション) TerminalSymbol.IsStartOfErrorRecoveryPair プロパティの値指定されない場合、値は False になります。

string

(オプション) TerminalSymbol の値LanguageElementName プロパティ指定されない場合、値は「Undefined」になります。

string

(オプション) TerminalSymbol として設定される既存の LexerState の名前LexerStateToEnter プロパティ指定されない場合、値は「Null」になります。

注:

Note

名前の指定されたレクサー状態は、ドキュメント内の LexerStateToEnter 属性の前または後ろに定義されます。

string

(オプション) TerminalSymbol.LookaheadPattern プロパティの名前。この終端記号に関連づけられたトークンに準拠すべき、または準拠すべきでないテキストに関してアサーションを行う正規表現です。指定されない場合、値は「Null」になります。

string

(必須) TerminalSymbol.Name プロパティの値

string

(オプション) TerminalSymbol.Value プロパティの値指定されなければ、Name から得られた値が使用されます。

子要素 説明

LexerState

LexerState を定義し、 Grammar.LexerStates コレクションに追加し、そして LexerState インスタンスを TerminalSymbol.LexerStateToEnter 値として設定します。

TerminalSymbolReference 要素

説明: 既存の TerminalSymbol インスタンスを独自のレクサー状態に追加します。

注:

Note

参照された TerminalSymbol の定義が、ドキュメント内のこの要素の前または後に発生します。

親要素: GrammarLexerState

属性 タイプ 説明

IsExitSymbol

bool

(オプション) 新しい TerminalSymbol が終了記号として独自のレクサー状態に追加するかどうかを示します。終了記号の詳細については、「 字句解析の概要」トピックを参照してください。

string

(必須) 独自のレクサー状態に追加する既存の TerminalSymbol インスタンスの名前

LexerState 要素

説明: 新しい LexerState インスタンスを定義し、 Grammar.LexerStates コレクションに追加します。

親要素: TerminalSymbol

属性 タイプ 説明

string

(必須) 新しい LexerState インスタンスの名前

子要素 * 説明*

TerminalSymbol

TerminalSymbol を定義し、親 LexerState に追加します。

TerminalSymbolReference

既存の TerminalSymbol を親 LexerState に追加します。

以下は、文章校正プロパティ セクションの例です。

?
<Grammar Name="My Custom Grammar" NewLineSymbolName="LineBreakToken">
    <TerminalSymbolReference Name="LineBreakToken" />
    <TerminalSymbolReference Name="WhitespaceToken" />
    <TerminalSymbol Name="Word" Value="[\w]+" Comparison="RegularExpression" />
    <TerminalSymbol Name="Punctuation" Value="\W" Comparison="RegularExpression" />
    <TerminalSymbol Name="DoubleQuote" Value=""" LanguageElementName="StringLiteral">
        <LexerState Name="StringLiteral">
            <TerminalSymbol Name="StringLiteralContent" Value="([^"\\\r\n]|(\\[^\r\n]))+"
                Comparison="RegularExpression"LanguageElementName="StringLiteral" />
            <TerminalSymbolReference Name="LineBreakToken" IsExitSymbol="true" />
            <TerminalSymbolReference Name="DoubleQuote" IsExitSymbol="true" />
        </LexerState>
    </TerminalSymbol>
</Grammar>
?

非終端記号属性セクション

概要

非終端記号属性セクションは、非終端記号の定義のすぐ前に許可されます。このセクションは、定義された次の NonTerminalSymbol インスタンスに対してのみ適用する特殊プロパティを設定するために使用します。

要素

以下の表は、NonTerminalSymbolOptions 要素のすべての属性のリストです。

属性 タイプ 説明

bool

(オプション) NonTerminalSymbol.HasPriority プロパティの値指定されない場合、値は False になります。

bool

(オプション) NonTerminalSymbol.IsError プロパティの値指定されない場合、値は False になります。

bool

(オプション) NonTerminalSymbol.IsStartOfErrorRecoveryPair プロパティの値指定されない場合、値は False になります。

bool

(オプション) NonTerminalSymbol.PreventPruning プロパティの値指定されない場合、値は False になります。

bool

(オプション) NonTerminalSymbol.SuppressAmbiguityWarnings プロパティの値指定されない場合、値は False になります。

SuppressErrorRecoveryForSymbols

string

(オプション) NonTerminalSymbol.SuppressErrorRecoveryForSymbol メソッドに渡さなければならない記号名のコンマ区切りリスト名前付き記号は、NonTerminalSymbol の前または後に定義できます。

以下は、「?」文字間で XML で定義した属性セクションに沿った非終端記号定義の例です。

Document = {Sentence};
?<NonTerminalSymbolOptions SuppressErrorRecoveryForSymbols="Punctuation" />?
Sentence = {Word | StringLiteral}-, Punctuation;
StringLiteral = DoubleQuote, [StringLiteralContent], DoubleQuote;

関連コンテンツ

トピック

このトピックの追加情報については、以下のトピックも合わせてご参照ください。

トピック 目的

このトピックは、Syntax Parsing Engine が使用する EBNF 形式での ISO 14977 仕様からの逸脱について説明します。

このトピックでは、EBNF コンテンツから文章校正を作成するプロセスを説明します。

このトピックでは、文章校正から EBNF コンテンツを作成するプロセスを説明します。