#include <string.h>
#include "oconfig.h"
-static oconfig_item_t *ci_root;
-static oconfig_item_t *ci_current;
-
-static oconfig_item_t *statement_list;
-static int statement_list_num;
-
-static oconfig_value_t *argument_list;
-static int argument_list_num;
-
struct statement_list_s
{
oconfig_item_t *statement;
int boolean;
char *string;
oconfig_value_t cv;
- oconfig_value_t *cvp;
oconfig_item_t ci;
argument_list_t al;
statement_list_t sl;
%type <string> string
%type <string> identifier
-%type <string> block_end
+/* arguments */
%type <cv> argument
%type <al> argument_list
+/* blocks */
%type <ci> block_begin
%type <ci> block
+%type <string> block_end
+/* statements */
%type <ci> option
%type <ci> statement
%type <sl> statement_list
{
$$ = $1;
$$.argument_num++;
- $$.argument = realloc ($$.argument, $$.argument_num * sizeof (argument_list_t));
+ $$.argument = realloc ($$.argument, $$.argument_num * sizeof (oconfig_value_t));
$$.argument[$$.argument_num-1] = $2;
}
| argument
{
- $$.argument = malloc (sizeof (argument_list_t));
+ $$.argument = malloc (sizeof (oconfig_value_t));
$$.argument[0] = $1;
$$.argument_num = 1;
}
$$.key = $1;
$$.values = $2.argument;
$$.values_num = $2.argument_num;
- printf ("Option `%s' has %i arguments\n", $$.key, $$.values_num);
}
;
$$.key = $2;
$$.values = $3.argument;
$$.values_num = $3.argument_num;
- printf ("Begin block `%s'\n", $2);
}
;
block_end:
- OPENBRAC SLASH identifier CLOSEBRAC EOL {$$ = $3; printf ("End block `%s'\n", $3);}
+ OPENBRAC SLASH identifier CLOSEBRAC EOL
+ {
+ $$ = $3;
+ }
;
block:
yyerror ("Block %s not closed..\n", $1);
$$ = $1;
$$.children = $2.statement;
+ $$.children_num = $2.statement_num;
}
;
{
$$ = $1;
$$.statement_num++;
- $$.statement = realloc ($$.statement, $$.statement_num * sizeof (statement_list_t));
+ $$.statement = realloc ($$.statement, $$.statement_num * sizeof (oconfig_item_t));
$$.statement[$$.statement_num-1] = $2;
- printf ("statement_list: length = %i\n", $$.statement_num);
}
| statement
{
- $$.statement = malloc (sizeof (statement_list_t));
+ $$.statement = malloc (sizeof (oconfig_item_t));
$$.statement[0] = $1;
$$.statement_num = 1;
}
int i;
if (shift > 0)
- printf ("%*s", "", shift);
+ printf ("%*s", shift, "");
printf ("%s", ci->key);
for (i = 0; i < ci->values_num; i++)