X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fgedcom_date.lex;h=2350aca58d531f34603bb3991fa03e6d77befbba;hb=de22c4a7da9703ac654a271fcd0212023192d256;hp=8d6f887872c5c234854c1c14103de1ab6aab6342;hpb=046119c663e7b595e3288419955b1f4e8ed3a5da;p=gedcom-parse.git diff --git a/gedcom/gedcom_date.lex b/gedcom/gedcom_date.lex index 8d6f887..2350aca 100644 --- a/gedcom/gedcom_date.lex +++ b/gedcom/gedcom_date.lex @@ -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);