内部パーサとバイトコード・コンパイラへのインターフェイスを提供します。式の解析木を編集したり、これから実行可能なコードを作成したりできるようにすることです。コードの断片を文字列として構文解析や変更を行うより良い方法です。構文解析がアプリケーションを作成するコードと同じ方法で実行されるからです。モジュールを使うのがずっとお手軽です。このモジュールについて注意すべきことが少しあります。それは作成したデータ構造を利用するために重要なことです。モジュールを使った例をいくつか示しています。文法についてよく理解しておく必要があるということです。中で定義されている文法仕様から、パーサ自身は作成されています。関数によって作られるときに内部パーサから実際に出力されるものです。オブジェクトは忠実にこれらの構造をシミュレートしています。あるバージョンから別のバージョンで変化することがあるということに注意してください。あるバージョンから別のバージョンへテキストのソースのままコードを移せば、目的のバージョンで正しい解析木を常に作成できます。インタープリタの古いバージョンへ移行する際に、最近の言語コンストラクトをサポートしていないことがあるという制限だけがあります。同一のメジャーバージョンの範囲内では、通常はソースコードに前方互換性がありますが、一般的に解析木はあるバージョンから別のバージョンへの互換性がありません。返されるシーケンスのそれぞれの要素は単純な形式です。文法の非終端要素を表すシーケンスは常に一より大きい長さを持ちます。最初の要素は文法の生成規則を識別する整数です。中の特定のシンボル名です。これらは常に親と同じ形式を持つシーケンスです。ような親ノードの型を識別するために使われるキーワードがいかなる特別な扱いもなくノードツリーに含まれているということです。トークンに対応する数値です。終端記号の見つかった行番号を表しています。終端要素は同じ方法で表現されますが、子の要素や識別されたソーステキストの追加は全くありません。キーワードの例が代表的なものです。作ることを簡単にするため。モジュールは二、三の別々の目的のために関数を定義しています。オブジェクトを解析木とコンパイルされたコードオブジェクトのような他の表現に変換することです。オブジェクトで表現された解析木の型を調べるために役に立つ関数もあります。モジュール解析木の内部ノードを表す便利な定数。モジュール便利な解析木の葉のノードを表す定数とノード値をテストするための関数。オブジェクトはソースコードあるいは解析木から作られます。形式を作成するために別々の関数が使われます。オブジェクトは内部解析木表現を保持するために作成されます。なければ、適切な例外を発生させます。オブジェクトは内部解析木表現を保持するために作成されます。なければ、適切な例外を発生させます。parser.sequence2st(sequence)¶この関数はシーケンスとして表現された解析木を受け取り、可能ならば内部表現を作ります。オブジェクトが内部表現から作成されて呼び出し側へ返されます。オブジェクトが正しくコンパイルできると決めつけない方がよいでしょう。渡されたとき、コンパイルによって送出された通常の例外がまだ発生するかもしれません。解析した結果のようなコンストラクトが原因であるかもしれません。パーサを逃れますが、バイトコードインタープリタによってチェックされます。形式の三つの要素のリストです。三番目の要素が存在する場合は、有効な行番号だとみなされます。行番号が指定されるのは、入力木の終端記号の一部に対してです。このエントリポイントは後方互換性のために維持されています。オブジェクトはリスト木またはタプル木として表される解析木へ変換されるか、または実行可能なオブジェクトへコンパイルされます。解析木は行番号情報を持って、あるいは持たずに抽出されます。結果のリスト表現はインスペクションあるいはリスト形式の新しい解析木の作成に使うことができます。リスト表現を作るためにメモリが利用できる限り、この関数は失敗しません。代わりに使うべきです。リスト表現が必要とされるとき、この関数はタプル表現を取り出して入れ子のリストに変換するよりかなり高速です。真ならば、トークンを表すリストの三番目の要素として行番号情報がすべての終端トークンに含まれます。行を指定していることに注意してください。フラグが偽または省略された場合は、この情報は省かれます。