スライド 10/6 スライド 0-python-intro.ppt 0-python-intro.pdf 10/20 スライド 1-lang-intro.ppt 1-lang-intro.pdf 10/27 スライド 2-tokenizer.ppt 2-tokenizer.pdf 11/17 スライド 3-parser.ppt 3-parser.pdf 12/8 スライド 4-data-repr.ppt 4-data-repr.pdf 12/15 スライド 5-eval.ppt 5-eval.pdf 12/22 スライド 6-gc.ppt 6-gc.pdf 12/22 スライド 7-profile.ppt 7-profile.pdf 配布資料 10/2 課題内容の説明 0.pdf 10/2 仕様説明,環境設定,Pythonの練習 1.pdf 10/20 小さな部品の開発,Subvers
テストデータ, reference情報など † 10/29 mini-Python文法 grammar.txt 10/29 字句解析器テストデータ tokenizer.tar.gz 11/5 構文木ヘッダsyntree.h.txt 11/5 構文木Cソースの一部syntree.c.txt 11/5 構文解析木ヘッダparser.h.txt 11/5 構文解析木Cソース一部almost_empty_parser.c.txt 11/5 構文解析器および最終課題用テストプログラムtests.tar.gz 11/26 Python値を定義するヘッダファイルpyvalues.h.txt 11/26 Python値関連の関数群Cソースの一部almost_empty_pyvalues.c.txt ↑ 添付ファイル: 5-eval.ppt 210件 [詳細] 5-eval.pdf 325件 [詳細] 4-
講義資料 † 注: 直したつもりではありますが去年からの更新のし忘れで,python.logos.ic.i.u-tokyo.ac.jp というサーバ名が,ときどき marten.logos.ic.i.u-tokyo.ac.jp となっていることが有るかもしれません(もうないつもり).marten はすべからく pythonと読み替えてください ここには、講義のスライドや配布資料がアップされます。 ↑ テストデータ, reference情報など † 10/30 mini-Python文法 grammar.txt 10/30 字句解析器テストデータ tokenizer_test.tar.gz 11/14 構文木ヘッダsyntree.h.txt 11/14 構文木Cソースの一部syntree.c.txt 11/14 構文解析木ヘッダparser.h.txt 11/14 構文解析木Cソース一部al
IntroductionPython is a nice scripting language. It even gives you access to its own parser and compiler. It also gives you access to different other parsers for special purposes like XML and string templates. But sometimes you may want to have your own parser. This is what's pyPEG for. And pyPEG supports Unicode. pyPEG is a plain and simple intrinsic parser interpreter framework for Python versio
Pascal/Ruby/Java/Python/C# によるモダンな Lisp の小さな実装 2007.4.28 - 2010.10.1 (鈴) 第1回 L2 Lisp: 標準 Pascal によるモダンな Lisp の小さな実装 (1.1 版/Pascal) 2007.4.28 - 2007.5.18 静的スコープ, 末尾呼出しの最適化,マクロを備えた近代的な Lisp を,ISO 7185/JIS X 3008 の標準 Pascal で作成します。 プロトタイプ的な実装ですが,ガーベジコレクションも備えた,まとまったインタープリタです。 第2回 続 L2 Lisp: 従来の約3倍の速さの実現 (2.0 版/Pascal) 2007.6.1 ラムダ式の内部表現とマクロ展開の方法を改良してインタープリタを高速化します。 場合により約3倍の高速性能が得られます。 また,マクロの「変数捕捉」問
31.2. 抽象構文木¶ バージョン 2.5 で追加: 低級モジュール _ast はノード・クラスだけ含みます。 バージョン 2.6 で追加: 高級モジュール ast は全てのヘルパーを含みます。 ast モジュールは、Python アプリケーションで Python の抽象構文木を処理しやすくするものです。抽象構文そのものは、Python のリリースごとに変化する可能性があります。このモジュールを使用すると、現在の文法をプログラム上で知る助けになるでしょう。 抽象構文木を作成するには、 ast.PyCF_ONLY_AST を組み込み関数 compile() のフラグとして渡すか、あるいはこのモジュールで提供されているヘルパー関数 parse() を使います。その結果は、 ast.AST を継承したクラスのオブジェクトのツリーとなります。抽象構文木は組み込み関数 compile() を使って
CodeReposにあげるのとかはどうかと思うので、取りあえずここに張ってみる。 結構大きいので注意(??) 一応PLYというPython Lex Yaccというモジュールが必要ですので、適宜入手してください。どうしたら良いか私には分かりません。 ソースコードを見ていたら気持ちが悪くなったという報告を受けました。その通りです、これは相当に気持ち悪いです。 Pythonレベルでも勿論そうですが、それ以前に無駄があったり定義通りじゃないとかきもい事に成っているのですが、まぁこういうのは出しちゃうのが大事なのでどなたかが新しく実装してくれれば良いんですよね。 後、あれ(forとか)を追加してくれとかいう話が飛ばされたのでforとかを実装しましたが、面倒くさいのでpasteはしません。 import lex from ast import AST import sys tokens = ( 'NU
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
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
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く