Completed writing of strings and xrefs.
[gedcom-parse.git] / gedcom / gedcom_date.lex
index 5767768fdf0b76e7e97a9ac5b2bddb7bff833992..50daf3f876f013c12ea9175fbfb4591aec1d8934 100644 (file)
@@ -23,7 +23,7 @@
 
 %{
 #include "date.h"
-#include "gedcom_date.tab.h"
+#include "gedcom_date.tabgen.h"
   
 #define YY_NO_UNPUT
 
@@ -48,6 +48,16 @@ static int token_nr = 0;
     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 */
@@ -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)
+@#.+@           UNKNOWN_CALENDAR_TYPE
      
 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)
 
+.               ACTION_UNEXPECTED
+
 %%
 
 int yywrap()
@@ -127,7 +140,7 @@ int yywrap()
 
 static YY_BUFFER_STATE hndl;
 
-void init_gedcom_date_lex(char* string)
+void init_gedcom_date_lex(const char* string)
 {
   token_nr = 0;
   hndl = yy_scan_string(string);