PLY is a zero-dependency Python implementation of the traditional parsing tools lex and yacc. It uses the same LALR(1) parsing algorithm as yacc and has most of its core features. It is compatible with all modern versions of Python. PLY was originally created in 2001 to support an Introduction to Compilers course at the University of Chicago. As such, it has almost no features other than the core
CodeReposにあげるのとかはどうかと思うので、取りあえずここに張ってみる。 結構大きいので注意(??) 一応PLYというPython Lex Yaccというモジュールが必要ですので、適宜入手してください。どうしたら良いか私には分かりません。 ソースコードを見ていたら気持ちが悪くなったという報告を受けました。その通りです、これは相当に気持ち悪いです。 Pythonレベルでも勿論そうですが、それ以前に無駄があったり定義通りじゃないとかきもい事に成っているのですが、まぁこういうのは出しちゃうのが大事なのでどなたかが新しく実装してくれれば良いんですよね。 後、あれ(forとか)を追加してくれとかいう話が飛ばされたのでforとかを実装しましたが、面倒くさいのでpasteはしません。 import lex from ast import AST import sys tokens = ( 'NU
Welcome! Dabeaz is David Beazley, a computer scientist, educator, and researcher with more than 35 years of experience. Dave has been most visible in the Python community where he has created various software packages, given conference talks, tutorials, and is known as the author of Python Distilled (Addison-Wesley), the Python Essential Reference (Addison-Wesley), and the Python Cookbook (O'Reill
PLY (Python Lex-Yacc) で作る Algol 60 処理系 2008.9.26 - 2008.10.17 - 2008.12.8 - 2009.2.17 (鈴) 第1部 1. はじめに 2. Algol 60 とは 2.1 Algol 60 修正報告書 3. PLY の導入 4. 字句解析 4.1 字句解析ルールの記述 5. 構文解析 5.1 構文解析ルールの記述 5.2 Algol 60 生成規則の修正 6. ここまでのまとめ 第2部 7. 名前の解決 8. インタープリタ - 文の単方向リンクと goto 文 9. インタープリタ - 手続きとディスプレイとスタック 10. インタープリタ - 式の中からの大域脱出 11. インタープリタ - call-by-name の実現 12. インタープリタ - のこりの言語要素 第3部 13. インタープリタへの標準関数の組
Pure Pythonによる、lex および yacc の実装 LALR(1)および広範な入力検査、エラー、診断レポートを備えるので、他言語で yaccを利用しているなら 比較的素直にPLYを利用できる 概要 PLYは、lex.py および yacc.py の 2つのモジュールを ply パッケージに含んでいる。 2つのツールは協調して作業を行う lex.py モジュールは入力されたテキストを 正規表現により定義された字句のコレクションに分解する。 次の有効なトークンを入力ストリームから返す、token()関数を、外部にインターフェースとして提供する。 yacc.py 自由文法として定義された言語の構文を評価する。 LR で解析を行い、LALR(1) (デフォルト) もしくは SLR アルゴリズムでパースする。 lex.py の token()を繰り返し呼び出し、トークンを参照し、文法ルー
Python, Ply1日経って昨日のエントリを読み返してみると、Symbolってstrを継承すれば良いよねNumberもintを継承すれば良いよねAddProcedureとかビルドインプロシージャもProcedureの一形態に過ぎないよねSchemeのソースコードを1つの文字列として渡したいよねなんてツッコミたくなってきたので、ちょっと修正する。 SymbolとNumberSymbolは文字列の比較、Numberは四則演算が出来れば良いのだから、Pythonのstrとintが元々持ってる機能をそのまま使えるように、それぞれから継承させる。 class Symbol(str): def eval(self, env): value = env.get(self) while isinstance(value, Symbol): value = value.eval(env) return
Python, Ply前回から既に4ヶ月。その間にJParsecへの熱はすっかりさめてしまった...。 もっとお手軽なものはないかということで、今回はPLY (Python Lex-Yacc)を使ってみた。 まずはASTのみ前回と同じじゃ面白くないからSchemeっぽく書けるようにしてみる。例えば、"(+ 1 2 3)"と入力したら"6"と出力される感じ。で、そのための土台となるASTを組み立てる部品を用意する。PLYの出番はまだ。 # シンボル class Symbol: def __init__(self, key): self.key = key def __str__(self): return self.key def eval(self, env): value = env.get(self) while isinstance(value, Symbol): value = v
原文 Documentation version: $Header: /cvs/projects/PLY/doc/ply.html,v 1.3 2004/05/27 17:30:56 beazley Exp $ PLY Version: 1.5 目次 Introduction PLY概要 Lexの例 Lex実装ノート 基本的なパージング yaccの例 文法規則関数の結合 空生成規則 曖昧文法を扱う parser.out ファイルについて 構文エラーの処理 行番号の追跡 ASTの構築 Yacc 実装ノート パーサとLexer State Management Pythonの最適化モードを使用する 次にすべきこと Introduction PLYはポピュラーなコンパイラ構築ツールであるlexとyaccのピュアPython実装である。この実装は、先人の
Welcome to the PLY homepage. PLY is an implementation of lex and yacc parsing tools for Python. If you don't have the slightest idea what that means, you're probably in the wrong place. Otherwise, keep reading. In a nutshell, PLY is nothing more than a straightforward lex/yacc implementation. Here is a list of its essential features: It's implemented entirely in Python. It uses LR-parsing which is
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く