J'essaye le pyparsing de python pour l'analyse. Je me suis coincé en faisant l'analyseur récursif.J'ai besoin de l'aide pour faire l'analyseur récursif utilisant pyparsing
Laissez-moi vous expliquer le problème
Je veux rendre le produit cartésien des éléments. La syntaxe est
cross({elements },{element})
Je mets de manière plus spécifique
cross({a},{c1}) or cross({a,b},{c1}) or cross({a,b,c,d},{c1}) or
donc la forme générale est le premier groupe aura n éléments (a, b, c, d). Le second groupe aura un élément qui sera donc produit final cartésien.
La syntaxe doit être fait récursif, car il peut passer au niveau n comme
cross(cross({a,b},{c1}),{c2})
Cela signifie traverser a, b avec c1. Disons que nous aboutissons. Nous traversons à nouveau y avec c2
Cela peut être jusqu'à croix de niveau n (croix (croix (croix ......
Ce que je veux est d'avoir l'objet à initialiser en utilisant setparseAction
Donc, je vais avoir 2 classes
class object1(object):
This will be used by a,b,c,d
class object2(object):
This will hold cross elements
je besoin d'aide sur ce que je ne suis pas en mesure de faire l'analyseur récursif. Vous
Je ne avez pas besoin de l'expression à utiliser. J'ai besoin de cela en python en utilisant le pyparsing seulement. La syntaxe est écrite est fixe et je pense que cela peut être fait en utilisant l'analyseur récursif. –
@asb: Comme d'autres n'utilisent pas d'analyseurs récursifs pour ce genre de choses, je suggère que vous pourriez avoir plus de succès si vous changez la définition (pas la syntaxe, mais la façon dont elle est définie) pour éliminer la récursivité déroutante. –