xref: /original-bsd/old/htable/scan.l (revision e0c0d005)
1 %{
2 
3 /*
4  * Copyright (c) 1983 Regents of the University of California.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms are permitted
8  * provided that the above copyright notice and this paragraph are
9  * duplicated in all such forms and that any documentation,
10  * advertising materials, and other materials related to such
11  * distribution and use acknowledge that the software was developed
12  * by the University of California, Berkeley.  The name of the
13  * University may not be used to endorse or promote products derived
14  * from this software without specific prior written permission.
15  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18  */
19 
20 #ifndef lint
21 static char sccsid[] = "@(#)scan.l	5.7 (Berkeley) 06/25/90";
22 #endif /* not lint */
23 
24 extern int yylineno;
25 int yylineno = 1;
26 
27 #include "y.tab.h"
28 #include "htable.h"
29 %}
30 
31 BLANK	[ \t]
32 DIGIT	[0-9]
33 ALPHA	[A-Za-z]
34 ANUM	[0-9A-Za-z]
35 NAMECHR	[0-9A-Za-z./-]
36 
37 %%
38 "NET"		{
39 			yylval.number = KW_NET;
40 			return (KEYWORD);
41 		}
42 
43 "GATEWAY"	{
44 			yylval.number = KW_GATEWAY;
45 			return (KEYWORD);
46 		}
47 
48 "HOST"		{
49 			yylval.number = KW_HOST;
50 			return (KEYWORD);
51 		}
52 
53 {ALPHA}{NAMECHR}*{ANUM}	{
54 			yylval.namelist = newname(yytext);
55 			return (NAME);
56 		}
57 
58 {ALPHA}		{
59 			yylval.namelist = newname(yytext);
60 			return (NAME);
61 		}
62 
63 {DIGIT}+{ALPHA}{NAMECHR}* {
64 			fprintf(stderr, "Warning: nonstandard name \"%s\"\n",
65 				yytext);
66 			yylval.namelist = newname(yytext);
67 			return (NAME);
68 		}
69 
70 {DIGIT}+	{
71 			yylval.number = atoi(yytext);
72 			return (NUMBER);
73 		}
74 
75 "."		return ('.');
76 ":"		return (':');
77 ","		return (',');
78 "/"		return ('/');
79 ";".*		;
80 "\n"{BLANK}+	++yylineno;
81 {BLANK}+	;
82 "\n"		++yylineno; return (END);
83 .		fprintf(stderr, "Illegal char: '%s'\n", yytext);
84 
85 %%
86