pyparsing

pyparsing to moduł reguł gramatycznych o nieco innym podejściu niż lex/yacc, czy też zwykłych wyrażeń regularnych. Poniżej przykład parsujący "Hello, World!" (ogólnie pozdrowienia w formacie "(słowo), (słowo)!"):
from pyparsing import Word, alphas
greet = Word( alphas ) + "," + Word( alphas ) + "!" # <-- definicja gramatyczna
hello = "Hello, World!"
print hello, "->", greet.parseString( hello )
Wykonując kod otrzymamy:
Hello, World! -> ['Hello', ',', 'World', '!']
Łańcuch "Hello, World!" został rozbity według definicji gramatycznej. Pyparsing może być wykorzystany do interpretowania prostych jednowierszowych poleceń, wyrażeń algebraicznych, czy też do wyciągania danych z raportów. Dla zachowania czytelności warto też łączyć poszczególne elementy definicji za pomocą + | czy ^:
integer  = Word( nums )            # liczba całkowita
variable = Word( alphas, max=1 )   # pojedyncza litera
arithOp  = Word( "+-*/", max=1 )   # operatory arytmetyczne
equation = variable + "=" + integer + arithOp + integer    # spełnione m.in. dla "x=2+2", etc.
Dość szczegółowy opis znajdziemy na onlamp.com oraz na stronie Paula McGuire. Moduł nie jest "łatwy" do zrozumienia, a dostępna dokumentacja wymaga pewnego poziomu "logicznego" myślenia.
RkBlog

Podstawy Pythona, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact