[re] récuperer les production d'une grammaire
bonjour tout le monde.
je cherche une moyen d'extraire les productions d'une grammaire
une grammaire est presenté comme suit ( un exemple )
Code:
1 2 3
|
S->'aa'S | A ;
A-> 'b'A | 'c'S ; |
j'explique :
les terminaux doivent etre entre des ' '
les variables sont représentés par des majuscules
chaque production dois se terminer avec un ;
les differents members droits d'une production sont séparés par des |
pour mon programme je voudrais obtenir une liste de produtions
j'ai penser a utiliser une expression réguliere mais j'arrive pas a obtenir des resultats satisfaisants
voila mon code (l'expression reguliere que j'ai utiliser) :
Code:
1 2 3
|
x=re.compile("[A-Z]->['\w+'[A-Z]+|]+;") |
mais ça ne donne rien
Code:
1 2 3 4 5 6
|
a="""
S->'aa'S|A;A->'b'A|'c'S;
"""
>>> x.findall(a)
["S->'aa'S", "A->'b'A"] |
voila :(
le resultat que j'attendais c'etais un
Code:
1 2
|
["S->'aa'S|A;", "A->'b'A|'c'S;"] |
j'esepre que j'ai bien expliqué mon probleme
merci d'avance