zconf.l (bf7ab1e70fd7621fea5dea07b6975c576119b86e) | zconf.l (e91610da7c8a9fe42f3e5a75f06c3d1a0cb5f815) |
---|---|
1%option nostdinit noyywrap never-interactive full ecs | 1%option nostdinit noyywrap never-interactive full ecs |
2%option 8bit nodefault perf-report perf-report | 2%option 8bit nodefault yylineno |
3%option noinput 4%x COMMAND HELP STRING PARAM 5%{ 6/* 7 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 8 * Released under the terms of the GNU GPL v2.0. 9 */ 10 --- 36 unchanged lines hidden (view full) --- 47} 48 49static void append_string(const char *str, int size) 50{ 51 int new_size = text_size + size + 1; 52 if (new_size > text_asize) { 53 new_size += START_STRSIZE - 1; 54 new_size &= -START_STRSIZE; | 3%option noinput 4%x COMMAND HELP STRING PARAM 5%{ 6/* 7 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 8 * Released under the terms of the GNU GPL v2.0. 9 */ 10 --- 36 unchanged lines hidden (view full) --- 47} 48 49static void append_string(const char *str, int size) 50{ 51 int new_size = text_size + size + 1; 52 if (new_size > text_asize) { 53 new_size += START_STRSIZE - 1; 54 new_size &= -START_STRSIZE; |
55 text = realloc(text, new_size); | 55 text = xrealloc(text, new_size); |
56 text_asize = new_size; 57 } 58 memcpy(text + text_size, str, size); 59 text_size += size; 60 text[text_size] = 0; 61} 62 63static void alloc_string(const char *str, int size) --- 14 unchanged lines hidden (view full) --- 78n [A-Za-z0-9_-] 79 80%% 81 int str = 0; 82 int ts, i; 83 84[ \t]*#.*\n | 85[ \t]*\n { | 56 text_asize = new_size; 57 } 58 memcpy(text + text_size, str, size); 59 text_size += size; 60 text[text_size] = 0; 61} 62 63static void alloc_string(const char *str, int size) --- 14 unchanged lines hidden (view full) --- 78n [A-Za-z0-9_-] 79 80%% 81 int str = 0; 82 int ts, i; 83 84[ \t]*#.*\n | 85[ \t]*\n { |
86 current_file->lineno++; | |
87 return T_EOL; 88} 89[ \t]*#.* 90 91 92[ \t]+ { 93 BEGIN(COMMAND); 94} --- 4 unchanged lines hidden (view full) --- 99} 100 101 102<COMMAND>{ 103 {n}+ { 104 const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); 105 BEGIN(PARAM); 106 current_pos.file = current_file; | 86 return T_EOL; 87} 88[ \t]*#.* 89 90 91[ \t]+ { 92 BEGIN(COMMAND); 93} --- 4 unchanged lines hidden (view full) --- 98} 99 100 101<COMMAND>{ 102 {n}+ { 103 const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); 104 BEGIN(PARAM); 105 current_pos.file = current_file; |
107 current_pos.lineno = current_file->lineno; | 106 current_pos.lineno = yylineno; |
108 if (id && id->flags & TF_COMMAND) { | 107 if (id && id->flags & TF_COMMAND) { |
109 zconflval.id = id; | 108 yylval.id = id; |
110 return id->token; 111 } 112 alloc_string(yytext, yyleng); | 109 return id->token; 110 } 111 alloc_string(yytext, yyleng); |
113 zconflval.string = text; | 112 yylval.string = text; |
114 return T_WORD; 115 } 116 . warn_ignored_character(*yytext); 117 \n { 118 BEGIN(INITIAL); | 113 return T_WORD; 114 } 115 . warn_ignored_character(*yytext); 116 \n { 117 BEGIN(INITIAL); |
119 current_file->lineno++; | |
120 return T_EOL; 121 } 122} 123 124<PARAM>{ 125 "&&" return T_AND; 126 "||" return T_OR; 127 "(" return T_OPEN_PAREN; --- 5 unchanged lines hidden (view full) --- 133 ">=" return T_GREATER_EQUAL; 134 "<" return T_LESS; 135 ">" return T_GREATER; 136 \"|\' { 137 str = yytext[0]; 138 new_string(); 139 BEGIN(STRING); 140 } | 118 return T_EOL; 119 } 120} 121 122<PARAM>{ 123 "&&" return T_AND; 124 "||" return T_OR; 125 "(" return T_OPEN_PAREN; --- 5 unchanged lines hidden (view full) --- 131 ">=" return T_GREATER_EQUAL; 132 "<" return T_LESS; 133 ">" return T_GREATER; 134 \"|\' { 135 str = yytext[0]; 136 new_string(); 137 BEGIN(STRING); 138 } |
141 \n BEGIN(INITIAL); current_file->lineno++; return T_EOL; | 139 \n BEGIN(INITIAL); return T_EOL; |
142 ({n}|[/.])+ { 143 const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); 144 if (id && id->flags & TF_PARAM) { | 140 ({n}|[/.])+ { 141 const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); 142 if (id && id->flags & TF_PARAM) { |
145 zconflval.id = id; | 143 yylval.id = id; |
146 return id->token; 147 } 148 alloc_string(yytext, yyleng); | 144 return id->token; 145 } 146 alloc_string(yytext, yyleng); |
149 zconflval.string = text; | 147 yylval.string = text; |
150 return T_WORD; 151 } 152 #.* /* comment */ | 148 return T_WORD; 149 } 150 #.* /* comment */ |
153 \\\n current_file->lineno++; | 151 \\\n ; |
154 [[:blank:]]+ 155 . warn_ignored_character(*yytext); 156 <<EOF>> { 157 BEGIN(INITIAL); 158 } 159} 160 161<STRING>{ 162 [^'"\\\n]+/\n { 163 append_string(yytext, yyleng); | 152 [[:blank:]]+ 153 . warn_ignored_character(*yytext); 154 <<EOF>> { 155 BEGIN(INITIAL); 156 } 157} 158 159<STRING>{ 160 [^'"\\\n]+/\n { 161 append_string(yytext, yyleng); |
164 zconflval.string = text; | 162 yylval.string = text; |
165 return T_WORD_QUOTE; 166 } 167 [^'"\\\n]+ { 168 append_string(yytext, yyleng); 169 } 170 \\.?/\n { 171 append_string(yytext + 1, yyleng - 1); | 163 return T_WORD_QUOTE; 164 } 165 [^'"\\\n]+ { 166 append_string(yytext, yyleng); 167 } 168 \\.?/\n { 169 append_string(yytext + 1, yyleng - 1); |
172 zconflval.string = text; | 170 yylval.string = text; |
173 return T_WORD_QUOTE; 174 } 175 \\.? { 176 append_string(yytext + 1, yyleng - 1); 177 } 178 \'|\" { 179 if (str == yytext[0]) { 180 BEGIN(PARAM); | 171 return T_WORD_QUOTE; 172 } 173 \\.? { 174 append_string(yytext + 1, yyleng - 1); 175 } 176 \'|\" { 177 if (str == yytext[0]) { 178 BEGIN(PARAM); |
181 zconflval.string = text; | 179 yylval.string = text; |
182 return T_WORD_QUOTE; 183 } else 184 append_string(yytext, 1); 185 } 186 \n { | 180 return T_WORD_QUOTE; 181 } else 182 append_string(yytext, 1); 183 } 184 \n { |
187 printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); 188 current_file->lineno++; | 185 fprintf(stderr, 186 "%s:%d:warning: multi-line strings not supported\n", 187 zconf_curname(), zconf_lineno()); |
189 BEGIN(INITIAL); 190 return T_EOL; 191 } 192 <<EOF>> { 193 BEGIN(INITIAL); 194 } 195} 196 --- 16 unchanged lines hidden (view full) --- 213 while (ts > 8) { 214 append_string(" ", 8); 215 ts -= 8; 216 } 217 append_string(" ", ts); 218 } 219 } 220 [ \t]*\n/[^ \t\n] { | 188 BEGIN(INITIAL); 189 return T_EOL; 190 } 191 <<EOF>> { 192 BEGIN(INITIAL); 193 } 194} 195 --- 16 unchanged lines hidden (view full) --- 212 while (ts > 8) { 213 append_string(" ", 8); 214 ts -= 8; 215 } 216 append_string(" ", ts); 217 } 218 } 219 [ \t]*\n/[^ \t\n] { |
221 current_file->lineno++; | |
222 zconf_endhelp(); 223 return T_HELPTEXT; 224 } 225 [ \t]*\n { | 220 zconf_endhelp(); 221 return T_HELPTEXT; 222 } 223 [ \t]*\n { |
226 current_file->lineno++; | |
227 append_string("\n", 1); 228 } 229 [^ \t\n].* { 230 while (yyleng) { 231 if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) 232 break; 233 yyleng--; 234 } --- 21 unchanged lines hidden (view full) --- 256{ 257 new_string(); 258 last_ts = first_ts = 0; 259 BEGIN(HELP); 260} 261 262static void zconf_endhelp(void) 263{ | 224 append_string("\n", 1); 225 } 226 [^ \t\n].* { 227 while (yyleng) { 228 if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) 229 break; 230 yyleng--; 231 } --- 21 unchanged lines hidden (view full) --- 253{ 254 new_string(); 255 last_ts = first_ts = 0; 256 BEGIN(HELP); 257} 258 259static void zconf_endhelp(void) 260{ |
264 zconflval.string = text; | 261 yylval.string = text; |
265 BEGIN(INITIAL); 266} 267 268 269/* 270 * Try to open specified file with following names: 271 * ./name 272 * $(srctree)/name --- 16 unchanged lines hidden (view full) --- 289 } 290 return f; 291} 292 293void zconf_initscan(const char *name) 294{ 295 yyin = zconf_fopen(name); 296 if (!yyin) { | 262 BEGIN(INITIAL); 263} 264 265 266/* 267 * Try to open specified file with following names: 268 * ./name 269 * $(srctree)/name --- 16 unchanged lines hidden (view full) --- 286 } 287 return f; 288} 289 290void zconf_initscan(const char *name) 291{ 292 yyin = zconf_fopen(name); 293 if (!yyin) { |
297 printf("can't find file %s\n", name); | 294 fprintf(stderr, "can't find file %s\n", name); |
298 exit(1); 299 } 300 301 current_buf = xmalloc(sizeof(*current_buf)); 302 memset(current_buf, 0, sizeof(*current_buf)); 303 304 current_file = file_lookup(name); | 295 exit(1); 296 } 297 298 current_buf = xmalloc(sizeof(*current_buf)); 299 memset(current_buf, 0, sizeof(*current_buf)); 300 301 current_file = file_lookup(name); |
305 current_file->lineno = 1; | 302 yylineno = 1; |
306} 307 308void zconf_nextfile(const char *name) 309{ 310 struct file *iter; 311 struct file *file = file_lookup(name); 312 struct buffer *buf = xmalloc(sizeof(*buf)); 313 memset(buf, 0, sizeof(*buf)); 314 315 current_buf->state = YY_CURRENT_BUFFER; 316 yyin = zconf_fopen(file->name); 317 if (!yyin) { | 303} 304 305void zconf_nextfile(const char *name) 306{ 307 struct file *iter; 308 struct file *file = file_lookup(name); 309 struct buffer *buf = xmalloc(sizeof(*buf)); 310 memset(buf, 0, sizeof(*buf)); 311 312 current_buf->state = YY_CURRENT_BUFFER; 313 yyin = zconf_fopen(file->name); 314 if (!yyin) { |
318 printf("%s:%d: can't open file \"%s\"\n", 319 zconf_curname(), zconf_lineno(), file->name); | 315 fprintf(stderr, "%s:%d: can't open file \"%s\"\n", 316 zconf_curname(), zconf_lineno(), file->name); |
320 exit(1); 321 } 322 yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); 323 buf->parent = current_buf; 324 current_buf = buf; 325 | 317 exit(1); 318 } 319 yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); 320 buf->parent = current_buf; 321 current_buf = buf; 322 |
326 for (iter = current_file->parent; iter; iter = iter->parent ) { 327 if (!strcmp(current_file->name,iter->name) ) { 328 printf("%s:%d: recursive inclusion detected. " 329 "Inclusion path:\n current file : '%s'\n", 330 zconf_curname(), zconf_lineno(), 331 zconf_curname()); 332 iter = current_file->parent; 333 while (iter && \ 334 strcmp(iter->name,current_file->name)) { 335 printf(" included from: '%s:%d'\n", 336 iter->name, iter->lineno-1); | 323 current_file->lineno = yylineno; 324 file->parent = current_file; 325 326 for (iter = current_file; iter; iter = iter->parent) { 327 if (!strcmp(iter->name, file->name)) { 328 fprintf(stderr, 329 "Recursive inclusion detected.\n" 330 "Inclusion path:\n" 331 " current file : %s\n", file->name); 332 iter = file; 333 do { |
337 iter = iter->parent; | 334 iter = iter->parent; |
338 } 339 if (iter) 340 printf(" included from: '%s:%d'\n", 341 iter->name, iter->lineno+1); | 335 fprintf(stderr, " included from: %s:%d\n", 336 iter->name, iter->lineno - 1); 337 } while (strcmp(iter->name, file->name)); |
342 exit(1); 343 } 344 } | 338 exit(1); 339 } 340 } |
345 file->lineno = 1; 346 file->parent = current_file; | 341 342 yylineno = 1; |
347 current_file = file; 348} 349 350static void zconf_endfile(void) 351{ 352 struct buffer *parent; 353 354 current_file = current_file->parent; | 343 current_file = file; 344} 345 346static void zconf_endfile(void) 347{ 348 struct buffer *parent; 349 350 current_file = current_file->parent; |
351 if (current_file) 352 yylineno = current_file->lineno; |
|
355 356 parent = current_buf->parent; 357 if (parent) { 358 fclose(yyin); 359 yy_delete_buffer(YY_CURRENT_BUFFER); 360 yy_switch_to_buffer(parent->state); 361 } 362 free(current_buf); --- 12 unchanged lines hidden --- | 353 354 parent = current_buf->parent; 355 if (parent) { 356 fclose(yyin); 357 yy_delete_buffer(YY_CURRENT_BUFFER); 358 yy_switch_to_buffer(parent->state); 359 } 360 free(current_buf); --- 12 unchanged lines hidden --- |