我是一个计算机专业的学生,在学编译原理这门课程的过程中产生了自己制作一个python解释器的想法,不过我们的课程中只讲了前后文无关文法、词法分析、语法分析和四元式表示这几块内容,而且只讲了一些手动转换的方法,对一些实际的应用讲的不深。我了解到python语言是上下文相关的,在学校的课程中对这方面的文法也没有过详细的说明。我想在这里问一下如果我准备手动写一个python解释器需要掌握哪些技能点?
回复内容:
对于实现一个解释器,parser部分其实是相对比较无聊的工作,如果跳过这部分来实现的话,可能会更容易上手一些。vinzenz/libpypa · GitHub 可以尝试一下这个项目,独立的Python parser,C++写的,目前Dropbox的Python实现Pyston,就是使用这个库做为Python的parser。
另外也可以直接尝试直接调用CPython的ast模块,将parse好的AST导出到文件中去,再拿自己实现的解释器直接读取。Pyston在引入libpypa之前就是这么做的。
还有另外一个思路,直接实现一个Python bytecode的解释器,parse .pyc文件就可以了。
之后需要了解的就是Python对象模型(比如说一个Python对象在内存是如何表示的)。如果是拿C语言来实现的话大概就是“一切都是堆上分配的结构体”就可以了。
剩下的一块是GC,需要了解一下常见的集中GC实现方案。最简单的应该是引用计数。如果是C/C++实现的话,还直接用Boehm GC,自己这块就不用管了。
相关的Python实现:
Jython和IronPython不用说了,JVM和.net两个平台上的Python实现,如果对这两个平台熟悉的话可以直接拿来参考。
Dropbox的Pyston,C++实现,使用LLVM作为codegen,因为C++相对较难,并且还有JIT的部分,并不适合上手。
micronPython, https://micropython.org/ ,专门针对嵌入式芯片实现的Python,ansi C的,可以研究一下。
tinypy tinypy :: home , 64k代码实现的比较完整的Python,可以参考。
另外推荐Python源码剖析这本书,内容非常全面 Python源码剖析 (豆瓣) 。
Vczh Free Script
Vczh Free Script 2.0 beta 发布
来看这个,大二写的,除了语法不一样以外没有任何区别。
Parser 推荐用 PEG,可以方便地处理缩进。 不考虑语法分析这一步,想着重了解python对象模型的话,可以去看看《python源码剖析》。
PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版
便利なJavaScript開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
