From: Sam Leffler Date: Thu, 21 Oct 1982 13:26:51 +0000 (-0800) Subject: date and time created 82/10/20 21:26:51 by sam X-Git-Tag: BSD-4_1c_2-Snapshot-Development~2144 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/10f888197fa18763f6c227c17ab919042c2181af date and time created 82/10/20 21:26:51 by sam SCCS-vsn: old/htable/parse.y 4.1 --- diff --git a/usr/src/old/htable/parse.y b/usr/src/old/htable/parse.y new file mode 100644 index 0000000000..5766c14d64 --- /dev/null +++ b/usr/src/old/htable/parse.y @@ -0,0 +1,127 @@ +%{ +#ifndef lint +static char sccsid[] = "@(#)parse.y 4.1 (Berkeley) %G%"; +#endif + +#include "htable.h" +%} + +%union { + int number; + struct addr *addrlist; + struct name *namelist; +} +%start Table + +%token END +%token NUMBER KEYWORD +%token NAME + +%type Names Cputype Opsys Protos Proto +%type Addresses Address +%% +Table : Entry + | Table Entry + ; + +Entry : KEYWORD ':' Addresses ':' Names ':' END + = { + do_entry($1, $3, $5, NONAME, NONAME, NONAME); + } + | KEYWORD ':' Addresses ':' Names ':' Cputype ':' END + = { + do_entry($1, $3, $5, $7, NONAME, NONAME); + } + | KEYWORD ':' Addresses ':' Names ':' Cputype ':' Opsys ':' END + = { + do_entry($1, $3, $5, $7, $9, NONAME); + } + | KEYWORD ':' Addresses ':' Names ':' Cputype ':' Opsys ':' ':' END + = { + do_entry($1, $3, $5, $7, $9, NONAME); + } + | KEYWORD ':' Addresses ':' Names ':' Cputype ':' Opsys ':' Protos ':' END + = { + do_entry($1, $3, $5, $7, $9, $11); + } + | error END + | END /* blank line */ + ; + +Addresses: Address + = { + $$ = $1; + } + | Address ',' Addresses + = { + $1->addr_link = $3; + $$ = $1; + } + ; + +Address : NUMBER '.' NUMBER '.' NUMBER '.' NUMBER + = { + $$ = alloc_addr(); + $$->addr_val = ($1) | ($3 << 8) | ($5 << 16) | ($7 << 24); + $$->addr_link = NOADDR; + } + ; + +Names : NAME + = { + $$ = $1; + } + | NAME ',' Names + = { + $1->name_link = $3; + $$ = $1; + } + ; + +Cputype : /* empty */ + = { + $$ = NONAME; + } + | NAME + = { + $$ = $1; + } + ; + +Opsys : /* empty */ + = { + $$ = NONAME; + } + | NAME + = { + $$ = $1; + } + ; + +Protos : Proto + = { + $$ = $1; + } + | Proto ',' Protos + = { + $1->name_link = $3; + $$ = $1; + } + ; + +Proto : NAME + = { + $$ = $1; + } + ; +%% + +#include + +extern int yylineno; + +yyerror(msg) + char *msg; +{ + fprintf(stderr, "\"%s\", line %d: %s\n", infile, yylineno, msg); +}