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
