[Checkins] SVN: Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt quanted fails
Adam Groszer
agroszer at gmail.com
Tue Aug 26 04:12:12 EDT 2008
Log message for revision 90264:
quanted fails
Changed:
U Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt
-=-
Modified: Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt 2008-08-26 07:57:58 UTC (rev 90263)
+++ Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt 2008-08-26 08:12:12 UTC (rev 90264)
@@ -19,127 +19,157 @@
>>> from ocql.parser.queryparser import QueryParser
- #FAILS, why?
- #>>> QueryParser("set [ ]")(None)
- #Head(Query(<type 'set'>, , None))
+ ##FAILS, why?
+ ##>>> QueryParser("set [ ]")(None)
+ ##Head(Query(<type 'set'>, , None))
+ #
+ #>>> QueryParser("set [ | 1 ]")(None)
+ #Head(Query(<type 'set'>, , Constant(1)))
+ #
+ #>>> QueryParser("list [ | 1 ]")(None)
+ #Head(Query(<type 'list'>, , Constant(1)))
+ #
+ #>>> QueryParser("set [ | 1 ] union set [|2]")(None)
+ #Head(Union(Query(<type 'set'>, , Constant(1)), Query(<type 'set'>, , Constant(2))))
+ #
+ #>>> QueryParser("list [ | 1 ] union list [|2]")(None)
+ #Head(Union(Query(<type 'list'>, , Constant(1)), Query(<type 'list'>, , Constant(2))))
+ #
+ #>>> QueryParser("set [ | 1 ] differ set [|2]")(None)
+ #Head(Differ(Query(<type 'set'>, , Constant(1)), Query(<type 'set'>, , Constant(2))))
+ #
+ #>>> QueryParser("list [ | 1 ] differ list [|2]")(None)
+ #Head(Differ(Query(<type 'list'>, , Constant(1)), Query(<type 'list'>, , Constant(2))))
+ #
+ #>>> QueryParser("set [ i in ICourse | i ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
+ #
+ #>>> QueryParser("set [ i for i in ICourse ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
+ #
+ #>>> QueryParser("list [ i in ICourse | i ]")(None)
+ #Head(Query(<type 'list'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
+ #
+ #>>> QueryParser("len ( set [ i in ICourse | i ] )")(None)
+ #Head(Count(Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i))))
+ #
+ #>>> QueryParser("len ( list [ i in ICourse | i ] )")(None)
+ #Head(Count(Query(<type 'list'>, In(Identifier(i), Identifier(ICourse)), Identifier(i))))
+ #
+ #>>> QueryParser("set [ d in IDepartment; every set [ c in ICourse; some c.runBy == d | c.credits ] == 2 | d.name ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(d), Identifier(IDepartment));
+ #Eq((Every, Query(<type 'set'>, In(Identifier(c), Identifier(ICourse));
+ #Eq((Some, Property(Identifier(c), Identifier(runBy))), Identifier(d)), Property(Identifier(c), Identifier(credits)))),
+ #Constant(2)), Property(Identifier(d), Identifier(name))))
+ #
+ #>>> QueryParser("set [ c in ICourse; c.credits > 3 | c.code ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Gt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
+ #
+ #>>> QueryParser("list [ c in ICourse; c.credits > 3 | c.code ]")(None)
+ #Head(Query(<type 'list'>, In(Identifier(c), Identifier(ICourse)); Gt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
+ #
+ #>>> QueryParser("set [ c in ICourse; c.credits >= 3 | c.code ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Ge(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
+ #
+ #>>> QueryParser("set [ c in ICourse; c.credits < 3 | c.code ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Lt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
+ #
+ #>>> QueryParser("set [ c in ICourse; c.credits <= 3 | c.code ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Le(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
+ #
+ #>>> QueryParser("set [ c in ICourse; c.credits != 3 | c.code ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Ne(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
+ #
+ #>>> QueryParser("set [ c in ICourse | c.code ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)), Property(Identifier(c), Identifier(code))))
+ #
+ #>>> QueryParser("set [ c in ICourse; a as c.code | a]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Alias(Identifier(a), Property(Identifier(c), Identifier(code))), Identifier(a)))
+ #
+ #>>> QueryParser("set [ c in ICourse; c.code==2 or c.code==3 | c ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Or(Eq(Property(Identifier(c), Identifier(code)), Constant(2)), Eq(Property(Identifier(c), Identifier(code)), Constant(3))), Identifier(c)))
+ #
+ #>>> QueryParser("set [ c in ICourse; c.code==2 and c.code==3 | c ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); And(Eq(Property(Identifier(c), Identifier(code)), Constant(2)), Eq(Property(Identifier(c), Identifier(code)), Constant(3))), Identifier(c)))
+ #
+ #>>> QueryParser("set [ c in ICourse; not (c.code==2 or c.code==3) | c ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Not(Or(Eq(Property(Identifier(c), Identifier(code)), Constant(2)), Eq(Property(Identifier(c), Identifier(code)), Constant(3)))), Identifier(c)))
+ #
+ #>>> QueryParser("set [ c in ICourse; a as c.name; a=='C1' | c]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Alias(Identifier(a), Property(Identifier(c), Identifier(name))); Eq(Identifier(a), Constant('C1')), Identifier(c)))
+ #
+ #>>> QueryParser("set [ s in IStudent; a as s.major.address.street; a=='Hillhead Street' or a=='Gibson Street' | s ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(s), Identifier(IStudent));
+ #Alias(Identifier(a), Property(Identifier(s), Property(Identifier(major), Property(Identifier(address), Identifier(street)))));
+ #Or(Eq(Identifier(a), Constant('Hillhead Street')), Eq(Identifier(a), Constant('Gibson Street'))), Identifier(s)))
+ #
+ #>>> QueryParser("set [ i in IPerson; isinstance(i, Tutor) | i ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(i), Identifier(IPerson)); Isinstance(Identifier(i), Tutor), Identifier(i)))
+ #
+ #>>> QueryParser("set [ s in Staff; set [st in IStudent; some st.takes == atleast 2 s.teaches | st.name] == 'St1' | i.name ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(s), Identifier(Staff)); Eq(Query(<type 'set'>, In(Identifier(st), Identifier(IStudent));
+ #Eq((Some, Property(Identifier(st), Identifier(takes))), (Atleast(2, Property(Identifier(s), Identifier(teaches))))),
+ #Property(Identifier(st), Identifier(name))), Constant('St1')), Property(Identifier(i), Identifier(name))))
+ #
+ #>>> QueryParser("set [ s in Staff; set [st in IStudent; some st.takes == just 2 s.teaches | st.name] == 'St1' | i.name ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(s), Identifier(Staff)); Eq(Query(<type 'set'>, In(Identifier(st), Identifier(IStudent));
+ #Eq((Some, Property(Identifier(st), Identifier(takes))), (Just(2, Property(Identifier(s), Identifier(teaches))))),
+ #Property(Identifier(st), Identifier(name))), Constant('St1')), Property(Identifier(i), Identifier(name))))
+ #
+ #>>> QueryParser("set [ s in Staff; set [st in IStudent; some st.takes == atmost 2 s.teaches | st.name] == 'St1' | i.name ]")(None)
+ #Head(Query(<type 'set'>, In(Identifier(s), Identifier(Staff)); Eq(Query(<type 'set'>, In(Identifier(st), Identifier(IStudent));
+ #Eq((Some, Property(Identifier(st), Identifier(takes))), (Atmost(2, Property(Identifier(s), Identifier(teaches))))),
+ #Property(Identifier(st), Identifier(name))), Constant('St1')), Property(Identifier(i), Identifier(name))))
+ #
+ #>>> QueryParser("len ( set [ i in IStaff | i ] ) + len ( set [ j in IVisitingStaff | j ] )")(None)
+ #Head(Add(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
+ #Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
+ #
+ #>>> QueryParser("len ( set [ i in IStaff | i ] ) - len ( set [ j in IVisitingStaff | j ] )")(None)
+ #Head(Sub(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
+ #Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
+ #
+ #>>> QueryParser("len ( set [ i in IStaff | i ] ) * len ( set [ j in IVisitingStaff | j ] )")(None)
+ #Head(Mul(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
+ #Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
+ #
+ #>>> QueryParser("len ( set [ i in IStaff | i ] ) / len ( set [ j in IVisitingStaff | j ] )")(None)
+ #Head(Div(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
+ #Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
+ #
+ #>>> QueryParser("set [ c in ICourse; a as c.credits; a > 3 | c.code ]")(None)
+ #Head(Query(<type 'set'>,
+ #In(Identifier(c), Identifier(ICourse));
+ #Alias(Identifier(a), Property(Identifier(c), Identifier(credits)));
+ #Gt(Identifier(a), Constant(3)),
+ #Property(Identifier(c), Identifier(code))))
- >>> QueryParser("set [ | 1 ]")(None)
- Head(Query(<type 'set'>, , Constant(1)))
-
- >>> QueryParser("list [ | 1 ]")(None)
- Head(Query(<type 'list'>, , Constant(1)))
-
- >>> QueryParser("set [ | 1 ] union set [|2]")(None)
- Head(Union(Query(<type 'set'>, , Constant(1)), Query(<type 'set'>, , Constant(2))))
-
- >>> QueryParser("list [ | 1 ] union list [|2]")(None)
- Head(Union(Query(<type 'list'>, , Constant(1)), Query(<type 'list'>, , Constant(2))))
-
- >>> QueryParser("set [ | 1 ] differ set [|2]")(None)
- Head(Differ(Query(<type 'set'>, , Constant(1)), Query(<type 'set'>, , Constant(2))))
-
- >>> QueryParser("list [ | 1 ] differ list [|2]")(None)
- Head(Differ(Query(<type 'list'>, , Constant(1)), Query(<type 'list'>, , Constant(2))))
-
- >>> QueryParser("set [ i in ICourse | i ]")(None)
- Head(Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
-
- >>> QueryParser("set [ i for i in ICourse ]")(None)
- Head(Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
-
- >>> QueryParser("list [ i in ICourse | i ]")(None)
- Head(Query(<type 'list'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
-
- >>> QueryParser("len ( set [ i in ICourse | i ] )")(None)
- Head(Count(Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i))))
-
- >>> QueryParser("len ( list [ i in ICourse | i ] )")(None)
- Head(Count(Query(<type 'list'>, In(Identifier(i), Identifier(ICourse)), Identifier(i))))
-
- >>> QueryParser("set [ d in IDepartment; every set [ c in ICourse; some c.runBy == d | c.credits ] == 2 | d.name ]")(None)
- Head(Query(<type 'set'>, In(Identifier(d), Identifier(IDepartment));
- Eq((Every, Query(<type 'set'>, In(Identifier(c), Identifier(ICourse));
- Eq((Some, Property(Identifier(c), Identifier(runBy))), Identifier(d)), Property(Identifier(c), Identifier(credits)))),
- Constant(2)), Property(Identifier(d), Identifier(name))))
-
- >>> QueryParser("set [ c in ICourse; c.credits > 3 | c.code ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Gt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
-
- >>> QueryParser("list [ c in ICourse; c.credits > 3 | c.code ]")(None)
- Head(Query(<type 'list'>, In(Identifier(c), Identifier(ICourse)); Gt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
-
- >>> QueryParser("set [ c in ICourse; c.credits >= 3 | c.code ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Ge(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
-
- >>> QueryParser("set [ c in ICourse; c.credits < 3 | c.code ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Lt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
-
- >>> QueryParser("set [ c in ICourse; c.credits <= 3 | c.code ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Le(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
-
- >>> QueryParser("set [ c in ICourse; c.credits != 3 | c.code ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Ne(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code))))
-
- >>> QueryParser("set [ c in ICourse | c.code ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)), Property(Identifier(c), Identifier(code))))
-
- >>> QueryParser("set [ c in ICourse; a as c.code | a]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Alias(Identifier(a), Property(Identifier(c), Identifier(code))), Identifier(a)))
-
- >>> QueryParser("set [ c in ICourse; c.code==2 or c.code==3 | c ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Or(Eq(Property(Identifier(c), Identifier(code)), Constant(2)), Eq(Property(Identifier(c), Identifier(code)), Constant(3))), Identifier(c)))
-
- >>> QueryParser("set [ c in ICourse; c.code==2 and c.code==3 | c ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); And(Eq(Property(Identifier(c), Identifier(code)), Constant(2)), Eq(Property(Identifier(c), Identifier(code)), Constant(3))), Identifier(c)))
-
- >>> QueryParser("set [ c in ICourse; not (c.code==2 or c.code==3) | c ]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Not(Or(Eq(Property(Identifier(c), Identifier(code)), Constant(2)), Eq(Property(Identifier(c), Identifier(code)), Constant(3)))), Identifier(c)))
-
- >>> QueryParser("set [ c in ICourse; a as c.name; a=='C1' | c]")(None)
- Head(Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Alias(Identifier(a), Property(Identifier(c), Identifier(name))); Eq(Identifier(a), Constant('C1')), Identifier(c)))
-
- >>> QueryParser("set [ s in IStudent; a as s.major.address.street; a=='Hillhead Street' or a=='Gibson Street' | s ]")(None)
- Head(Query(<type 'set'>, In(Identifier(s), Identifier(IStudent));
- Alias(Identifier(a), Property(Identifier(s), Property(Identifier(major), Property(Identifier(address), Identifier(street)))));
- Or(Eq(Identifier(a), Constant('Hillhead Street')), Eq(Identifier(a), Constant('Gibson Street'))), Identifier(s)))
-
- >>> QueryParser("set [ i in IPerson; isinstance(i, Tutor) | i ]")(None)
- Head(Query(<type 'set'>, In(Identifier(i), Identifier(IPerson)); Isinstance(Identifier(i), Tutor), Identifier(i)))
-
- >>> QueryParser("set [ s in Staff; set [st in IStudent; some st.takes == atleast 2 s.teaches | st.name] == 'St1' | i.name ]")(None)
- Head(Query(<type 'set'>, In(Identifier(s), Identifier(Staff)); Eq(Query(<type 'set'>, In(Identifier(st), Identifier(IStudent));
- Eq((Some, Property(Identifier(st), Identifier(takes))), (Atleast(2, Property(Identifier(s), Identifier(teaches))))),
- Property(Identifier(st), Identifier(name))), Constant('St1')), Property(Identifier(i), Identifier(name))))
-
- >>> QueryParser("set [ s in Staff; set [st in IStudent; some st.takes == just 2 s.teaches | st.name] == 'St1' | i.name ]")(None)
- Head(Query(<type 'set'>, In(Identifier(s), Identifier(Staff)); Eq(Query(<type 'set'>, In(Identifier(st), Identifier(IStudent));
- Eq((Some, Property(Identifier(st), Identifier(takes))), (Just(2, Property(Identifier(s), Identifier(teaches))))),
- Property(Identifier(st), Identifier(name))), Constant('St1')), Property(Identifier(i), Identifier(name))))
-
- >>> QueryParser("set [ s in Staff; set [st in IStudent; some st.takes == atmost 2 s.teaches | st.name] == 'St1' | i.name ]")(None)
- Head(Query(<type 'set'>, In(Identifier(s), Identifier(Staff)); Eq(Query(<type 'set'>, In(Identifier(st), Identifier(IStudent));
- Eq((Some, Property(Identifier(st), Identifier(takes))), (Atmost(2, Property(Identifier(s), Identifier(teaches))))),
- Property(Identifier(st), Identifier(name))), Constant('St1')), Property(Identifier(i), Identifier(name))))
-
- >>> QueryParser("len ( set [ i in IStaff | i ] ) + len ( set [ j in IVisitingStaff | j ] )")(None)
- Head(Add(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
- Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
-
- >>> QueryParser("len ( set [ i in IStaff | i ] ) - len ( set [ j in IVisitingStaff | j ] )")(None)
- Head(Sub(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
- Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
-
- >>> QueryParser("len ( set [ i in IStaff | i ] ) * len ( set [ j in IVisitingStaff | j ] )")(None)
- Head(Mul(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
- Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
-
- >>> QueryParser("len ( set [ i in IStaff | i ] ) / len ( set [ j in IVisitingStaff | j ] )")(None)
- Head(Div(Count(Query(<type 'set'>, In(Identifier(i), Identifier(IStaff)), Identifier(i))),
- Count(Query(<type 'set'>, In(Identifier(j), Identifier(IVisitingStaff)), Identifier(j)))))
-
- >>> QueryParser("set [ c in ICourse; a as c.credits; a > 3 | c.code ]")(None)
+ >>> QueryParser("set [ c in ICourse; d in IDepartment; d == some c.runBy | d.name ]")(None)
Head(Query(<type 'set'>,
In(Identifier(c), Identifier(ICourse));
- Alias(Identifier(a), Property(Identifier(c), Identifier(credits)));
- Gt(Identifier(a), Constant(3)),
- Property(Identifier(c), Identifier(code))))
+ In(Identifier(d), Identifier(IDepartment));
+ Eq(Identifier(d), Quanted(Some, Property(Identifier(c), Identifier(runBy)))),
+ Property(Identifier(d), Identifier(name))))
+
+ The above should match with:
+ Head(Query(
+ metadata, symbols,
+ set, [
+ In(
+ metadata, symbols,
+ Identifier(metadata, symbols,'c'),
+ Identifier(metadata, symbols,'ICourse')),
+ In(
+ metadata, symbols,
+ Identifier(metadata, symbols,'d'),
+ Identifier(metadata, symbols,'IDepartment')),
+ Eq(
+ metadata, symbols,
+ Identifier(metadata, symbols,'d'),
+ Quanted(metadata, symbols,
+ Some(metadata, symbols, ''),
+ Property(metadata, symbols,
+ Identifier(metadata, symbols, 'c'),
+ Identifier(metadata, symbols, 'runBy'))
+ )),
+ ] ,Identifier(metadata, symbols,'d.name')))
More information about the Checkins
mailing list