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