[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