グラマー

有効なパーシング グラマーは、次のものを含みます。

  • トークンのシーケンス、つまりドメイン パターンをルール変数として定義するルート変数。
  • 有効な文字セット、およびその文字セットの出現によってドメイン パターンの一部と認識されるシーケンスを定義するルール変数。詳細については、「Rule セクションのコマンド」を参照してください。
  • パースする入力フィールド。入力フィールドは、パースするソース データ レコード内のフィールドを指定します。
  • パースされた結果データ用の出力フィールド。出力フィールドは、パースされた各結果トークンをどこに格納するかを定義します。
有効なパーシング グラマーには、次の目的で、その他のオプション コマンドも含まれます。
  • パーシングする入力データのトークン化に使用される文字。トークン化文字は、トークンの開始と終了を決定する、スペースやハイフンなどの文字です。デフォルトのトークン化文字はスペースです。トークン化文字は、連続する文字を一連のトークンに分解する主要な方法です。トークン化コマンドを NONE に設定して、フィールドをトークン化しないこともできます。トークン化を None に設定する場合、グラマー ルールのルール定義内にスペースを含めなければなりません。
  • 入力データのトークンに対する大文字と小文字の区別オプション。
  • マッチング トークンを区切るための結合文字。
  • テーブル内のトークンのマッチング
  • テーブル内の複合トークンのマッチング
  • Regex タグの定義
  • 引用符で囲まれたリテラル文字列
  • 式の数量詞 (オプション)。式の数量詞の詳細については、Rule セクションのコマンドおよび式の数量詞: Greedy、Reluctant、および Possessive な動作を参照してください。
  • グループ化、コメント化、および割り当てのためのその他のインジケータ (オプション)。グループ化した式の詳細については、グループ化演算子 ( )を参照してください。

パーシング グラマーのルール変数は、ドメイン パターン内に連続する文字またはトークンの階層化ツリー構造を形成します。<FirstName><MiddleName>、および <LastName> というトークンを含む名前入力データに基づいてドメイン パターンを定義するパーシング グラマーを作成できます。

Name tokens tree structure in parsing grammar

次の入力データを使用します。

Joseph Arnold Cowers 

ドメイン パターン内の 3 つのトークンとして、このデータ文字列を表すことができます。

<root> = <FirstName><MiddleName><LastName>; 

このドメイン パターンのルール変数は次のようになります。

<FirstName> = <given>; 
<MiddleName> = <given>; 
<LastName> = @Table("Family Names"); 
<given> = @RegEx("[A-Za-z]+"); 

この簡単なサンプル グラマーに基づいて、Open Parser はスペースでトークン化を行い、トークン Joseph を名として解釈します。最初のトークン内の文字は、[A-Za- z]+ という定義にマッチし、トークンが定義済みのシーケンス内にあるからです。必要に応じて、式に別の式を続けることができます。

<variable> = "some leading string" <variable2>;

<variable2> = @Table ("given") @RegEx("[0-9]+");

グラマー ルールとは、変数が 1 つまたは複数の式に等しい文法的な文です。各グラマー ルールは次の形式になります。

<rule> = expression [| expression...];

グラマー ルールは次のルールに従わなければなりません。

  • <root> は特殊な変数名で、ドメイン パターンを定義しているため、グラマーの中で最初に実行されるルールです。<root> は、グラマー内の他のルールから参照できません。
  • <rule> 変数は、自分自身を直接的または間接的に参照できません。ルール A がルール B を参照し、ルール B がルール C を参照し、ルール C がルール A を参照する場合、循環参照が作成されます。循環参照は許可されていません。
  • <rule> 変数は、1 つまたは複数の式と同等です。
  • expression 式は、OR で分離されます。OR は、パイプ文字 (|) で表されます。
  • 式は一度に 1 つずつ調べられます。最初にマッチする expression が選択されます。それ以降の式は調べられません。
  • 変数名は、英字、数字、アンダースコア (_)、およびハイフン (-) で構成することができます。変数の名前は、任意の有効な文字で開始することができます。指定した出力フィールド名がこの形式に準拠していない場合、エイリアス機能を使用して、変数名を出力フィールドにマップしてください。

式は次のいずれかのタイプになります。

  • 別の変数
  • 単一引用符または二重引用符で囲まれた 1 つ以上の文字からなる文字列です。例:

    "McDonald" 'McDonald' "O'Hara" 'O\'Hara' 'D"har' "D\"har"

  • テーブル
  • CompoundTable
  • RegEx コマンド