gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
gedcom_lval.tag.value = TAG_##THETAG; \
BEGIN(NORMAL); \
+ line_no++; \
return TAG_##THETAG; \
}
CHECK_LINE_LEN; \
if ((level < 0) || (level > MAXGEDCLEVEL)) { \
error_level_out_of_range(); \
+ line_no++; \
return BADTOKEN; \
} \
level_diff = level - current_level; \
else { \
/* should never happen (error to GEDCOM spec) */ \
error_level_too_high(level_diff); \
+ line_no++; \
return BADTOKEN; \
} \
}
#define ACTION_ALPHANUM \
{ if (strlen(yytext) > MAXGEDCTAGLEN * encoding_width) { \
error_tag_too_long(yytext); \
+ line_no++; \
return BADTOKEN; \
} \
CHECK_LINE_LEN; \
gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
gedcom_lval.tag.value = USERTAG; \
BEGIN(NORMAL); \
+ line_no++; \
return USERTAG; \
}
#define ACTION_TERMINATOR \
{ CHECK_LINE_LEN; \
INIT_LINE_LEN; \
- line_no++; \
BEGIN(INITIAL); \
}