grammar: preserve token declaration order

In a declaration %token A B, the token A is declared before B, but in %left
A B (or with %precedence or %nonassoc or %right), the token B was declared
before A (tokens were declared in reverse order).

* src/symlist.h, src/symlist.c (symbol_list_append): New.
* src/parse-gram.y: Use it instead of symbol_list_prepend.
* tests/input.at: Adjust expectations.
This commit is contained in:
Valentin Tolmer
2013-01-25 11:12:47 +01:00
committed by Akim Demaille
parent 9b3bb25885
commit 93561c21e8
5 changed files with 33 additions and 7 deletions

View File

@@ -107,6 +107,23 @@ symbol_list_prepend (symbol_list *list, symbol_list *node)
}
/*-------------------------.
| Append NODE to the LIST. |
`-------------------------*/
symbol_list *
symbol_list_append (symbol_list *list, symbol_list *node)
{
if (!list)
return node;
symbol_list *next = list;
while (next->next)
next = next->next;
next->next = node;
return list;
}
/*-----------------------------------------------.
| Free the LIST, but not the items it contains. |
`-----------------------------------------------*/