diff options
Diffstat (limited to 'src/bind-gram.y')
-rw-r--r-- | src/bind-gram.y | 152 |
1 files changed, 76 insertions, 76 deletions
diff --git a/src/bind-gram.y b/src/bind-gram.y index 18deb0d..becb8d6 100644 --- a/src/bind-gram.y +++ b/src/bind-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 <bind-gram.h> #include <stdlib.h> #include <stdarg.h> @@ -28,12 +28,12 @@ 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_bind_new_source(const char *name, grecs_locus_t *loc); -extern void grecs_bind_close_sources(void); +extern int argot_bind_new_source(const char *name, argot_locus_t *loc); +extern void argot_bind_close_sources(void); -static struct grecs_value *stmtlist_to_value(struct grecs_node *node); +static struct argot_value *stmtlist_to_value(struct argot_node *node); %} %error-verbose @@ -41,11 +41,11 @@ static struct grecs_value *stmtlist_to_value(struct grecs_node *node); %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> BIND_STRING BIND_IDENT BIND_CONTROLS @@ -60,9 +60,9 @@ static struct grecs_value *stmtlist_to_value(struct grecs_node *node); 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); } ; @@ -87,7 +87,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; } @@ -100,11 +100,11 @@ stmt : simple simple : BIND_IDENT vallist ';' { if (strcmp($1, "include") == 0 && - $2->type == GRECS_TYPE_STRING) { - grecs_bind_new_source($2->v.string, &@1); + $2->type == ARGOT_TYPE_STRING) { + argot_bind_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; @@ -113,19 +113,19 @@ simple : BIND_IDENT vallist ';' } | string ';' { - $$ = grecs_node_create(grecs_node_stmt, &@1); + $$ = argot_node_create(argot_node_stmt, &@1); $$->ident = $1; $$->idloc = @1; $$->v.value = NULL; } | '!' string ';' { - $$ = grecs_node_create_points(grecs_node_stmt, + $$ = argot_node_create_points(argot_node_stmt, @1.beg, @2.end); - $$->ident = grecs_strdup("!"); + $$->ident = argot_strdup("!"); $$->idloc = @1; - $$->v.value = grecs_malloc(sizeof($$->v.value[0])); - $$->v.value->type = GRECS_TYPE_STRING; + $$->v.value = argot_malloc(sizeof($$->v.value[0])); + $$->v.value->type = ARGOT_TYPE_STRING; $$->v.value->locus = @2; $$->v.value->v.string = $2; } @@ -133,12 +133,12 @@ simple : BIND_IDENT vallist ';' block : BIND_IDENT tag '{' maybe_stmtlist '}' ';' { - $$ = 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); } | BIND_CONTROLS '{' ctlsub '}' ';' /* Special case: @@ -154,11 +154,11 @@ block : BIND_IDENT tag '{' maybe_stmtlist '}' ';' (127.0.0.1, 127.0.0.2), keys, (rndc-key)) */ { - $$ = grecs_node_create_points(grecs_node_stmt, + $$ = argot_node_create_points(argot_node_stmt, @1.beg, @4.end); $$->ident = $1; $$->idloc = @1; - $$->v.value = grecs_value_ptr_from_static(&$3); + $$->v.value = argot_value_ptr_from_static(&$3); } ; @@ -173,40 +173,40 @@ 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; } @@ -218,7 +218,7 @@ string : BIND_STRING ctlsub : ctllist ';' { - $$.type = GRECS_TYPE_LIST; + $$.type = ARGOT_TYPE_LIST; $$.locus = @1; $$.v.list = $1; } @@ -226,16 +226,16 @@ ctlsub : ctllist ';' ctllist : 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)); } | ctllist value { - grecs_list_append($1, grecs_value_ptr_from_static(&$2)); + argot_list_append($1, argot_value_ptr_from_static(&$2)); } | ctllist '{' stmtlist '}' { - grecs_list_append($1, stmtlist_to_value($3.head)); + argot_list_append($1, stmtlist_to_value($3.head)); /* FIXME: Free $3 */ } ; @@ -245,79 +245,79 @@ ctllist : value int yyerror(char const *s) { - grecs_error(&yylloc, 0, "%s", s); + argot_error(&yylloc, 0, "%s", s); return 0; } -struct grecs_node * -grecs_bind_parser(const char *name, int traceflags) +struct argot_node * +argot_bind_parser(const char *name, int traceflags) { int rc; - if (grecs_bind_new_source(name, NULL)) + if (argot_bind_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_bind_close_sources(); - if (grecs_error_count) + argot_bind_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; } -static struct grecs_value * -node_to_value(struct grecs_node *node, struct grecs_txtacc *acc) +static struct argot_value * +node_to_value(struct argot_node *node, struct argot_txtacc *acc) { - struct grecs_value *val = grecs_malloc(sizeof(*val)); + struct argot_value *val = argot_malloc(sizeof(*val)); int delim = 0; if (node->ident) { - grecs_txtacc_grow(acc, node->ident, strlen(node->ident)); + argot_txtacc_grow(acc, node->ident, strlen(node->ident)); delim = 1; } if (node->v.value) { if (delim) - grecs_txtacc_grow_char(acc, ' '); - grecs_txtacc_format_value(node->v.value, 0, acc); + argot_txtacc_grow_char(acc, ' '); + argot_txtacc_format_value(node->v.value, 0, acc); delim = 1; } - if (node->type == grecs_node_stmt) { - val->type = GRECS_TYPE_STRING; - grecs_txtacc_grow_char(acc, 0); - val->v.string = grecs_txtacc_finish(acc, 1); + if (node->type == argot_node_stmt) { + val->type = ARGOT_TYPE_STRING; + argot_txtacc_grow_char(acc, 0); + val->v.string = argot_txtacc_finish(acc, 1); } else if (node->down) { - struct grecs_list *list = grecs_value_list_create(); - struct grecs_node *np; + struct argot_list *list = argot_value_list_create(); + struct argot_node *np; if (delim) - grecs_txtacc_grow_char(acc, ' '); + argot_txtacc_grow_char(acc, ' '); for (np = node->down; np; np = np->next) - grecs_list_append(list, node_to_value(np, acc)); - val->type = GRECS_TYPE_LIST; + argot_list_append(list, node_to_value(np, acc)); + val->type = ARGOT_TYPE_LIST; val->v.list = list; } return val; } -static struct grecs_value * -stmtlist_to_value(struct grecs_node *node) +static struct argot_value * +stmtlist_to_value(struct argot_node *node) { - struct grecs_txtacc *acc = grecs_txtacc_create(); - struct grecs_value *val; - struct grecs_node parent; + struct argot_txtacc *acc = argot_txtacc_create(); + struct argot_value *val; + struct argot_node parent; memset(&parent, 0, sizeof(parent)); - parent.type = grecs_node_block; + parent.type = argot_node_block; parent.down = node; val = node_to_value(&parent, acc); - grecs_txtacc_free(acc); + argot_txtacc_free(acc); return val; } |