首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python元循环赋值器

Python元循环赋值器
EN

Stack Overflow用户
提问于 2011-05-29 08:17:40
回答 2查看 971关注 0票数 7

对于入门编程类来说,编写Lisp元循环计算器并不少见。有没有人尝试过为Python做这件事?

是的,我知道Lisp的结构和语法很适合于元循环计算器,等等。Python很可能会更难。我只是好奇是否有人做过这样的尝试。

EN

回答 2

Stack Overflow用户

发布于 2011-05-30 08:04:17

对于那些不知道什么是元循环计算器的人来说,它是一个用要解释的语言编写的解释器。例如:用Lisp编写的Lisp解释器,或者在我们的例子中,用Python编写的Python解释器。有关更多信息,请访问read this chapter from SICP

作为JBernardo saidPyPy就是其中之一。然而,PyPy的Python解释器,也就是元循环计算器,是在Python的静态类型子集RPython中实现的。

您将很高兴地了解到,从1.5版开始,PyPy完全兼容官方的Python2.7规范。更重要的是:性能基准测试中的PyPy nearly always beats Python

有关更多信息,请参阅PyPy docsPyPy

票数 8
EN

Stack Overflow用户

发布于 2013-08-15 21:30:08

我想我写了一个here

代码语言:javascript
复制
"""
Metacircular Python interpreter with macro feature.
By Cees Timmerman, 14aug13.
"""

import re
re_macros = re.compile("^#define (\S+) ([^\r\n]+)", re.MULTILINE)

def meta_python_exec(code):
    # Optional meta feature.
    macros = re_macros.findall(code)
    code = re_macros.sub("", code)
    for m in macros:
        code = code.replace(m[0], m[1])

    # Run the code.
    exec(code)

if __name__ == "__main__":
    #code = open("metacircular_overflow.py", "r").read()  # Causes a stack overflow in Python 3.2.3, but simply raises "RuntimeError: maximum recursion depth exceeded while calling a Python object" in Python 2.7.3.
    code = "#define 1 2\r\nprint(1 + 1)"
    meta_python_exec(code)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6165177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档