Pythonは素敵なスクリプト言語です。それも、あなたがそれ自身のパーサとコンパイラにアクセスすることができます。また、あなたがXMLと文字列のテンプレートのような特別な目的のために別の他のパーサーにアクセスすることができます。
しかし、時にはあなたがあなた自身のパーサーを持っている場合があります。これはpyPEGはのためだものです。
何が起こっているかのクイックビューを取得するには、私のブログにpyPEGとXMLに任意の言語を解析する方法についてのこの記事をお読みください。
のPEGは何ですか?の
PEGは、式の文法を解析することを意味します。それは、文脈自由言語のための正規表現のアイデアのようなものだ。あなたは、PEG約Wikipediaの記事で見つける非常に明確な説明。
PEGは使用すると、BNFと同じように、同じ言語を記述することができます(と彼らも似ています)。
のパーサ·インタープリタとは何ですか?の
一般的なパーサのPEGを用いたトップダウン構文解析が、LR(n)またはLL(n)とボトムアップ構文解析されていない。これは、パーサジェネレータを実装するという考え方になる。
LR(n)またはLL(N)のパーサーでは、最初にDFAを計算する必要があるため、通常は、パーサジェネレータは、あなたのためにこれをやらせる。結果は入力したあなたのBNF文法、用のパーサの実装です。一つは、パーサの実装にBNFからコンパイラパーサジェネレータを呼び出すことができます。
パーサ·インタープリタではなく、そのようなコンパイラであることの通訳として作業を行います。ちょうど入力としてあなたの文法を与え、それは、テキストの外に記載された言語を解析します。生成されたプログラムはありません。
のpyPEGを使用して、の
それは意味:使用pyPEGは非常に簡単です;-)あなたはすでに正規表現を知っている場合は、迅速pyPEGを使用することを学びます。
小標本
例:このような単純な言語を考える:
関数FAK(n)は{
 もし(N == 0){// 0を!定義上1である
  1を返します。
 }他{
 戻りのn *のFAK(N - 1);
とをタップ;};
}
その言語のpyPEGは、(また、サンプルスクリプトを参照してください)次のコードのようになります。
DEF)(コメント:[re.compile(R「//.*」)、re.compile( "/*.*?*/」、re.S)]を返す
DEFリテラル():戻りre.compile(* .D * r'd | D + | '"*。?")
DEF記号():戻りre.compile(R "+ W」)
DEF演算子():戻りre.compile(R "+ | - | * | / | ==")
DEF操作():戻り記号、演算子、[リテラル、FunctionCallを]
デフ式():リターン[リテラル、操作、FunctionCallを]
DEF expressionlist():return式、-1、( "、"、表現)
DEF returnstatement():戻りキーワード(「リターン」)、式を
DEF ifstatement():returnキーワード(「IF」)、「(」、表現、「)」、ブロック、キーワード(「他」)、ブロック
DEF文の():リターン[ifstatement、returnstatement]、 ";"
DEFブロック():リターン "{"、-2、声明、 "}"
デフのParameterList():リターン "("、記号、-1、( "、"、記号)、 ")"
リターン記号、 "("、expressionlist、 ")":DEF()FunctionCallを
DEF機能():returnキーワード(「機能」)、シンボル、するParameterList、ブロック
DEF simpleLanguage():return関数
のこのリリースのの新機能:これはクリーンアップリリースです。
- 。パースのコード()と構成する()が修正されました。
のあるどのバージョン1.4のの新しい:ます。
- このバージョンはpackratの解析といくつかのバグが修正されます。
の新しいのバージョン1.3に何があるか:
- シンボル(リストによってpyASTで名前のタプルの交換かなり互換性がありますが、あまりにも、コンパイラのバックエンドで、より説明コードをサポートしています)クラス、します。
のバージョン1.2のの新機能です。エラー処理でUnicodeを使用した
- バグが修正されました。李。 >
のバージョン1.1の新しいのあるもの:ます。
- Unicodeのサポートが追加されました。
のバージョン0.46のの新機能である:TrueにpyPEG.print_trace
- シームレス2to3はを使用して動作するようになりましたPython 3.xのにpyPEGの変換します。
- に設定することにより、必要に応じてトレースすることができます適用される文法規則ます。
- pyPEGを出力stderrにこのトレースします。
のバージョン0.45のの新機能は次のとおりです。
- バグ修正 。
のどのバージョン0.44のの新しいです。
- pyPEGようになりましたソースファイル名と行で各pyASTオブジェクトを飾る番号ます。
の要件の
- のPythonます。
コメントが見つかりません