免责声明:我正在编写一个编译器,所以这是黑色的巫毒教的东西。我知道,我已经穿上了我的防护服,如果我能找到任何其他简单的方法,我不会这样做。
源文本是标准 python,我使用所有可用的运行时类型操作将其转换为其他内容。简而言之,所有标准类型都通过元数据进行了增强。目前 List 是唯一不是叶子类型并且是标准的类型。( dict 属于同一类别,但我还没有尝试对其进行转换,我可能会遇到同样的问题)。叶类型(int、str、bool、float)和类一样都可以。
用我的增强列表数据类型优雅地替换标准列表是一件轻而易举的事,我想更改标记[]
在 python 文本中的默认行为,而不是返回一个列表,它应该返回我的类似列表的类型。
但是我看不到任何拦截此令牌的方法。list
(我可以通过覆盖令牌sys.modules[__builtins__]
,但[]
似乎遥不可及。)
任何想法 ?