Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pyparsing as pp
- from sql.ast import ZoznamStlpcov, ZoznamTabuliek, Select, ZoznamPrikazov, VsetkyStlpce, Alias
- NAZOV_STLPCA = pp.Word(pp.alphas) #slovo s malymi velkymi pismenami
- NAZOV_TABULKY = pp.Word(pp.alphas)
- STLPEC = NAZOV_STLPCA + pp.Optional("as"+NAZOV_STLPCA)
- STLPEC.setParseAction(lambda tokeny: tokeny[0] if len(tokeny) == 1 else Alias(tokeny[0],tokeny[2]))
- ZOZNAM_STLPCOV = STLPEC + pp.ZeroOrMore(","+STLPEC) #zaciname nazvom stlpca a moze ich byt lubovolny pocet
- ZOZNAM_STLPCOV.setParseAction(lambda tokeny: ZoznamStlpcov(tokeny[::2])) #kazde parne lebo neparne su ciarky
- ZOZNAM_TABULIEK = NAZOV_TABULKY + pp.ZeroOrMore(","+NAZOV_TABULKY)
- ZOZNAM_TABULIEK.setParseAction(lambda tokeny: ZoznamTabuliek(tokeny[::2]))
- HVIEZDICKA = pp.Literal("*")
- HVIEZDICKA.setParseAction(lambda tokeny: VsetkyStlpce())
- SELECT = "select" + (ZOZNAM_STLPCOV | HVIEZDICKA) + "from" + ZOZNAM_TABULIEK
- SELECT.setParseAction(lambda tokeny: Select(tokeny[1],tokeny[3]))
- PRIKAZY = pp.StringStart() + SELECT + pp.ZeroOrMore(";" +SELECT) + pp.Optional(";") + pp.StringEnd() #na konci mozem dat este ; ale nemusim
- PRIKAZY.setParseAction(lambda tokeny: ZoznamPrikazov(tokeny[::2]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement