|
@@ -54,11 +54,11 @@
|
|
|
|
|
|
%extra_argument { LSUP_TTLParserState *state }
|
|
|
|
|
|
-%left WS .
|
|
|
-%left EOS .
|
|
|
+%left PERIOD .
|
|
|
%left SEMICOLON .
|
|
|
%left COMMA .
|
|
|
-%nonassoc PFX .
|
|
|
+%left STRING INTEGER DOUBLE DECIMAL BOOLEAN QNAME BNODE_ID IRIREF .
|
|
|
+%nonassoc LANGTAG PREFIX .
|
|
|
%nonassoc COLON .
|
|
|
|
|
|
/*
|
|
@@ -66,28 +66,23 @@
|
|
|
*/
|
|
|
|
|
|
turtleDoc ::= statements EOF .
|
|
|
-
|
|
|
statements ::= statements statement .
|
|
|
statements ::= .
|
|
|
|
|
|
-statement ::= directive .
|
|
|
+statement ::= prefixID .
|
|
|
+statement ::= base .
|
|
|
statement ::= triples .
|
|
|
|
|
|
-directive ::= prefixID EOS .
|
|
|
-directive ::= base EOS .
|
|
|
|
|
|
-prefixID ::= PREFIX PFX(P) IRIREF(N) . {
|
|
|
+prefixID ::= PREFIX(P) WS IRIREF(N) PERIOD . {
|
|
|
LSUP_nsmap_add (state->nsm, P, N);
|
|
|
}
|
|
|
-prefixID ::= PREFIX COLON IRIREF(N) . {
|
|
|
- LSUP_nsmap_add (state->nsm, "", N);
|
|
|
- }
|
|
|
|
|
|
-base ::= BASE IRIREF(D) . {
|
|
|
+base ::= BASE IRIREF(D) PERIOD . {
|
|
|
state->base = LSUP_iriref_new (D, NULL);
|
|
|
}
|
|
|
|
|
|
-triples ::= subject(S) predObjList(L) EOS . {
|
|
|
+triples ::= subject(S) predObjList(L) PERIOD . {
|
|
|
size_t ct = LSUP_spo_list_add_triples (state->it, S, L);
|
|
|
state->ct += ct;
|
|
|
state->rc = LSUP_OK;
|
|
@@ -112,10 +107,10 @@ predObjList(A) ::= predObjList(L) SEMICOLON predicate(P) objectList(O) . {
|
|
|
}
|
|
|
|
|
|
%type objectList { LSUP_Term ** }
|
|
|
-objectList(A) ::= objectList(L) COMMA object(O) . [COMMA] {
|
|
|
+objectList(A) ::= objectList(L) COMMA object(O) . {
|
|
|
A = LSUP_obj_list_add (L, O);
|
|
|
}
|
|
|
-objectList(A) ::= object(O) . [COMMA] {
|
|
|
+objectList(A) ::= object(O) . [IRIREF] {
|
|
|
A = calloc (sizeof (*A), 2);
|
|
|
A[0] = O;
|
|
|
}
|
|
@@ -169,17 +164,17 @@ literal(A) ::= BOOLEAN(D) . {
|
|
|
blank(A) ::= BNODE_ID(D) . {
|
|
|
A = LSUP_term_new (LSUP_TERM_BNODE, D, NULL);
|
|
|
}
|
|
|
-blank(A) ::= LBRACKET RBRACKET . {
|
|
|
+blank(A) ::= LBRACKET RBRACKET . [BNODE_ID] {
|
|
|
A = LSUP_term_new (LSUP_TERM_BNODE, NULL, NULL);
|
|
|
}
|
|
|
-blank(A) ::= LBRACKET predObjList(L) RBRACKET . {
|
|
|
+blank(A) ::= LBRACKET ows predObjList(L) ows RBRACKET . [BNODE_ID] {
|
|
|
A = LSUP_term_new (LSUP_TERM_BNODE, NULL, NULL);
|
|
|
state->ct += LSUP_spo_list_add_triples (state->it, A, L);
|
|
|
|
|
|
LSUP_pred_obj_list_free (L);
|
|
|
}
|
|
|
-blank ::= collection .
|
|
|
-blank(A) ::= LPAREN RPAREN . {
|
|
|
+blank ::= collection . [BNODE_ID]
|
|
|
+blank(A) ::= LPAREN RPAREN . [BNODE_ID] {
|
|
|
A = LSUP_iriref_new ("rdf:nil", state->nsm);
|
|
|
}
|
|
|
|
|
@@ -210,17 +205,10 @@ resource(A) ::= IRIREF(D) . {
|
|
|
A = rel_iri;
|
|
|
}
|
|
|
}
|
|
|
-resource(A) ::= qname(D) . { A = LSUP_iriref_new (D, state->nsm); }
|
|
|
+resource(A) ::= QNAME(D) . { A = LSUP_iriref_new (D, state->nsm); }
|
|
|
|
|
|
-qname(A) ::= PFX(P) IDNAME(D) . {
|
|
|
- A = malloc (strlen (P) + strlen (D) + 2);
|
|
|
- sprintf (A, "%s:%s", P, D);
|
|
|
- }
|
|
|
-qname(A) ::= COLON IDNAME(D) . {
|
|
|
- A = malloc (strlen (D) + 2);
|
|
|
- sprintf (A, ":%s", D);
|
|
|
- }
|
|
|
-qname(A) ::= COLON . { A = strndup (":", 2); }
|
|
|
+ows ::= WS .
|
|
|
+ows ::= .
|
|
|
|
|
|
/*
|
|
|
* This has been adapted from
|