假設(shè)我們的語(yǔ)法中有兩個(gè)這樣的規(guī)則:Value: AttributeReference | PrimitiveValue;PrimitiveValue: BoolValue | StringValue | IntValue;我想為這種語(yǔ)言實(shí)現(xiàn)一個(gè)代碼生成器。基本上,對(duì)于每條規(guī)則,我定義了一個(gè)執(zhí)行此操作的函數(shù)。例如,code_gen_value函數(shù)獲取一個(gè)對(duì)象,如果該對(duì)象的類(lèi)型是,AttributeReference那么它會(huì)調(diào)用code_gen_attribute_reference (passing the object),或者如果類(lèi)型是PrimitiveValue,那么它會(huì)調(diào)用code_gen_primitive_value (passing the object)。問(wèn)題是我使用以下內(nèi)容來(lái)檢索對(duì)象的類(lèi)型:value_type = cname(value) where:def cname(o): return o.__class__.__name__但是,當(dāng)我在示例上運(yùn)行它時(shí),它the value_type是輸入對(duì)象。我的問(wèn)題是,如何檢查該對(duì)象是否是 的子類(lèi)型?StringValuecode_gen_value functionPrimitiveValue在 XTexnd 中,可以使用instanceof關(guān)鍵字并且實(shí)際上if obj instanceof PrimitiveValue可以在code_gen_value. 我想知道我們?nèi)绾卧?TextX 中表達(dá)這一點(diǎn)。有沒(méi)有辦法引用為我們的語(yǔ)法生成的元模型中的類(lèi)型?
TextX 檢索對(duì)象父類(lèi)型
明月笑刀無(wú)情
2024-01-15 15:37:33