どんなタイプのアイテムもオルタネーションの中に現れうる。これらは、パーサが照合する文法に変更を加えるために用いられる。指定されている規則の最後に加える。プロダクションと、規則"desc"に対して一つのプロダクションが付け加えられる。ことによって、追加文法で指定された規則が最初にリセットされる。description.上の例が唯一の正しい"name"で、一つの可能性のある説明になる。アクション内でそれらを呼び出すことだ。name)がtypedefされるのを妨げる。it.これでユーザは中断キーを変更することができる。バインド解除はできない。再構成することができる。これは文法が巨大な場合、非常に遅くなってしまう。start-up.通常、Parse::RecDescentは、実行時に文法からパーサを構築する。アプローチはパース用コードの設計と実装を単純化してくれる。パース処理が遅くなるという不利を抱えることになる。度に、あなたはParse::RecDescentがパーサを構築するのを待たなくてはならない。遅れをもたらすだろう。それを別モジュールに分離して保存する方法を提供している。使えば、オリジナルのパーサのクローンを生成することができる。use:クラスメソッドPrecompileを使うと、文法がプリコンパイルされる。Thus最初の引数は文法の文字列、二番目は構築されるクラスの名前だ。Parser.pm.これはParser.pmという名前のモジュールファイルができる。Perlプログラムを書かねばならないのは、なんとも退屈なことだ。ダイレクトにこの仕事を行なえるようにしてくれる。Grammar.pmという名前のファイルが生成される。ディレクトリにGrammar.pmファイルを置かなければならない。生成するためにnewメソッドを呼び出すだけだ。faster.ただ、ずいぶん速いという点が違う。problem.しかし注意して欲しい。与えるといえども、解析のスピードには影響がない。この問題に取り組むつもりだ。<error>ディレクティブを呼び出してパースを失敗させることであろう。ignored.残念ながら、ちょうど一つ目のlineでエラーが現れたときにしかこれは起きない。最初の規則は、fileが1つ以上のlineにマッチすると述べている。完全に無視されることになる。lineにエラーがあったに違いない。規則file全体も失敗となる。write:そして忘れてならないのが、プロダクションの最後にあるアクションだ。as:規則fileが返す値は、その最後のアイテム:eofileの値である。false).(なぜなら、""は偽になるから。プログラム内で$::RD_HINTを定義している場合)。Parse::RecDescent::Extend()).規則定義の消失(レベル3警告を発生させるだけである。Parse::RecDescent::Extend()を通じて定義を用意するかもしれないから。subrules).'Replace'あるいは'Extend'と名づけられた規則を定義しようと試みた。できない(レベル2警告が発生するだけである。サブ規則としてまだ利用できるから。effect).一つの<error?>ディレクティブだけで構成されているプロダクション。これは予想に反して成功してしまうだろう(レベル2警告。accumulate).複数の連続した先読み指定(レベル1警告。バグレポートその他のフィードバックは大歓迎。implement.入力ストリームからダイレクトにパースするのをサポートしていない。そのときには実装なんてへっちゃらさ(えっへん!)。パーサジェネレータは混乱してしまう。再帰の可能性がある場合)しか検出しない。文法を変更するのがよい。されたものとして必要だとしても、すぐには期待しないこと。wished.生成されたパーサは、いつも期待通りの速さで実行されるとは限らない。後戻りすることもできないだろう。writing:成功することは決してない。食らうからであり、二番目のアイテムにマッチするようなものは何も残さないからだ。Parse::RecDescent::newは警告を発す)。二倍のコストがかかるという点だ。ついても考えなければならない。オーバーヘッドをかけてしまう欠点とを、上回るかどうかということだ。say:<autocommit>ディレクティブは良いものになるだろう。thus:そうするとジェネレータはこれを"刈り込んで"くれる。"do")?いくつかの問題がある。them.二番目の問題は、正規表現をどう扱うかという点だ。正規表現の前で単にuncommitすることだ(それらはマッチするはずだから)。先行するリテラルトークンを全て解析することよって得られる。Association。