Quellcode durchsuchen

Remove WS from rules.

Stefano Cossu vor 2 Jahren
Ursprung
Commit
8ae0a9cd9d
3 geänderte Dateien mit 22 neuen und 21 gelöschten Zeilen
  1. 1 1
      Makefile
  2. 11 10
      src/codec/grammar_ttl.y
  3. 10 10
      src/codec/lexer_ttl.re

+ 1 - 1
Makefile

@@ -157,7 +157,7 @@ debug_install: install debug ## Install standard and debug libraries.
 
 .PHONY: clean ## Clean up artifacts, including language parsers.
 clean:
-	rm -f src/*.[aod] ./*.[aod] src/codec/*.[aod]
+	rm -f src/*.[aod] ./*.[aod] src/codec/*.[aod] src/codec/*.out
 	rm -rf build/*
 	rm -f include/codec/grammar_*.h
 	rm -f src/codec/{grammar,parser}_*.c

+ 11 - 10
src/codec/grammar_ttl.y

@@ -25,6 +25,10 @@
     state->rc = LSUP_PARSE_ERR;
 }
 
+%syntax_error {
+    log_warn ("Syntax error. Attempting recovery.");
+}
+
 %stack_size CHUNK_SIZE
 
 /*
@@ -72,14 +76,14 @@ statement   ::= triples .
 directive 	::= prefixID EOS .
 directive   ::= base EOS .
 
-prefixID    ::= PREFIX WS PFX(P) ows IRIREF(N) . {
+prefixID    ::= PREFIX PFX(P) IRIREF(N) . {
                 LSUP_nsmap_add (state->nsm, P, N);
             }
-prefixID    ::= PREFIX WS COLON ows IRIREF(N) . {
+prefixID    ::= PREFIX COLON IRIREF(N) . {
                 LSUP_nsmap_add (state->nsm, "", N);
             }
 
-base        ::= BASE WS IRIREF(D) . {
+base        ::= BASE IRIREF(D) . {
                 state->base = LSUP_iriref_new (D, NULL);
             }
 
@@ -94,15 +98,15 @@ triples 	::= subject(S) predObjList(L) EOS . {
 
 %type predObjList       { LSUP_PredObjList * }
 %destructor predObjList { LSUP_pred_obj_list_free ($$); }
-predObjList(A) ::= predicate(P) WS objectList(O) SEMICOLON . {
+predObjList(A) ::= predicate(P) objectList(O) SEMICOLON . {
                 A = LSUP_pred_obj_list_new();
                 LSUP_pred_obj_list_add (A, P, O);
             }
-predObjList(A) ::= predicate(P) WS objectList(O) . [SEMICOLON] {
+predObjList(A) ::= predicate(P) objectList(O) . [SEMICOLON] {
                 A = LSUP_pred_obj_list_new();
                 LSUP_pred_obj_list_add (A, P, O);
             }
-predObjList(A) ::= predObjList(L) SEMICOLON predicate(P) WS objectList(O) . {
+predObjList(A) ::= predObjList(L) SEMICOLON predicate(P) objectList(O) . {
                 LSUP_pred_obj_list_add (L, P, O);
                 A = L;
             }
@@ -189,7 +193,7 @@ collection(A) ::= LPAREN itemList(L) RPAREN . {
 %type itemList { LSUP_Term ** }
 // Freed when the item list in the collection gets added to the graph.
 %destructor itemList {}
-itemList(A) ::= itemList(L) WS object(O) . { A = LSUP_obj_list_add (L, O); }
+itemList(A) ::= itemList(L) object(O) . { A = LSUP_obj_list_add (L, O); }
 itemList(A) ::= object(O) . {
                 A = calloc (sizeof (*A), 2);
                 A[0] = O;
@@ -218,9 +222,6 @@ qname(A)    ::= COLON IDNAME(D) . {
             }
 qname(A)    ::= COLON . { A = strndup (":", 2); }
 
-ows         ::= WS.
-ows         ::=.
-
 /*
  * This has been adapted from
  * https://www.w3.org/TeamSubmission/turtle/#sec-grammar-grammar :

+ 10 - 10
src/codec/lexer_ttl.re

@@ -247,21 +247,21 @@ cont: // Continue token parsing. Do not move token start pointer.
         return T_DECIMAL;
     }
 
-    '(' WS? { return T_LPAREN; }
+    '(' { return T_LPAREN; }
 
-    WS? ')' { return T_RPAREN; }
+    ')' { return T_RPAREN; }
 
-    '[' WS? { return T_LBRACKET; }
+    '[' { return T_LBRACKET; }
 
-    WS? ']' { return T_RBRACKET; }
+    ']' { return T_RBRACKET; }
 
     ':' { return T_COLON; }
 
-    WS? ';' WS?     { return T_SEMICOLON; }
+    ';' { return T_SEMICOLON; }
 
-    WS? ',' WS?     { return T_COMMA; }
+    ',' { return T_COMMA; }
 
-    WS? '.' WS?     {
+    '.' {
         log_trace ("End of statement #%u.", it->stmt);
         it->stmt++;
         return T_EOS;
@@ -422,8 +422,8 @@ LSUP_ttl_parse_doc (FILE *fh, LSUP_Graph **gr_p, size_t *ct, char **err_p)
         int ttype = lex (&parse_it, &token);
 
         if (ttype == -1) {
-            char token[16] = {'\0'};
-            strncpy (token, (const char *)parse_it.tok, 15);
+            char err_token[16] = {'\0'};
+            strncpy (err_token, (const char *)parse_it.tok, 15);
 
             char *err_start = "Lexer error near token `";
 
@@ -434,7 +434,7 @@ LSUP_ttl_parse_doc (FILE *fh, LSUP_Graph **gr_p, size_t *ct, char **err_p)
 
             size_t err_size = strlen (err_start) + 16 + strlen(err_info);
             char *err_str = malloc (err_size);
-            sprintf (err_str, "%s%s%s", err_start, token, err_info);
+            sprintf (err_str, "%s%s%s", err_start, err_token, err_info);
 
             rc = LSUP_PARSE_ERR;
             *err_p = err_str;