paulb@0 | 1 | #!/usr/bin/env python |
paulb@0 | 2 | |
paulb@0 | 3 | from pyparsing import * |
paulb@0 | 4 | |
paulb@0 | 5 | class Grammar: |
paulb@0 | 6 | def __setattr__(self, name, value): |
paulb@0 | 7 | self.__dict__[name] = Group(value).setResultsName(name) |
paulb@0 | 8 | |
paulb@0 | 9 | g = Grammar() |
paulb@0 | 10 | |
paulb@0 | 11 | g.non_literal = OneOrMore(CharsNotIn("'")) |
paulb@0 | 12 | g.value = ZeroOrMore(Or([Literal("''"), CharsNotIn("'")])) |
paulb@0 | 13 | g.literal = Literal("'") + g.value + Literal("'") |
paulb@0 | 14 | g.query = ZeroOrMore(Or([g.non_literal, g.literal])) |
paulb@0 | 15 | g.query.leaveWhitespace() |
paulb@0 | 16 | |
paulb@0 | 17 | def parseString(s): |
paulb@0 | 18 | return g.query.parseString(s) |
paulb@0 | 19 | |
paulb@0 | 20 | # vim: tabstop=4 expandtab shiftwidth=4 |