From a82cbb63b6ea1ba38cbbaeb90b0e764c57a34dd0 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 22 Jul 2012 18:44:39 +0200 Subject: [PATCH] parser: factor handling of type tags * src/parse-gram.y: Now that <*> and <> are processed like regular tags, let... (tag): handle them. --- src/parse-gram.y | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/parse-gram.y b/src/parse-gram.y index 5c702082..efaa3d14 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -196,12 +196,12 @@ static char const *char_name (char); %printer { fprintf (stderr, "{\n%s\n}", $$); } braceless content.opt "{...}" "%{...%}" EPILOGUE -%type BRACKETED_ID ID ID_COLON PERCENT_FLAG TAG variable +%type BRACKETED_ID ID ID_COLON PERCENT_FLAG TAG tag variable %printer { fputs ($$, stderr); } %printer { fprintf (stderr, "[%s]", $$); } BRACKETED_ID %printer { fprintf (stderr, "%s:", $$); } ID_COLON %printer { fprintf (stderr, "%%%s", $$); } PERCENT_FLAG -%printer { fprintf (stderr, "<%s>", $$); } TAG +%printer { fprintf (stderr, "<%s>", $$); } TAG tag %type INT %printer { fprintf (stderr, "%d", $$); } @@ -390,7 +390,7 @@ grammar_declaration: { symbol_list *list; for (list = $3; list; list = list->next) - symbol_list_code_props_set (list, destructor, @2, $2); + symbol_list_code_props_set (list, $1, @2, $2); symbol_list_free ($3); } | "%printer" "{...}" generic_symlist @@ -522,9 +522,13 @@ generic_symlist: generic_symlist_item: symbol { $$ = symbol_list_sym_new ($1, @1); } -| TAG { $$ = symbol_list_type_new ($1, @1); } -| "<*>" { $$ = symbol_list_type_new ("*", @1); } -| "<>" { $$ = symbol_list_type_new ("", @1); } +| tag { $$ = symbol_list_type_new ($1, @1); } +; + +tag: + TAG +| "<*>" { $$ = uniqstr_new ("*"); } +| "<>" { $$ = uniqstr_new (""); } ; /* One token definition. */ -- 2.47.2