Bonjour,
J'ai une vieille question : Tu écris
border_width_a : border_width_b border_with_a |
Pour moi, 2 erreurs au moins :
1) Il n'y a pas le ';' à la fin de la définition du non terminal (c'est ce qui sert de séparateur pour la définition des non terminaux si j'ai bien compris, et je n'ai pas trouvé d'exemple où ils ne sont pas présents). Dans ton cas, Bison considère que le symbole border_width_a en début de ligne fait encore partie de la définition de border_width_b (Je ne pense pas que ce soit ta volonté
), et du coup le non terminal n'est pas vu, ce qui explique le message.
2) Il y a un '|' à la fin du non terminal (cela peut être volontaire néanmoins, ne provoquant pas d'erreur).
Ce que j'aurais mis :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
.........
border_width_b : THIN VIRG { /* action */ }
| THICK VIRG { /* action */ }
| MEDIUM VIRG { /* action */ }
;
border_width_a : border_width_b border_with_a { /* action */ }
| /* rien */ { /* action */ }
;
border_width : BORDER_WIDTH PTS border_width_a SPACE { /* action */ }
| BORDER_WIDTH PTS INHERIT SPACE { /* action */ }
;
%% |
Cordialement,
Tea
Partager