gpt4 book ai didi

python - 使用 Python 创建自定义语言

转载 作者:太空宇宙 更新时间:2023-11-04 09:15:15 25 4
gpt4 key购买 nike

我最近开始玩 Sage,我开始怀疑标准的 Python int包装在一个名为 Integer 的自定义类中在鼠尾草。如果我输入 type(1)在 Python 中,我得到 <type 'int'> , 但是,如果我在 sage 提示中输入相同的内容,我会得到 <type 'sage.rings.integer.Integer'> .

如果我想替换 Python int (或 listdict )与我自己的自定义类,如何完成?会有多困难(例如,我可以完全用 Python 完成吗)?

最佳答案

作为其他答案的补充:在运行任何代码时,Sage 都有一个预处理步骤,可将 Sage-Python 转换为真正的 Python(然后执行)。这是由 preparse 函数完成的,例如

sage: preparse('a = 1')
'a = Integer(1)'
sage: preparse('2^40')
'Integer(2)**Integer(40)'
sage: preparse('F.<x> = PolynomialRing(ZZ)')
"F = PolynomialRing(ZZ, names=('x',)); (x,) = F._first_ngens(1)"

这一步正是允许透明使用 Integer(代替 int)和其他非标准语法(如上面的多项式环示例)和 [a..b] 等)。

据我所知,这是在 Python 中完全透明地使用内置类型替换的唯一方法。

关于python - 使用 Python 创建自定义语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10376129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com