[Mulgara-svn] r1898 - trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser
pag at mulgara.org
pag at mulgara.org
Thu Jan 28 20:53:58 UTC 2010
Author: pag
Date: 2010-01-28 12:53:57 -0800 (Thu, 28 Jan 2010)
New Revision: 1898
Modified:
trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.java
trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.jj
Log:
Associating out-of-order filters with the closest graph pattern
Modified: trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.java
===================================================================
--- trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.java 2010-01-27 19:24:29 UTC (rev 1897)
+++ trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.java 2010-01-28 20:53:57 UTC (rev 1898)
@@ -529,9 +529,9 @@
/* [20] GroupGraphPattern ::= '{' TriplesBlock? ( ( GraphPatternNotTriples | Filter ) '.'? TriplesBlock? )* '}' */
final public GroupGraphPattern GroupGraphPattern() throws ParseException {
GroupGraphPattern g = null, g2;
- GraphPatternConjunction c = null;
+ GroupGraphPattern c = null;
Expression f;
- g = GroupGraphPattern.EMPTY;
+ g = new EmptyGraphPattern();
jj_consume_token(44);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case TRUE:
@@ -634,8 +634,12 @@
if (g == null) g = g2;
else {
// preferentially choose c so we get the right constructor
- if (c == null) c = new GraphPatternConjunction(g, g2);
- else c = new GraphPatternConjunction(c, g2);
+ if (c == null) {
+ if (g instanceof EmptyGraphPattern) {
+ c = g2;
+ if (g.getFilter() != null) g2.setFilter(g.getFilter());
+ } else c = new GraphPatternConjunction(g, g2);
+ } else c = new GraphPatternConjunction(c, g2);
g = c;
}
break;
Modified: trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.jj
===================================================================
--- trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.jj 2010-01-27 19:24:29 UTC (rev 1897)
+++ trunk/src/jar/querylang/javacc/org/mulgara/sparql/parser/SparqlParser.jj 2010-01-28 20:53:57 UTC (rev 1898)
@@ -292,10 +292,10 @@
/* [20] GroupGraphPattern ::= '{' TriplesBlock? ( ( GraphPatternNotTriples | Filter ) '.'? TriplesBlock? )* '}' */
GroupGraphPattern GroupGraphPattern() : {
GroupGraphPattern g = null, g2;
- GraphPatternConjunction c = null;
+ GroupGraphPattern c = null;
Expression f;
} {
- { g = GroupGraphPattern.EMPTY; }
+ { g = new EmptyGraphPattern(); }
"{"
( g=TriplesBlock() )?
(
@@ -312,8 +312,12 @@
if (g == null) g = g2;
else {
// preferentially choose c so we get the right constructor
- if (c == null) c = new GraphPatternConjunction(g, g2);
- else c = new GraphPatternConjunction(c, g2);
+ if (c == null) {
+ if (g instanceof EmptyGraphPattern) {
+ c = g2;
+ if (g.getFilter() != null) g2.setFilter(g.getFilter());
+ } else c = new GraphPatternConjunction(g, g2);
+ } else c = new GraphPatternConjunction(c, g2);
g = c;
}
}
More information about the Mulgara-svn
mailing list