3 votes

Récupération des types d'objets parents de TextX

Supposons que nous ayons deux règles comme celle-ci dans notre grammaire :

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

Je veux mettre en place un générateur de code pour ce langage. En gros, pour chaque règle, j'ai défini une fonction qui fait ça. Par exemple, code_gen_value récupère un objet et si le type de l'objet est AttributeReference alors il appellera code_gen_attribute_reference (passing the object) ou si le type est PrimitiveValue puis il appelle code_gen_primitive_value (passing the object) . Le problème est que j'utilise la méthode suivante pour récupérer le type de l'objet :

value_type = cname(value) where:

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

Cependant, lorsque je l'exécute sur un exemple, the value_type es StringValue en code_gen_value function pour l'objet d'entrée. Ma question est la suivante : comment puis-je vérifier que l'objet est un sous-type de l'objet d'entrée ? PrimitiveValue ?

Dans XTexnd, on pourrait utiliser instanceof mot-clé et en fait if obj instanceof PrimitiveValue travaillerait dans le code_gen_value . Je me demande comment on peut exprimer cela en TextX.

Existe-t-il un moyen de faire référence aux types dans le métamodèle généré pour notre grammaire ?

Merci !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X