[Mulgara-svn] r608 - branches/mgr-61-sparql/src/jar/sparql/grammar

pag at mulgara.org pag at mulgara.org
Mon Dec 10 03:33:22 UTC 2007


Author: pag
Date: 2007-12-09 21:33:21 -0600 (Sun, 09 Dec 2007)
New Revision: 608

Modified:
   branches/mgr-61-sparql/src/jar/sparql/grammar/expr.flex
   branches/mgr-61-sparql/src/jar/sparql/grammar/expr.grammar
Log:
Compiling but with large warnings about precedence

Modified: branches/mgr-61-sparql/src/jar/sparql/grammar/expr.flex
===================================================================
--- branches/mgr-61-sparql/src/jar/sparql/grammar/expr.flex	2007-12-10 03:30:58 UTC (rev 607)
+++ branches/mgr-61-sparql/src/jar/sparql/grammar/expr.flex	2007-12-10 03:33:21 UTC (rev 608)
@@ -43,7 +43,7 @@
 LineTerminator = \r|\n|\r\n
 WhiteSpace     = {LineTerminator} | [ \t\f]
 
-IriRef = "<" [^<>{}\"\\|^`\x00-\x20]* ">"
+IriRef = "<" [^<>{}\"\\|\^`\x00-\x20]* ">"
 BlankPrefix = "_:"
 LangtagStart = "@"
 Langtag = [a-zA-Z]+ ("-" [a-zA-Z0-9]+)*
@@ -57,8 +57,6 @@
 IntegerNegative = "-" {Integer}
 DecimalNegative = "-" {Decimal}
 DoubleNegative = "-" {Double}
-StringLiteralDelim1 = "'"
-StringLiteralDelim2 = \"
 StringLiteralLongDelim1 = "'''"
 StringLiteralLongDelim2 = \"\"\"
 Echar = "\\" [tbnrf'\"\\]
@@ -97,7 +95,7 @@
   {DecimalNegative}           { return newToken(DECIMAL_NEGATIVE, new Float(yytext())); }
   {IntegerNegative}           { return newToken(INTEGER_NEGATIVE, new Integer(yytext())); }
 
-  {PnPrefix}? ":"             { return newToken(PNAME_NS, chop(yytext())); }
+  {PnPrefix}? ":"             { return newToken(PNAME_NS, yytext()); }
   {VariableStart}{Varname}    { return newToken(VARNAME, yytext().substring(1)); }
   {LangtagStart}{Langtag}     { return newToken(LANGTAG, yytext().substring(1)); }
   {BlankPrefix}{PnLocal}      { return newToken(BLANK_NODE, yytext().substring(2)); }
@@ -108,6 +106,8 @@
   {StringLiteralLongDelim2}   { string.setLength(0); yybegin(YYSTRING_LITERAL_LONG2); }
   "'" {LiteralChar1} "'"      { return newToken(STRING_LITERAL, unquote(yytext())); }
   \" {LiteralChar2} \"        { return newToken(STRING_LITERAL, unquote(yytext())); }
+  "TRUE" | "true"             { return newToken(BOOLEAN, yytext()); }
+  "FALSE" | "false"           { return newToken(BOOLEAN, yytext()); }
 
 	"("                         { return newToken(LPAREN); }
 	")"                         { return newToken(RPAREN); }
@@ -119,9 +119,9 @@
 	"DISTINCT"|"distinct"       { return newToken(DISTINCT); }
 	"REDUCED"|"reduced"         { return newToken(REDUCED); }
 	"FROM"|"from"	              { return newToken(FROM); }
-	"WHERE"|"where"	            { System.out.println("flex: doing the where"); return newToken(WHERE); }
-	"{"                         { System.out.println("flex: Got the lbrace"); return newToken(LBRACE); }
-	"}"                         { System.out.println("flex: Got the rbrace");return newToken(RBRACE); }
+	"WHERE"|"where"	            { return newToken(WHERE); }
+	"{"                         { return newToken(LBRACE); }
+	"}"                         { return newToken(RBRACE); }
 	"."                         { return newToken(DOT); }
 	"OPTIONAL"|"optional"       { return newToken(OPTIONAL); }
 	"FILTER" | "filter"         { return newToken(FILTER); }
@@ -162,13 +162,13 @@
 
 <YYSTRING_LITERAL_LONG1> {
   {StringLiteralLongDelim1}      { yybegin(YYINITIAL); return newToken(STRING_LITERAL, string.toString()); }
-  ([^'\\] | {Echar}))*           { string.append(yytext()); }
+  ([^'\\] | {Echar})*           { string.append(yytext()); }
   "'"                            { string.append("'"); }
 }
 
 <YYSTRING_LITERAL_LONG2> {
   {StringLiteralLongDelim2}      {yybegin(YYINITIAL); return newToken(STRING_LITERAL, string.toString()); }
-  ([^\"\\] | {Echar}))*          { string.append(yytext()); }
+  ([^\"\\] | {Echar})*          { string.append(yytext()); }
   \"                             { string.append("\""); }
 }
 

Modified: branches/mgr-61-sparql/src/jar/sparql/grammar/expr.grammar
===================================================================
--- branches/mgr-61-sparql/src/jar/sparql/grammar/expr.grammar	2007-12-10 03:30:58 UTC (rev 607)
+++ branches/mgr-61-sparql/src/jar/sparql/grammar/expr.grammar	2007-12-10 03:33:21 UTC (rev 608)
@@ -7,22 +7,31 @@
 %terminals MULT, DIV, PLUS, MINUS, LPAREN, RPAREN;
 %terminals EQUALS, NOT_EQUALS, LESS_THAN, GREATER_THAN, LESS_THAN_EQUALS, GREATER_THAN_EQUALS;
 %terminals SELECT, DISTINCT, REDUCED, FROM, WHERE, GRAPH;
-%terminals LBRACE, RBRACE, DOT, OPTIONAL, SEMI_COLON, COMMA, LETTER_A, VARIABLE, FILTER;
+%terminals LBRACE, RBRACE, DOT, OPTIONAL, SEMI_COLON, COMMA, LETTER_A, FILTER;
 %terminals OR, AND, NOT, STR, LANG, LANGMATCHES, DATATYPE, BOUND, SAME_TERM, IS_IRI, IS_URI, IS_BLANK, IS_LITERAL, REGEX;
-%terminals INTEGER, DECIMAL, DOUBLE, Q_IRI_REF, QNAME_NS, QNAME_LN, NAMED, UNION, NIL, LIMIT, ORDER_BY, ASC, DESC;
-%terminals LIMIT, OFFSET;
+%terminals NAMED, UNION, LIMIT, ORDER_BY, ASC, DESC, OFFSET;
+%terminals INTEGER, DECIMAL, DOUBLE, BOOLEAN;
+%terminals INTEGER_POSITIVE, DECIMAL_POSITIVE, DOUBLE_POSITIVE;
+%terminals INTEGER_NEGATIVE, DECIMAL_NEGATIVE, DOUBLE_NEGATIVE;
+%terminals VARNAME, LANGTAG, BLANK_NODE, IRI_REF, ANON, NIL, STRING_LITERAL;
+%terminals LITERAL_TYPE_SEP, PNAME_NS, PN_LOCAL;
 
-%left  RPAREN;
-%left  MULT, DIV;
-%left  PLUS, MINUS;
-%left  EQUALS, NOT_EQUALS, LESS_THAN, LESS_THAN_EQUALS, GREATER_THAN, GREATER_THAN_EQUALS;
-%left  AND;
-%left  OR;
+%left RPAREN;
+%left MULT, DIV;
+%left PLUS, MINUS;
+%left EQUALS, NOT_EQUALS, LESS_THAN, LESS_THAN_EQUALS, GREATER_THAN, GREATER_THAN_EQUALS;
+%left AND;
+%left OR;
 
 
+%typeof INTEGER, INTEGER_POSITIVE, INTEGER_NEGATIVE = "Integer";
+%typeof DECIMAL, DECIMAL_POSITIVE, DECIMAL_NEGATIVE = "Float";
+%typeof DOUBLE, DOUBLE_POSITIVE, DOUBLE_NEGATIVE = "Double";
+%typeof VARNAME, STRING_LITERAL, PNAME_NS, IRI_REF = "String";
+%typeof BOOLEAN = "Boolean";
+
 %typeof from_clause = "From";
 %typeof where_clause = "GroupGraphPattern";
-%typeof VARIABLE, Q_IRI_REF, QNAME_NS, QNAME_LN = "String";
 %typeof var_or_iriref = "Predicate";
 %typeof object_list = "ArrayList";
 %typeof object = "RDFObject";
@@ -36,17 +45,15 @@
 %typeof prop_list_not_empty = "ArrayList<Triple>";
 %typeof triples_block = "ArrayList<Triple>";
 %typeof var_list = "ArrayList<String>";
-%typeof var_or_term, var, iri_ref = "String";
+%typeof var_or_term, var = "String";
 %typeof verb = "Predicate";
-%typeof INTEGER = "Integer";
-%typeof DECIMAL = "Float";
-%typeof DOUBLE = "Double";
 %typeof distinct_or_reduced, named_graph_clause, data_graph_clause_or_named_graph_clause = "String";
 %typeof expression, numeric_literal, primary_expression, bracketted_expression = "Expression";
 %typeof builtin_call, regex_expression = "BuiltinCall";
 %typeof group_graph_pattern_union = "ArrayList<GroupGraphPattern>";
 %typeof group_or_union_graph_element = "GroupOrUnionGraphPatternElement";
 %typeof graph_pattern_not_triples = "NonTriple";
+%typeof iri_ref = "IRIReference";
 
 %typeof filter, constraint = "Constraint";
 %typeof function_call = "FunctionCall";
@@ -438,12 +445,6 @@
 		:}
 	;
 
-numeric_literal
-	= INTEGER.e			{: return new IntegerExpression(e); :}
-	| DECIMAL.e			{: return new DecimalExpression(e); :}
-	| DOUBLE.e			{: return new DoubleExpression(e); :}
-	;
-
 triples_block
 	= triples_same_subject
 	| triples_same_subject.oneSubjectTriples another_triples_block.anotherSubjectTriples
@@ -537,29 +538,58 @@
 	;
 
 var
-	= VARIABLE.e		{: return new Variable(e); :}
+	= VARNAME.e		{: return new Variable(e); :}
 	;
 	
 graph_term
-  = iri_ref.ref      {: return new IRIReference(ref); :}
-  | rdf_literal // not yet implemented
+  = iri_ref
+  | rdf_literal
   | numeric_literal
-  | boolean_literal // not yet implemented
+  | BOOLEAN
   | blank_node
   | NIL;
 
 rdf_literal =
-  | STRING_LITERAL.str LANGTAG.lang                         {: return Literal.newLang(str, lang); :}
-  | STRING_LITERAL.str ( LITERAL_TYPE_SEP iri_ref.type )?   {: return Literal.newTyped(str, type); :}
+  | STRING_LITERAL.str LANGTAG.lang                         {: return Literal.newLangLiteral(str, lang); :}
+  | STRING_LITERAL.str LITERAL_TYPE_SEP iri_ref.type        {: return Literal.newTypedLiteral(str, type); :}
+  | STRING_LITERAL.str                                      {: return Literal.newUntypedLiteral(str); :}
   ;
   
 iri_ref
   = IRI_REF
-  | PNAME_LN
+  | pname_ln
   | PNAME_NS
   ;
-  
+
+pname_ln
+  = PNAME_NS.ns PN_LOCAL.local                              {: return new String(ns + local); :}
+  ;
+
 blank_node
   = BLANK_NODE.bn     {: return new BlankNode(bn); :}
   | ANON              {: return new BlankNode(); :}
-  ;
\ No newline at end of file
+  ;
+
+numeric_literal
+  = numeric_literal_unsigned
+  | numeric_literal_positive
+  | numeric_literal_negative
+  ;
+  
+numeric_literal_unsigned
+  = INTEGER.e              {: return new IntegerExpression(e); :}
+  | DECIMAL.e              {: return new DecimalExpression(e); :}
+  | DOUBLE.e               {: return new DoubleExpression(e); :}
+  ;
+
+numeric_literal_positive
+  = INTEGER_POSITIVE.e     {: return new IntegerExpression(e); :}
+  | DECIMAL_POSITIVE.e     {: return new DecimalExpression(e); :}
+  | DOUBLE_POSITIVE.e      {: return new DoubleExpression(e); :}
+  ;
+
+numeric_literal_negative
+  = INTEGER_NEGATIVE.e     {: return new IntegerExpression(e); :}
+  | DECIMAL_NEGATIVE.e     {: return new DecimalExpression(e); :}
+  | DOUBLE_NEGATIVE.e      {: return new DoubleExpression(e); :}
+  ;




More information about the Mulgara-svn mailing list