damit kann man recht einfach lexer/renderer für versch markup sprachen definieren
hier mal ein einfacher lexer für korrekte klammerausdrüke
Code: Alles auswählen
class KKAS(DirectiveState):
prefix=""
class KKADirective(SimpleDirective):
def start(self):
if self.lexer.match(r"\(") is not None:
return KKAS(start=self)
def end(self,state):
if self.lexer.match(r"\)") is not None:
return KKAS(end=self)
class KKaLexer(BaseLexer):
directives = [ KKADirective ]
test_text = "(()( )(nil()))()"
__test__={
"KKA":"""
>>> kka = KKaLexer(test_text)
>>> for i in kka:
... print repr(i), i.tag
u'(' <KKA start>
u'(' <KKA start>
u')' <KKA end>
u'(' <KKA start>
u' ' <Text>
u')' <KKA end>
u'(' <KKA start>
u'nil' <Text>
u'(' <KKA start>
u')' <KKA end>
u')' <KKA end>
u')' <KKA end>
u'(' <KKA start>
u')' <KKA end>
""",
}
http://ronny.uberhost.de/~ronny/braklet-0.0.1.tar.gz