|
@@ -77,17 +77,11 @@ static void parse_init (ParseIterator *it, FILE *fh)
|
|
|
}
|
|
|
|
|
|
|
|
|
-// Parser interface. Required because Lemon doesn't export these in the header
|
|
|
-// automatically.
|
|
|
-/*
|
|
|
-void *TTLParseAlloc( void*(*malloc)(size_t));
|
|
|
-void TTLParseFree(void *pParser, void(*free)(void*) );
|
|
|
-void TTLParse(void *pParser, int tokenCode, YYCTYPE *token, ...);
|
|
|
-void TTLParseTrace(FILE *stream, char *zPrefix);
|
|
|
-*/
|
|
|
+// Parser interface. Required here to silence linters.
|
|
|
void *TTLParseAlloc();
|
|
|
void TTLParse();
|
|
|
void TTLParseFree();
|
|
|
+void TTLParseTrace();
|
|
|
|
|
|
// Lexer.
|
|
|
|
|
@@ -170,35 +164,35 @@ loop:
|
|
|
}
|
|
|
|
|
|
IRIREF {
|
|
|
- *token_p = unescape_unicode (it->tok + 1);
|
|
|
+ *token_p = unescape_unicode (it->tok + 1, YYCURSOR - it->tok - 2);
|
|
|
log_debug ("URI data: %s", *token_p);
|
|
|
|
|
|
return T_IRIREF;
|
|
|
}
|
|
|
|
|
|
PFX_NAME {
|
|
|
- *token_p = unescape_unicode (it->tok);
|
|
|
+ *token_p = unescape_unicode (it->tok, YYCURSOR - it->tok - 1);
|
|
|
log_debug ("Prefix name: %s", *token_p);
|
|
|
|
|
|
return T_PFX_NAME;
|
|
|
}
|
|
|
|
|
|
NAME {
|
|
|
- *token_p = unescape_unicode (it->tok);
|
|
|
+ *token_p = unescape_unicode (it->tok, YYCURSOR - it->tok - 1);
|
|
|
log_debug ("name: %s", *token_p);
|
|
|
|
|
|
return T_IDNAME;
|
|
|
}
|
|
|
|
|
|
LSTRING {
|
|
|
- *token_p = unescape_unicode (it->tok + 3);
|
|
|
+ *token_p = unescape_unicode (it->tok + 3, YYCURSOR - it->tok - 4);
|
|
|
log_debug ("Long string: %s", *token_p);
|
|
|
|
|
|
return T_STRING;
|
|
|
}
|
|
|
|
|
|
STRING {
|
|
|
- *token_p = unescape_unicode (it->tok + 1);
|
|
|
+ *token_p = unescape_unicode (it->tok + 1, YYCURSOR - it->tok - 2);
|
|
|
log_debug ("Long string: %s", *token_p);
|
|
|
|
|
|
return T_STRING;
|
|
@@ -323,6 +317,10 @@ LSUP_ttl_parse_doc (FILE *fh, LSUP_Graph **gr_p, size_t *ct, char **err_p)
|
|
|
|
|
|
YYCTYPE *token;
|
|
|
|
|
|
+#ifdef DEBUG
|
|
|
+ TTLParseTrace (stdout, "TTL Parser > ");
|
|
|
+#endif
|
|
|
+
|
|
|
for (;;) {
|
|
|
int ttype = lex (&parse_it, &token);
|
|
|
|