summaryrefslogtreecommitdiffstats
path: root/usr.bin/colldef/scan.l
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>1996-10-16 03:12:22 +0000
committerache <ache@FreeBSD.org>1996-10-16 03:12:22 +0000
commitf5b4e8c2abd5160b9d821a234962354728748f49 (patch)
tree981a086d32426b26e3940c73565d5662776f9294 /usr.bin/colldef/scan.l
parent0b67136d65d40b2d2dda49a4e9a837e5ff5b59d3 (diff)
downloadFreeBSD-src-f5b4e8c2abd5160b9d821a234962354728748f49.zip
FreeBSD-src-f5b4e8c2abd5160b9d821a234962354728748f49.tar.gz
Simplify and improve parser.
Clarify manpage.
Diffstat (limited to 'usr.bin/colldef/scan.l')
-rw-r--r--usr.bin/colldef/scan.l15
1 files changed, 12 insertions, 3 deletions
diff --git a/usr.bin/colldef/scan.l b/usr.bin/colldef/scan.l
index 6a7d0cf..d8c1116 100644
--- a/usr.bin/colldef/scan.l
+++ b/usr.bin/colldef/scan.l
@@ -41,6 +41,7 @@ int line_no = 1, save_no;
u_char buf[STR_LEN], *ptr;
FILE *map_fp;
extern char map_name[];
+extern u_char charmap_table[UCHAR_MAX + 1][STR_LEN];
YY_BUFFER_STATE main_buf, map_buf;
#ifdef FLEX_DEBUG
YYSTYPE yylval;
@@ -137,13 +138,21 @@ YYSTYPE yylval;
*ptr++ = '"';
}
<name>\> {
+ u_int i;
+
if (ptr == buf)
- errx(EX_UNAVAILABLE, "name expected near line %u",
+ errx(EX_UNAVAILABLE, "non-empty name expected near line %u",
line_no);
*ptr = '\0';
- strcpy(yylval.str, buf);
+ for (i = 0; i <= UCHAR_MAX; i++)
+ if (strcmp(charmap_table[i], buf) == 0)
+ goto findit;
+ errx(EX_UNAVAILABLE, "name <%s> not 'charmap'-defined near line %u",
+ buf, line_no);
+ findit:
+ yylval.ch = i;
BEGIN(INITIAL);
- return NAME;
+ return CHAR;
}
<string>\" {
*ptr = '\0';
OpenPOWER on IntegriCloud