/* Common lexer code.
- Copyright (C) 2001 The Genes Development Team
+ Copyright (C) 2001, 2002 The Genes Development Team
This file is part of the Gedcom parser library.
Contributed by Peter Verthez <Peter.Verthez@advalvas.be>, 2001.
case DELIM: printf("DELIM "); break;
case ANYCHAR: printf("%s ", gedcom_lval.string); break;
case POINTER: printf("POINTER(%s) ", gedcom_lval.string); break;
- case USERTAG: printf("USERTAG(%s) ", gedcom_lval.string); break;
- default: printf("TAG(%s) ", gedcom_lval.string); break;
+ case USERTAG: printf("USERTAG(%s) ", gedcom_lval.tag.string); break;
+ default: printf("TAG(%s) ", gedcom_lval.tag.string); break;
}
tok = gedcom_lex();
}
{ if (line_len != (size_t)-1) { \
line_len += strlen(yytext); \
if (line_len > MAXGEDCLINELEN * encoding_width) { \
- gedcom_error(_("Line too long, max %d characters"), \
+ gedcom_error(_("Line too long, max %d characters allowed"), \
MAXGEDCLINELEN); \
line_len = (size_t)-1; \
return BADTOKEN; \
#define MKTAGACTION(THETAG) \
{ CHECK_LINE_LEN; \
- gedcom_lval.string = TO_INTERNAL(yytext, tag_buf); \
+ gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
+ gedcom_lval.tag.value = TAG_##THETAG; \
BEGIN(NORMAL); \
return TAG_##THETAG; \
}
#define ACTION_0_DIGITS \
- { gedcom_error (_("Level number with leading zero")); \
+ { gedcom_error (_("Level number with leading zero not allowed")); \
return BADTOKEN; \
}
#define ACTION_ALPHANUM \
{ if (strlen(yytext) > MAXGEDCTAGLEN * encoding_width) { \
- gedcom_error(_("Tag '%s' too long, max %d characters"), \
+ gedcom_error(_("Tag '%s' too long, max %d characters allowed"), \
yytext, MAXGEDCTAGLEN); \
return BADTOKEN; \
} \
CHECK_LINE_LEN; \
- gedcom_lval.string = TO_INTERNAL(yytext, tag_buf); \
+ gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
+ gedcom_lval.tag.value = USERTAG; \
BEGIN(NORMAL); \
return USERTAG; \
}
#define ACTION_POINTER \
{ CHECK_LINE_LEN; \
if (strlen(yytext) > MAXGEDCPTRLEN * encoding_width) { \
- gedcom_error(_("Pointer '%s' too long, max %d characters"), \
+ gedcom_error(_("Pointer '%s' too long, max %d characters allowed"), \
yytext, MAXGEDCPTRLEN); \
return BADTOKEN; \
} \