2 #include "lib_global.h"
13 struct chain *chainlist;
14 struct { char *ident; struct chain *param;} head_struct;
18 %token <stringtype> _NUMBER
19 %token <stringtype> _STRING
20 %token <stringtype> _IDENT
28 %token <stringtype> _OPE
32 %type <stringtype> primary operateur make_expression
33 %type <stringtype> expression attr_val
34 %type <chainlist> param_list
35 %type <head_struct> head
43 test : {yydebug=0;} group ;
47 lib_treat_group_head($1.ident, $1.param);
52 lib_treat_group_end();
57 lib_treat_group_head($1.ident, $1.param);
62 lib_treat_group_end();
67 statements : statement
68 | statements statement
72 statement : simple_attr
77 simple_attr : _IDENT _COLON attr_val _SEMI
79 lib_treat_s_attr($1, $3);
83 | _IDENT _COLON attr_val
85 lib_treat_s_attr($1, $3);
89 complex_attr : head _SEMI
91 lib_treat_c_attr($1.ident, $1.param);
95 lib_treat_c_attr($1.ident, $1.param);
99 head : _IDENT _LPAR param_list _RPAR
102 $$.param=reverse($3);
113 param_list : attr_val
115 $$ = addchain(NULL,$1);
117 | param_list _COMMA attr_val
119 $$ = addchain($1,$3);
123 attr_val : _STRING { $$ = lib_unquote($1);}
124 | expression { $$ = $1;}
127 expression : make_expression
133 make_expression : operateur primary
138 $$ = mbkstrdup(concat);
141 | make_expression _OPE primary
147 $$ = mbkstrdup(concat);
148 mbkfree($1); mbkfree($2); mbkfree($3);
150 | operateur _LPAR make_expression _RPAR
157 $$ = mbkstrdup(concat);
158 mbkfree($1); mbkfree($3);
160 | make_expression _OPE _LPAR make_expression _RPAR
168 $$ = mbkstrdup(concat);
169 mbkfree($1); mbkfree($2); mbkfree($4);
173 operateur : { $$ = ""; }
177 primary : _IDENT {$$ = $1;}
189 fprintf (stderr, "LIBERTY ERROR: parse error line %d\n", LIB_LINE) ;