gpt4 book ai didi

python - TextX 检索对象父类型

转载 作者:行者123 更新时间:2023-12-04 02:30:26 24 4
gpt4 key购买 nike

假设我们的语法中有两条这样的规则:

Value: AttributeReference | PrimitiveValue;
PrimitiveValue: BoolValue | StringValue | IntValue;

我想为这种语言实现一个代码生成器。基本上,对于每条规则,我都定义了一个执行该操作的函数。例如,code_gen_value 函数获取一个对象,如果该对象的类型是AttributeReference,那么它将调用code_gen_attribute_reference(传递对象),或者如果类型是 PrimitiveValue,则它调用 code_gen_primitive_value(传递对象)。问题是我正在使用以下内容来检索对象的类型:

value_type = cname(value) where:

def cname(o):
return o.__class__.__name__

但是,当我在一个示例上运行它时,输入对象的 value_typecode_gen_value 函数 中的 StringValue。我的问题是,如何检查对象是否为 PrimitiveValue 的子类型?

在 XTexnd 中,可以使用 instanceof 关键字,实际上 if obj instanceof PrimitiveValue 可以在 code_gen_value 中工作。我想知道我们如何在 TextX 中表达它。

有没有办法在为我们的语法生成的元模型中引用类型?

谢谢!

最佳答案

要根据 textX 语法指定的继承来检查对象是否是某种类型的实例,您可以使用 textx_isinstance .在当前版本的 textX (2.2.0) 中,它可以从 textx.scoping.tools 导入。从 2.3.0 开始,它将在 textx 模块中可用。

关于python - TextX 检索对象父类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64559846/

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