aboutsummaryrefslogtreecommitdiff
path: root/src/dhcpd-gram.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/dhcpd-gram.y')
-rw-r--r--src/dhcpd-gram.y160
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;

Return to:

Send suggestions and report system problems to the System administrator.