1

免责声明:我正在编写一个编译器,所以这是黑色的巫毒教的东西。我知道,我已经穿上了我的防护服,如果我能找到任何其他简单的方法,我不会这样做。

源文本是标准 python,我使用所有可用的运行时类型操作将其转换为其他内容。简而言之,所有标准类型都通过元数据进行了增强。目前 List 是唯一不是叶子类型并且是标准的类型。( dict 属于同一类别,但我还没有尝试对其进行转换,我可能会遇到同样的问题)。叶类型(int、str、bool、float)和类一样都可以。

用我的增强列表数据类型优雅地替换标准列表是一件轻而易举的事,我想更改标记[]在 python 文本中的默认行为,而不是返回一个列表,它应该返回我的类似列表的类型。

但是我看不到任何拦截此令牌的方法。list(我可以通过覆盖令牌sys.modules[__builtins__],但[]似乎遥不可及。)

任何想法 ?

4

1 回答 1

2

如此处所述,python 不允许您覆盖其语法。

虽然,这个答案包含一个可能对你有帮助的技巧(可能不是)。

于 2013-06-07T07:56:02.223 回答