Я хотел бы разобрать набор выражений, например: X[3]
, X[-3]
, XY[-2]
, X[4]Y[2]
и т.д.Debug анализатора печатая полезную информацию
В моих parser.mly
, index
(который находится внутри []
) определяются как следующим образом:
index:
| INTEGER { $1 }
| MINUS INTEGER { 0 - $2 }
маркер INTEGER
, MINUS
т.д. определены в лексере как обычно.
Я пытаюсь разобрать пример, он терпит неудачу. Однако, если я прокомментирую | MINUS INTEGER { 0 - $2 }
, он работает хорошо. Поэтому проблема, безусловно, связана с этим. Чтобы отлаживать, я хочу получить дополнительную информацию, другими словами, я хочу знать, что считается MINUS INTEGER
. Я попытался добавить печать:
index:
| INTEGER { $1 }
| MINUS INTEGER { Printf.printf "%n" $2; 0 - $2 }
Но при разборе ничего не печатается.
Может ли кто-нибудь сказать мне, как распечатать информацию или отладить это?
Включить '--verbose - -debug' в командной строке 'yacc'. –
Извините, я просто понял, что использую 'menhir' ... – SoftTimur
Ваш вопрос не содержит важных деталей. Вы написали INTEGER, а MINUS определены как «нормальные», но мы понятия не имеем, что вы считаете нормальным. Вы написали «это не удается», но вы ничего не писали о том, как это произошло. У вас есть исключения, или программа заканчивается, но со странным результатом? – camlspotter