aboutsummaryrefslogtreecommitdiffstats
path: root/queryparse.py
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2021-07-26 20:20:10 -0400
committerGravatar - 2021-07-26 22:56:48 -0400
commitfb57305445d575f00c6ae95377b8ed7a7e38b643 (patch)
tree9d18b140d64d8d1338266eecd44878490eb1ae2d /queryparse.py
parentqueryparse: add function to build SQL queries (diff)
queryparse: remove literal set
Diffstat (limited to 'queryparse.py')
-rw-r--r--queryparse.py28
1 files changed, 13 insertions, 15 deletions
diff --git a/queryparse.py b/queryparse.py
index 44a42dd..544e9c4 100644
--- a/queryparse.py
+++ b/queryparse.py
@@ -126,46 +126,45 @@ e4 ::= TAG | "[" e1 "]";
class ParseError(Exception):
pass
-def e4(lits, l):
+def e4(l):
typ,s = classify_head(l)
if typ == TokType.OPEN:
- pt,l = e1(lits, l[1:])
+ pt,l = e1(l[1:])
typ,_ = classify_head(l)
if typ != TokType.CLOSE:
raise ParseError
return pt,l[1:]
elif typ in LitType:
- lits.add((typ, s))
return Atom(typ, s), l[1:]
else:
raise ParseError
-def e3(lits, l):
+def e3(l):
typ,_ = classify_head(l)
if typ == TokType.NOT:
- pt,l = e4(lits, l[1:])
+ pt,l = e4(l[1:])
return demorgan(pt), l
- return e4(lits, l)
+ return e4(l)
-def e2(lits, l):
- pt,l = e3(lits, l)
+def e2(l):
+ pt,l = e3(l)
try:
while True:
- pt2,l = e3(lits, l)
+ pt2,l = e3(l)
pt = encapsulate(pt, TokType.AND)
pt.push(pt2)
except ParseError:
pass
return pt,l
-def e1(lits, l):
- pt,l = e2(lits, l)
+def e1(l):
+ pt,l = e2(l)
typ,_ = classify_head(l)
try:
while typ == TokType.OR:
- pt2,l = e2(lits, l[1:])
+ pt2,l = e2(l[1:])
pt = encapsulate(pt, TokType.OR)
pt.push(pt2)
typ,_ = classify_head(l)
@@ -174,8 +173,7 @@ def e1(lits, l):
return pt,l
def parse(l):
- lits = set()
- x,l = e1(lits, l)
+ x,l = e1(l)
if l != []:
raise ParseError
- return x,lits
+ return x