このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

概念と用語法

従来(うちわで)使っていた用語法を幾分変える。

情報抽出に使う式を抽出式(extract expression)と呼ぶ。次のBNFパターンを定義する。

原子パターン ::= セレクター 条件式? 内容? 終端子 

パターン ::= 原子パターン | '(' 原子パターン ('|' 原子パターン)* '|'? ')'

従来は、抽出式をパターンと呼んでいたが、パターンをセレクターを持つ式の意味にする。パターン以外にスカラーリテラルや配列、(JSONの意味の)オブジェクトも出てくるが、今は注目しない。

抽出式はパターンに次の情報を加えたものである。

  1. 検索範囲: XPathの軸、CSSコンビネータに当たる。パターンマッチを行うノードセットを指定する。
  2. 値の形式: 単一値か配列にするかを指定する。

現状では、検索範囲はCSSコンビネータの記号を流用。

  1. Descendantコンビネータ:EMPTY
  2. Childコンビネータ:'>'
  3. Next-siblingコンビネータ:'+'
  4. Following-siblingコンビネータ:'~'

値の形式は:

  1. *[n] : n番目の単一値
  2. *[n, m] : n番目からm番目のスライス
  3. *[n, ] : n番目以降のスライス
  4. * : すべて

デフォルトは、Descendantコンビネータと*[0]。

ツリーTを固定して、aはコンテキストノードとして、パターンPは eval(a, P) により評価される。抽出式Eは extract(a, E) により評価される。