inf-parse.y revision 123475
1%{
2/*
3 * $Id: inf-parse.y,v 1.3 2003/11/30 21:58:16 winter Exp $
4 */
5
6#include <sys/cdefs.h>
7__FBSDID("$FreeBSD: head/usr.sbin/ndiscvt/inf-parse.y 123475 2003-12-11 22:38:14Z wpaul $");
8
9#include <stdio.h>
10#include <sys/types.h>
11#include <sys/queue.h>
12
13#include "inf.h"
14
15extern int yyparse (void);
16extern int yylex (void);
17extern void yyerror(const char *);
18%}
19
20%token	EQUALS COMMA EOL
21%token	<str> SECTION
22%token	<str> STRING
23%token	<str> WORD
24
25%union {
26	char *str;
27}
28
29%%
30
31inf_file
32	: inf_list
33	|
34	;
35
36inf_list
37	: inf
38	| inf_list inf
39	;
40
41inf
42	: SECTION EOL
43		{ section_add($1); }
44	| WORD EQUALS assign EOL
45		{ assign_add($1); }
46	| WORD COMMA regkey EOL
47		{ regkey_add($1); }
48	| WORD EOL
49		{ define_add($1); }
50	| EOL
51	;
52
53assign
54	: WORD
55		{ push_word($1); }
56	| STRING
57		{ push_word($1); }
58	| WORD COMMA assign
59		{ push_word($1); }
60	| STRING COMMA assign
61		{ push_word($1); }
62	| COMMA assign
63		{ push_word(NULL); }
64	| COMMA
65		{ push_word(NULL); }
66	|
67	;
68
69regkey
70	: WORD
71		{ push_word($1); }
72	| STRING
73		{ push_word($1); }
74	| WORD COMMA regkey
75		{ push_word($1); }
76	| STRING COMMA regkey
77		{ push_word($1); }
78	| COMMA regkey
79		{ push_word(NULL); }
80	| COMMA
81		{ push_word(NULL); }
82	;
83%%
84