# Zend_Markup パーサー

`Zend_Markup` には現在 BBCode パーサーと Textile パーサー という２つのパーサーが同梱されています。

## パーサーの仕組み

`Zend_Markup` のパーサは、マークアップによる文をトークン木へと 変換するクラス群です。ここの例では BBCode パーサーを用いますが、 全てのパーサーにおいてトークン木の見解は変わりません。 例として BBCode のこの要素で始めます:

    [b]foo[i]bar[/i][/b]baz

BBCode パーサーは、要素を分離し以下の木構造を生成した値を持つことでしょう:

- [b]

  - foo

  - [i]

    - bar

- baz

クローズタグは消えていることにお気づきになったでしょう、それらは木構造の 内容として出現しません。これは、クローズタグは実際の内容のものではないからです。 ですが、これは単にクローズタグを消失したことを意図するものではなく、 タグ自身のタグ情報内で保持されています。さらに、これは木構造自身の簡潔な概観で あるだけということに注意してください。実際の木構造は、タグの属性とその名について より多くの情報を含んでいます。

## BBCode パーサー

BBCode パーサーは BBCode をトークン木へ変換する `Zend_Markup` パーサーです。 全ての BBCode タグの文法は:

    [name(=(value|"value"))( attribute=(value|"value"))*]

有効な BBCode タグのいくつかの例は:

    [b]
    [list=1]
    [code file=Zend/Markup.php]
    [url="http://framework.zend.com/" title="Zend Framework!"]

標準で、 '[/tagname]' フォーマットを用いて閉じられます.

## Textile パーサー

Textile パーサーは、Textile からトークン木へと変換する `Zend_Markup` パーサーです。 Textile はタグ構造を持っていないため、 以下は見本例のタグのリストです:

### 基本的な Textile タグのリスト

入力例 | 出力例
--- | ---
*foo* | <strong>foo</strong>
_foo_ | <em>foo</em>
??foo?? | <cite>foo</cite>
-foo- | <del>foo</del>
+foo+ | <ins>foo</ins>
^foo^ | <sup>foo</sup>
~foo~ | <sub>foo</sub>
%foo% | <span>foo</span>
PHP(PHP Hypertext Preprocessor) | <acronym title="PHP Hypertext Preprocessor">PHP</acronym>
"Zend Framework":http://framework.zend.com/ | <a href="http://framework.zend.com/">Zend Framework</a>
h1. foobar | <h1>foobar</h1>
h6. foobar | <h6>foobar</h6>
!http://framework.zend.com/images/logo.gif! | <img src="http://framework.zend.com/images/logo.gif" />

さらに、 Textile パーサーは全てのタグを段落へとラップします; 段落は2行の新しい行で終わり、よりタグがあった場合、新しい段落が加えられます。

### リスト

Textile パーサーは2種類のリストをサポートします。"#"記号を用いた数値型と "*"記号を用いた bullit リストです。両方のリストの例:

    # Item 1
    # Item 2

    * Item 1
    * Item 2

上記は2つのリストを生成します: 一つは、数値型; 2つ目は、 bulleted 。 リスト内で、太 (*)、と 強調 (_)のように標準タグを用いることができます。タグは、 （'h1'などのように）新しい行にて始まっている必要があり、リスト内で用いることは できません。