X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fliboconfig%2Fparser.y;h=19f58b2b75c4f19b9b196f5d15b85f8f78dd21ac;hb=96e0f2341bace029acefe0a88bab96ae326c0ff5;hp=49cd139dbd76bd1e4505b3184194d6066a1be11b;hpb=bec5a6dda77c05eae27e5aeecdf601e573090cc5;p=collectd.git diff --git a/src/liboconfig/parser.y b/src/liboconfig/parser.y index 49cd139d..19f58b2b 100644 --- a/src/liboconfig/parser.y +++ b/src/liboconfig/parser.y @@ -46,7 +46,7 @@ extern char *c_file; } %token NUMBER -%token TRUE FALSE +%token BTRUE BFALSE %token QUOTED_STRING UNQUOTED_STRING %token SLASH OPENBRAC CLOSEBRAC EOL @@ -76,8 +76,8 @@ string: argument: NUMBER {$$.value.number = $1; $$.type = OCONFIG_TYPE_NUMBER;} - | TRUE {$$.value.boolean = 1; $$.type = OCONFIG_TYPE_BOOLEAN;} - | FALSE {$$.value.boolean = 0; $$.type = OCONFIG_TYPE_BOOLEAN;} + | BTRUE {$$.value.boolean = 1; $$.type = OCONFIG_TYPE_BOOLEAN;} + | BFALSE {$$.value.boolean = 0; $$.type = OCONFIG_TYPE_BOOLEAN;} | string {$$.value.string = $1; $$.type = OCONFIG_TYPE_STRING;} ; @@ -148,6 +148,19 @@ block: $$.children = $2.statement; $$.children_num = $2.statement_num; } + | block_begin block_end + { + if (strcmp ($1.key, $2) != 0) + { + printf ("block_begin = %s; block_end = %s;\n", $1.key, $2); + yyerror ("Block not closed..\n"); + exit (1); + } + free ($2); $2 = NULL; + $$ = $1; + $$.children = NULL; + $$.children_num = 0; + } ; statement: @@ -191,6 +204,13 @@ entire_file: ci_root->children = $1.statement; ci_root->children_num = $1.statement_num; } + | /* epsilon */ + { + ci_root = malloc (sizeof (oconfig_item_t)); + memset (ci_root, '\0', sizeof (oconfig_item_t)); + ci_root->children = NULL; + ci_root->children_num = 0; + } ; %%