%%
+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;
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);