bonjour tout le monde.
je cherche une moyen d'extraire les productions d'une grammaire
une grammaire est presenté comme suit ( un exemple )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 
x=re.compile("[A-Z]->['\w+'[A-Z]+|]+;")
mais ça ne donne rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
["S->'aa'S|A;", "A->'b'A|'c'S;"]
j'esepre que j'ai bien expliqué mon probleme

merci d'avance