问题标签 [asdl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9249 浏览

python - 如何获取内置 Python 类构造函数的参数列表?

我正在尝试使用该inspect模块,但似乎我不能在内置(本机?)类上使用它,否则我误解了。

我正在使用 Python 2.7 并尝试使用 Python 3.2。

这是有效的:

这不起作用:

我想知道是否有另一种技术可以自动获取这些参数?

(在我的情况下,我考虑了一种替代方法,即解析 Python 语法,解释如何使用我在 PyPy 项目的源代码中看到的一些代码来初始化 AST 节点的 ASDL 文件,但我想知道是否有另一种方法)

0 投票
3 回答
2266 浏览

python - Zephyr ASDL(抽象语法描述语言)

问题:

什么是 Zephyr ASDL,它与其他编译器技术(如词法分析器和解析器生成器)有何关系?

(如果您相当完整,我将不胜感激,但是当它变得相当技术性时,请在网上指出其他参考资料,因为我对编译器的大部分了解来自使用 yacc 和 flex,用 C 编写一个简单的最大 munch 词法分析器,并查看起来并在线阅读东西)

问题背景:

我一直在阅读http://docs.python.org/devguide/compiler.html并且遇到了以下行:

AST 节点的规范是使用 Zephyr 抽象语法定义语言 (ASDL) 指定的。

我按照底部的引文找到: http ://www.cs.princeton.edu/research/techreps/TR-554-97 。

我对这篇文章的第一次阅读相当混乱,我希望在重试之前能够先更好地理解 ASDL 的目的是什么(在编译过程的背景下)。

0 投票
1 回答
1886 浏览

python - 如何修改 Python 源代码以添加新的 AST 节点?

例如,如果我要创建一个我想在 Python AST 树中使用的名为“Something”的节点,我必须在哪里以及在 Python 源代码中添加哪些更改才能做到这一点?

我知道我应该从定义 AST 语法的 Python.asdl 开始。然后我应该转到 ast.c。

不幸的是,我不确定我必须在 ast.c 文件中的哪个位置进行更改才能实现该节点。

此外,为简单起见,假设我只希望节点作为占位符,这意味着它不应该做任何事情,除了能够将自己插入树中。

0 投票
1 回答
1055 浏览

python - CPython 使用什么解析器生成器?

我正在阅读文档中的此页面,并注意到它说

这是完整的 Python 语法,因为它由解析器生成器读取并用于解析 Python 源文件

但是,我很难找出 CPython 使用什么解析器生成器。那么 CPython 使用什么解析器生成器呢?是否有其他解析器生成器可以在不进行任何修改的情况下获取该页面上的语法?

0 投票
1 回答
533 浏览

python - ASDL 代表什么?

我在ast文档中看到

在这种情况下,ASDL 代表什么?它只是cpython语法吗?