Итак, я пытаюсь объявить синтаксис массива (используя Bison 3.6.2) следующим образом:
array: '[' array_vals ']'
array_vals:
| vals array_vals
vals: STRING //String values defined in my lexer
| FLOAT //Float values defined in my lexer
| INT //Integer values defined in my lexer
Мне кажется, что это довольно понятно, но есть только одна проблема: везде, где Я печатаю array_vals
, используя это: array: '[' array_vals ']' { cout << $2 << endl; }
Я получаю только первое значение массива в моем исходном коде, поэтому, если у меня есть это в моем исходном файле: [10, 20, 30, 40]
, тогда он печатает только 10
. Я пробовал напечатать vals
в array_vals
, и это еще более странно и непоследовательно. Я знаю, что это не ошибка, поскольку я перешел с Bison версии 3.5.1 на 3.6.2, и разницы не было. Заранее спасибо!