diff options
Diffstat (limited to 'src/dhcpd-gram.y')
-rw-r--r-- | src/dhcpd-gram.y | 160 |
1 files changed, 80 insertions, 80 deletions
diff --git a/src/dhcpd-gram.y b/src/dhcpd-gram.y index 11dd1b2..ec285c4 100644 --- a/src/dhcpd-gram.y +++ b/src/dhcpd-gram.y @@ -1,5 +1,5 @@ %{ -/* grecs - Gray's Extensible Configuration System +/* argot - Gray's Extensible Configuration System Copyright (C) 2007-2016 Sergey Poznyakoff Grecs is free software; you can redistribute it and/or modify it @@ -18,7 +18,7 @@ #ifdef HAVE_CONFIG_H # include <config.h> #endif -#include <grecs.h> +#include <argot.h> #include <dhcpd-gram.h> #include <stdlib.h> #include <stdarg.h> @@ -28,21 +28,21 @@ int yylex(void); int yyerror(char const *s); -static struct grecs_node *parse_tree; +static struct argot_node *parse_tree; extern int yy_flex_debug; -extern int grecs_dhcpd_new_source(const char *name, grecs_locus_t *loc); -extern void grecs_dhcpd_close_sources(void); +extern int argot_dhcpd_new_source(const char *name, argot_locus_t *loc); +extern void argot_dhcpd_close_sources(void); -extern void grecs_dhcpd_begin_bool(void); -extern void grecs_dhcpd_begin_expr(void); +extern void argot_dhcpd_begin_bool(void); +extern void argot_dhcpd_begin_expr(void); /* NOTE: STRING must be allocated */ -static grecs_value_t * +static argot_value_t * make_string_value(char *string) { - grecs_value_t *val; - val = grecs_malloc(sizeof(val[0])); - val->type = GRECS_TYPE_STRING; + argot_value_t *val; + val = argot_malloc(sizeof(val[0])); + val->type = ARGOT_TYPE_STRING; val->v.string = string; return val; } @@ -54,11 +54,11 @@ make_string_value(char *string) %union { char *string; - grecs_value_t svalue, *pvalue; - struct grecs_list *list; - struct grecs_node *node; - grecs_locus_t locus; - struct { struct grecs_node *head, *tail; } node_list; + argot_value_t svalue, *pvalue; + struct argot_list *list; + struct argot_node *node; + argot_locus_t locus; + struct { struct argot_node *head, *tail; } node_list; } %token <string> DHCPD_IF DHCPD_ELSIF DHCPD_EXPR @@ -76,9 +76,9 @@ make_string_value(char *string) input : maybe_stmtlist { - parse_tree = grecs_node_create(grecs_node_root, &@1); - parse_tree->v.texttab = grecs_text_table(); - grecs_node_bind(parse_tree, $1, 1); + parse_tree = argot_node_create(argot_node_root, &@1); + parse_tree->v.texttab = argot_text_table(); + argot_node_bind(parse_tree, $1, 1); } ; @@ -103,7 +103,7 @@ stmtlist: stmt if (!$1.head) $1.head = $1.tail = $2; else - grecs_node_bind($1.tail, $2, 0); + argot_node_bind($1.tail, $2, 0); } $$ = $1; } @@ -117,20 +117,20 @@ stmt : simple simple : DHCPD_IDENT vallist ';' { if (strcmp($1, "include") == 0 && - $2->type == GRECS_TYPE_STRING) { - grecs_dhcpd_new_source($2->v.string, &@1); + $2->type == ARGOT_TYPE_STRING) { + argot_dhcpd_new_source($2->v.string, &@1); $$ = NULL; } else { - $$ = grecs_node_create_points(grecs_node_stmt, + $$ = argot_node_create_points(argot_node_stmt, @1.beg, @2.end); $$->ident = $1; $$->idloc = @1; $$->v.value = $2; } } - | DHCPD_IDENT '=' { grecs_dhcpd_begin_expr(); } DHCPD_EXPR ';' + | DHCPD_IDENT '=' { argot_dhcpd_begin_expr(); } DHCPD_EXPR ';' { - $$ = grecs_node_create_points(grecs_node_stmt, + $$ = argot_node_create_points(argot_node_stmt, @1.beg, @5.end); $$->ident = $1; $$->idloc = @1; @@ -138,7 +138,7 @@ simple : DHCPD_IDENT vallist ';' } | string ';' { - $$ = grecs_node_create(grecs_node_stmt, &@1); + $$ = argot_node_create(argot_node_stmt, &@1); $$->ident = $1; $$->idloc = @1; $$->v.value = NULL; @@ -147,12 +147,12 @@ simple : DHCPD_IDENT vallist ';' block : DHCPD_IDENT tag '{' maybe_stmtlist '}' opt_semi { - $$ = grecs_node_create_points(grecs_node_block, + $$ = argot_node_create_points(argot_node_block, @1.beg, @5.end); $$->ident = $1; $$->idloc = @1; $$->v.value = $2; - grecs_node_bind($$, $4, 1); + argot_node_bind($$, $4, 1); } ; @@ -171,46 +171,46 @@ vallist : vlist { size_t n; - if ((n = grecs_list_size($1)) == 1) { - $$ = grecs_list_index($1, 0); + if ((n = argot_list_size($1)) == 1) { + $$ = argot_list_index($1, 0); } else { size_t i; - struct grecs_list_entry *ep; + struct argot_list_entry *ep; - $$ = grecs_malloc(sizeof($$[0])); - $$->type = GRECS_TYPE_ARRAY; + $$ = argot_malloc(sizeof($$[0])); + $$->type = ARGOT_TYPE_ARRAY; $$->locus = @1; $$->v.arg.c = n; - $$->v.arg.v = grecs_calloc(n, + $$->v.arg.v = argot_calloc(n, sizeof($$->v.arg.v[0])); for (i = 0, ep = $1->head; ep; i++, ep = ep->next) $$->v.arg.v[i] = ep->data; } $1->free_entry = NULL; - grecs_list_free($1); + argot_list_free($1); } ; vlist : value { - $$ = grecs_value_list_create(); - grecs_list_append($$, grecs_value_ptr_from_static(&$1)); + $$ = argot_value_list_create(); + argot_list_append($$, argot_value_ptr_from_static(&$1)); } | vlist value { - grecs_list_append($1, grecs_value_ptr_from_static(&$2)); + argot_list_append($1, argot_value_ptr_from_static(&$2)); } ; value : string { - $$.type = GRECS_TYPE_STRING; + $$.type = ARGOT_TYPE_STRING; $$.locus = @1; $$.v.string = $1; } | strlist { - $$.type = GRECS_TYPE_LIST; + $$.type = ARGOT_TYPE_LIST; $$.locus = @1; $$.v.list = $1; } @@ -222,61 +222,61 @@ string : DHCPD_STRING strlist : DHCPD_STRING ',' DHCPD_STRING { - grecs_value_t val; + argot_value_t val; - $$ = grecs_value_list_create(); + $$ = argot_value_list_create(); - val.type = GRECS_TYPE_STRING; + val.type = ARGOT_TYPE_STRING; val.locus = @1; val.v.string = $1; - grecs_list_append($$, grecs_value_ptr_from_static(&val)); + argot_list_append($$, argot_value_ptr_from_static(&val)); - val.type = GRECS_TYPE_STRING; + val.type = ARGOT_TYPE_STRING; val.locus = @3; val.v.string = $3; - grecs_list_append($$, grecs_value_ptr_from_static(&val)); + argot_list_append($$, argot_value_ptr_from_static(&val)); } | strlist ',' DHCPD_STRING { - grecs_value_t val; + argot_value_t val; - val.type = GRECS_TYPE_STRING; + val.type = ARGOT_TYPE_STRING; val.locus = @3; val.v.string = $3; - grecs_list_append($1, grecs_value_ptr_from_static(&val)); + argot_list_append($1, argot_value_ptr_from_static(&val)); } ; cond : if DHCPD_EXPR '{' maybe_stmtlist '}' opt_elsifchain opt_elsecond { - $$ = grecs_node_create_points(grecs_node_block, + $$ = argot_node_create_points(argot_node_block, @1.beg, @7.end); - grecs_line_begin(); - grecs_line_add("if", 2); + argot_line_begin(); + argot_line_add("if", 2); - $$->ident = grecs_line_finish(); + $$->ident = argot_line_finish(); $$->idloc = @1; $$->v.value = make_string_value ($2); - grecs_node_bind($$, $4, 1); + argot_node_bind($$, $4, 1); if ($6.head) { - grecs_node_bind($6.tail, $7, 0); - grecs_node_bind($$, $6.head, 0); + argot_node_bind($6.tail, $7, 0); + argot_node_bind($$, $6.head, 0); } } ; if : DHCPD_IF { - grecs_dhcpd_begin_bool(); + argot_dhcpd_begin_bool(); } ; elsif : DHCPD_ELSIF { - grecs_dhcpd_begin_bool(); + argot_dhcpd_begin_bool(); } ; @@ -297,7 +297,7 @@ elsifchain: elsifcond if (!$1.head) $1.head = $1.tail = $2; else - grecs_node_bind($1.tail, $2, 0); + argot_node_bind($1.tail, $2, 0); } $$ = $1; } @@ -305,16 +305,16 @@ elsifchain: elsifcond elsifcond: elsif DHCPD_EXPR '{' maybe_stmtlist '}' { - $$ = grecs_node_create_points(grecs_node_block, + $$ = argot_node_create_points(argot_node_block, @1.beg, @5.end); - grecs_line_begin(); - grecs_line_add("elsif", 5); + argot_line_begin(); + argot_line_add("elsif", 5); - $$->ident = grecs_line_finish(); + $$->ident = argot_line_finish(); $$->idloc = @1; $$->v.value = make_string_value ($2); - grecs_node_bind($$, $4, 1); + argot_node_bind($$, $4, 1); } ; @@ -327,16 +327,16 @@ opt_elsecond: /* empty */ elsecond: DHCPD_ELSE '{' maybe_stmtlist '}' { - $$ = grecs_node_create_points(grecs_node_block, + $$ = argot_node_create_points(argot_node_block, @1.beg, @4.end); - grecs_line_begin(); - grecs_line_add("else", 4); + argot_line_begin(); + argot_line_add("else", 4); - $$->ident = grecs_line_finish(); + $$->ident = argot_line_finish(); $$->idloc = @1; $$->v.value = NULL; - grecs_node_bind($$, $3, 1); + argot_node_bind($$, $3, 1); } ; @@ -345,28 +345,28 @@ elsecond: DHCPD_ELSE '{' maybe_stmtlist '}' int yyerror(char const *s) { - grecs_error(&yylloc, 0, "%s", s); + argot_error(&yylloc, 0, "%s", s); return 0; } -struct grecs_node * -grecs_dhcpd_parser(const char *name, int traceflags) +struct argot_node * +argot_dhcpd_parser(const char *name, int traceflags) { int rc; - if (grecs_dhcpd_new_source(name, NULL)) + if (argot_dhcpd_new_source(name, NULL)) return NULL; - yy_flex_debug = traceflags & GRECS_TRACE_LEX; - yydebug = traceflags & GRECS_TRACE_GRAM; + yy_flex_debug = traceflags & ARGOT_TRACE_LEX; + yydebug = traceflags & ARGOT_TRACE_GRAM; parse_tree = NULL; - grecs_line_acc_create(); + argot_line_acc_create(); rc = yyparse(); - grecs_dhcpd_close_sources(); - if (grecs_error_count) + argot_dhcpd_close_sources(); + if (argot_error_count) rc = 1; - grecs_line_acc_free(); + argot_line_acc_free(); if (rc) { - grecs_tree_free(parse_tree); + argot_tree_free(parse_tree); parse_tree = NULL; } return parse_tree; |