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