[Mulgara-svn] r677 - in trunk: jxdata/iTQL jxdata/iTQL/parser src/jar/itql/sablecc

ronald at mulgara.org ronald at mulgara.org
Wed Mar 12 07:17:58 UTC 2008


Author: ronald
Date: 2008-03-12 00:17:57 -0700 (Wed, 12 Mar 2008)
New Revision: 677

Added:
   trunk/jxdata/iTQL/parser/
   trunk/jxdata/iTQL/parser/createResult.txt
   trunk/jxdata/iTQL/parser/dropResult.txt
   trunk/jxdata/iTQL/parser/insertResult1.txt
   trunk/jxdata/iTQL/parser/insertResult2.txt
   trunk/jxdata/iTQL/parser/insertResult3.txt
   trunk/jxdata/iTQL/parser/test.jxu
Modified:
   trunk/src/jar/itql/sablecc/itql.grammar
Log:
Fix #72: an emtpy <> in an iTQL statements would get ignored and treated
as whitespace, leading to somewhat unexpected results. This fix adjusts
the lexer to require at least one urlchar between the < and >. A better,
but more complicated, fix would probably be to handle this in the parser,
but this does the trick and gives a usable error message.


Added: trunk/jxdata/iTQL/parser/createResult.txt
===================================================================
--- trunk/jxdata/iTQL/parser/createResult.txt	                        (rev 0)
+++ trunk/jxdata/iTQL/parser/createResult.txt	2008-03-12 07:17:57 UTC (rev 677)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<answer xmlns="http://mulgara.org/tql#"><query><message>Successfully created graph @server@#parsertest</message></query></answer>


Property changes on: trunk/jxdata/iTQL/parser/createResult.txt
___________________________________________________________________
Name: svn:keywords
   + Id HeadURL Revision
Name: svn:eol-style
   + native

Added: trunk/jxdata/iTQL/parser/dropResult.txt
===================================================================
--- trunk/jxdata/iTQL/parser/dropResult.txt	                        (rev 0)
+++ trunk/jxdata/iTQL/parser/dropResult.txt	2008-03-12 07:17:57 UTC (rev 677)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<answer xmlns="http://mulgara.org/tql#"><query><message>Successfully dropped graph @server@#parsertest</message></query></answer>


Property changes on: trunk/jxdata/iTQL/parser/dropResult.txt
___________________________________________________________________
Name: svn:keywords
   + Id HeadURL Revision
Name: svn:eol-style
   + native

Added: trunk/jxdata/iTQL/parser/insertResult1.txt
===================================================================
--- trunk/jxdata/iTQL/parser/insertResult1.txt	                        (rev 0)
+++ trunk/jxdata/iTQL/parser/insertResult1.txt	2008-03-12 07:17:57 UTC (rev 677)
@@ -0,0 +1,2 @@
+ItqlInterpreter error - [1,9] Unknown token: >
+Caused by: (LexerException) [1,9] Unknown token: >


Property changes on: trunk/jxdata/iTQL/parser/insertResult1.txt
___________________________________________________________________
Name: svn:keywords
   + Id HeadURL Revision
Name: svn:eol-style
   + native

Added: trunk/jxdata/iTQL/parser/insertResult2.txt
===================================================================
--- trunk/jxdata/iTQL/parser/insertResult2.txt	                        (rev 0)
+++ trunk/jxdata/iTQL/parser/insertResult2.txt	2008-03-12 07:17:57 UTC (rev 677)
@@ -0,0 +1,2 @@
+ItqlInterpreter error - [1,19] Unknown token: >
+Caused by: (LexerException) [1,19] Unknown token: >


Property changes on: trunk/jxdata/iTQL/parser/insertResult2.txt
___________________________________________________________________
Name: svn:keywords
   + Id HeadURL Revision
Name: svn:eol-style
   + native

Added: trunk/jxdata/iTQL/parser/insertResult3.txt
===================================================================
--- trunk/jxdata/iTQL/parser/insertResult3.txt	                        (rev 0)
+++ trunk/jxdata/iTQL/parser/insertResult3.txt	2008-03-12 07:17:57 UTC (rev 677)
@@ -0,0 +1,2 @@
+ItqlInterpreter error - [1,28] Unknown token: >
+Caused by: (LexerException) [1,28] Unknown token: >


Property changes on: trunk/jxdata/iTQL/parser/insertResult3.txt
___________________________________________________________________
Name: svn:keywords
   + Id HeadURL Revision
Name: svn:eol-style
   + native

Added: trunk/jxdata/iTQL/parser/test.jxu
===================================================================
--- trunk/jxdata/iTQL/parser/test.jxu	                        (rev 0)
+++ trunk/jxdata/iTQL/parser/test.jxu	2008-03-12 07:17:57 UTC (rev 677)
@@ -0,0 +1,53 @@
+<jxu>
+  <set name="debug" value="false" />
+
+  <set name="query" value="create &lt;@server@#parsertest&gt; ;"/>
+  <eval stepClass="org.mulgara.store.jxunit.QueryJX" />
+  <ifEqual converse="true" file="createResult.txt" name="queryResult">
+    <save name="queryResult" file="badCreateResult.xml"/>
+    <fail>Output failed.  Check badCreateResult.xml for output.</fail>
+  </ifEqual>
+
+  <set name="query" value="
+  insert &lt;&gt; &lt;foo:bar&gt; &lt;foo:a1&gt; 
+         &lt;&gt; &lt;foo:baz&gt; &lt;foo:a2&gt; 
+         &lt;&gt; &lt;foo:boz&gt; &lt;foo:a3&gt; 
+  into &lt;@server@#parsertest&gt; ;"/>
+
+  <eval stepClass="org.mulgara.store.jxunit.QueryJX" />
+  <ifEqual converse="true" file="insertResult1.txt" name="queryResult">
+    <save name="queryResult" file="badInsert1Result.xml"/>
+    <fail>Output failed.  Check badInsert1Result.xml for output.</fail>
+  </ifEqual>
+
+  <set name="query" value="
+  insert &lt;foo:bar&gt; &lt;&gt; &lt;foo:a1&gt; 
+         &lt;foo:baz&gt; &lt;&gt; &lt;foo:a2&gt; 
+         &lt;foo:boz&gt; &lt;&gt; &lt;foo:a3&gt; 
+  into &lt;@server@#parsertest&gt; ;"/>
+
+  <eval stepClass="org.mulgara.store.jxunit.QueryJX" />
+  <ifEqual converse="true" file="insertResult2.txt" name="queryResult">
+    <save name="queryResult" file="badInsert2Result.xml"/>
+    <fail>Output failed.  Check badInsert2Result.xml for output.</fail>
+  </ifEqual>
+
+  <set name="query" value="
+  insert &lt;foo:bar&gt; &lt;foo:a1&gt; &lt;&gt; 
+         &lt;foo:baz&gt; &lt;foo:a2&gt; &lt;&gt; 
+         &lt;foo:boz&gt; &lt;foo:a3&gt; &lt;&gt; 
+  into &lt;@server@#parsertest&gt; ;"/>
+
+  <eval stepClass="org.mulgara.store.jxunit.QueryJX" />
+  <ifEqual converse="true" file="insertResult3.txt" name="queryResult">
+    <save name="queryResult" file="badInsert3Result.xml"/>
+    <fail>Output failed.  Check badInsert3Result.xml for output.</fail>
+  </ifEqual>
+
+  <set name="query" value="drop &lt;@server@#parsertest&gt; ;"/>
+  <eval stepClass="org.mulgara.store.jxunit.QueryJX" />
+  <ifEqual converse="true" file="dropResult.txt" name="queryResult">
+    <save name="queryResult" file="badDropResult.xml"/>
+    <fail>Output failed.  Check badDropResult.xml for output.</fail>
+  </ifEqual>
+</jxu>

Modified: trunk/src/jar/itql/sablecc/itql.grammar
===================================================================
--- trunk/src/jar/itql/sablecc/itql.grammar	2008-03-10 12:17:15 UTC (rev 676)
+++ trunk/src/jar/itql/sablecc/itql.grammar	2008-03-12 07:17:57 UTC (rev 677)
@@ -23,7 +23,8 @@
   com,  /* comment */
   esc,  /* escaping character in quoted literal with '\' */
   lit,  /* quoted literal */
-  res,  /* tagged resource */
+  begres,  /* start of tagged resource */
+  endres,  /* end of tagged resource */
   var,  /* escaping variable name with '$' */
   lng;  /* language code */
 
@@ -89,8 +90,8 @@
   {def}                terminator = ';';
   {def}                lpar       = '(';
   {def}                rpar       = ')';
-  {def->res}           url        = '<';
-  {res->def}           endurl     = '>';
+  {def->begres}        url        = '<';
+  {endres->def}        endurl     = '>';
   {def}                datatypeprefix = '^^';
   {def->lng}           languageprefix = '@';
   {def->var}           variableprefix = ('$' | '?');
@@ -98,7 +99,7 @@
   {def}                float      = digit+ ('.' digit*) | ('.' digit+);
   {lng->def}           langid      = letter letter | letter letter '-' letter letter;
 
-  {res}                resource    = urlchar*;
+  {begres->endres}     resource    = urlchar*;
   {def->lit, lit->def} quote       = 39;  /* ' */
   {lit->esc}           escape      = '\';
   {esc->lit}           escapedtext = character;




More information about the Mulgara-svn mailing list