Copied from old documentation. Removed all Gedcom_val details.
[gedcom-parse.git] / gedcom / gedcom_date.lex
index 8d6f887872c5c234854c1c14103de1ab6aab6342..2350aca58d531f34603bb3991fa03e6d77befbba 100644 (file)
@@ -133,6 +133,58 @@ COMP            SIMPLE_RETURN(MON_COMP)
 
 %%
 
+int get_date_token(const char* str)
+{
+  int token;
+  YY_BUFFER_STATE buffer;
+
+  token_nr = 0;
+  yy_delete_buffer(YY_CURRENT_BUFFER);
+  buffer = yy_scan_string(str);
+  token = yylex();
+  yy_delete_buffer(buffer);
+  return token;
+}
+
+int get_year_tokens(const char* str, char** year1, char** year2)
+{
+  int token;
+  int num_tokens = 0;
+  YY_BUFFER_STATE buffer;
+
+  token_nr = 0;
+  yy_delete_buffer(YY_CURRENT_BUFFER);
+  buffer = yy_scan_string(str);
+
+  token = yylex();
+  switch (token) {
+    case NUMBER: {
+      *year1 = buf[token_nr - 1];
+      token  = yylex();
+      switch (token) {
+       case SLASH: {
+         token = yylex();
+         switch (token) {
+           case NUMBER:
+             *year2 = buf[token_nr - 1];
+             num_tokens = 2; break;
+           default:
+             num_tokens = 0;
+         }
+         break;
+       }
+       case 0:   num_tokens = 1; break;
+       default:  num_tokens = 0;
+      }
+      break;
+    }
+    case 0:   num_tokens = 0; break;
+    default:  num_tokens = 0;
+  }
+  yy_delete_buffer(buffer);
+  return num_tokens;
+}
+
 int yywrap()
 {
   return 1;
@@ -140,7 +192,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);