このトピックは、カスタム言語を作成するプロセスを説明します。
このトピックを理解するためには、以下のトピックを理解しておく必要があります。
文章校正定義が完了すると、その文章校正構造に準拠するドキュメントを解析するために使用できます。その手順を以下に示します。
EBNF 文章校正定義から Grammar インスタンスを作成するか、コードで文章校正インスタンスを構築します。
LanguageBase から派生し文章校正インスタンスを所有するカスタム言語クラスを作成します。
TextDocument を作成し、その Language プロパティをカスタム言語クラスのインスタンスに設定します。
注:
文章校正からカスタム言語を作成する方法は 2 通りあります。
CustomLanguage クラスの使用
言語クラスの生成
Grammar
インスタンスを LanguageBase
から派生する CustomLanguage
クラスのコンストラクターに渡すことにより文章校正用カスタム言語を作成できます。これは、提供された Grammar
インスタンスに基づいてドキュメントを解析するために特別にビルドされた CustomLanguage
インスタンスを作成します。
以下の表には、CustomLanguage
クラスで公開されたメンバーが含まれます。
特殊な文章校正定義でドキュメントを解析するために特にビルドされた LanguageBase
派生クラスを生成することにより文章校正からカスタム言語を作成できます。CustomLanguage
の作成は言語の動的生成とみなされる一方で、言語クラスは言語を事前にコンパイルするものとして認識されます。字句および構文アナライザーの構築は複雑な文章校正に対してスローになります。CustomLanguage
アプローチが使用されると、その構築フェーズは、アプリケーションのそれぞれの実行に対してドキュメントが最初に解析されたときに発生する必要があります。これは、簡易言語の場合または開発者のマシンで文章校正の定義をデバッグする際は許容可能ですが、ユーザーのマシンで複雑な言語が使用される複雑な言語の場合は許容されません。言語生成アプローチを使用することにより、字句および構文アナライザーは開発者のマシン上で一度構築されます。次にアナライザーと 文章校正
の再構築方法に関する情報が生成されたクラス ファイルに書き込まれます。LanguageBase
から派生された各生成クラス ファイルには、自身がシングルトン インスタンスを返す静的プロパティの名前付きインスタンスがあります。また、その ServicesManager
で異なるサービスで言語の 2 つのコピーが作成される必要のある場合は公開用コンストラクターがあります。また、生成されたクラスには、言語を生成するために使用される Grammar
と同一のコピーを返す Grammar
プロパティがあります。
注:
言語クラスを生成するためのオプションの 1 つに「部分」修飾子を渡すことがあります。これにより、LanguageBase
上で特定のメンバーをオーバーライドまたは独自に追加できるように、派生言語に別のファイルを作成できます。LanguageBase
でオーバーライド可能なメンバーは以下の通りです。
Infragistics.Documents.Parsing 名前空間で LanguageGenerator クラスを使用することにより言語を生成できます。このクラスには以下の静的メソッドがあります。
GenerateClass
メソッドで引数として使用される LanguageGenerationParams クラスは、言語生成プロセスをカスタマイズするためにいくつかのオプションがあります。これらは以下の通りです:
このトピックの追加情報については、以下のトピックも合わせてご参照ください。