dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
gedcom-parse.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Extracted safe buffer mechanism to buffer.c for reuse.
[gedcom-parse.git]
/
gedcom
/
gedcom_date.lex
diff --git
a/gedcom/gedcom_date.lex
b/gedcom/gedcom_date.lex
index 5767768fdf0b76e7e97a9ac5b2bddb7bff833992..50daf3f876f013c12ea9175fbfb4591aec1d8934 100644
(file)
--- a/
gedcom/gedcom_date.lex
+++ b/
gedcom/gedcom_date.lex
@@
-23,7
+23,7
@@
%{
#include "date.h"
%{
#include "date.h"
-#include "gedcom_date.tab.h"
+#include "gedcom_date.tab
gen
.h"
#define YY_NO_UNPUT
#define YY_NO_UNPUT
@@
-48,6
+48,16
@@
static int token_nr = 0;
gedcom_date_lval.string = buf[token_nr++]; \
return TOKEN; \
}
gedcom_date_lval.string = buf[token_nr++]; \
return TOKEN; \
}
+
+#define ACTION_UNEXPECTED \
+ { gedcom_date_error(_("Unexpected input")); \
+ return BADTOKEN; \
+ }
+
+#define UNKNOWN_CALENDAR_TYPE \
+ { gedcom_date_error(_("Unknown calendar type")); \
+ return BADTOKEN; \
+ }
%}
[ \t]+ /* ignore whitespace between tokens */
%}
[ \t]+ /* ignore whitespace between tokens */
@@
-56,6
+66,7
@@
static int token_nr = 0;
@#DJULIAN@ SIMPLE_RETURN(ESC_DATE_JULN)
@#DHEBREW@ SIMPLE_RETURN(ESC_DATE_HEBR)
"@#DFRENCH R@" SIMPLE_RETURN(ESC_DATE_FREN)
@#DJULIAN@ SIMPLE_RETURN(ESC_DATE_JULN)
@#DHEBREW@ SIMPLE_RETURN(ESC_DATE_HEBR)
"@#DFRENCH R@" SIMPLE_RETURN(ESC_DATE_FREN)
+@#.+@ UNKNOWN_CALENDAR_TYPE
FROM SIMPLE_RETURN(MOD_FROM)
TO SIMPLE_RETURN(MOD_TO)
FROM SIMPLE_RETURN(MOD_FROM)
TO SIMPLE_RETURN(MOD_TO)
@@
-118,6
+129,8
@@
COMP SIMPLE_RETURN(MON_COMP)
"/" SIMPLE_RETURN(SLASH)
[0-9]+ SIMPLE_RETURN(NUMBER)
"/" SIMPLE_RETURN(SLASH)
[0-9]+ SIMPLE_RETURN(NUMBER)
+. ACTION_UNEXPECTED
+
%%
int yywrap()
%%
int yywrap()
@@
-127,7
+140,7
@@
int yywrap()
static YY_BUFFER_STATE hndl;
static YY_BUFFER_STATE hndl;
-void init_gedcom_date_lex(char* string)
+void init_gedcom_date_lex(c
onst c
har* string)
{
token_nr = 0;
hndl = yy_scan_string(string);
{
token_nr = 0;
hndl = yy_scan_string(string);