[Nitra] Пример Calc и непонятный отчёт об ошибке
От: btn1  
Дата: 29.11.14 20:26
Оценка:
Поставил Нитру, создал новый проект с примером Calc. "Ничего не сделал, только вошёл!" Запустил, решил посмотреть на вразумительность сообщений о неправильном выражении. Вот выражение: "6 * — / 3"
А вот вывод:
input>6 * - / 3
Pretty print: 6 * - / 3
1:1: Expected: Expression : 100
Result: NaN


Т.е. сами понимаете — ничего вразумительного. Хотя бы начало "6 *" должно считаться валидным, а далее "Ошибка, ожидается число или скобка". А при входе "6 6" выдаёт это:

input>6 6
Pretty print: <# ambiguous Expression, 5 options
  6  6
  6  6
  6  6
  6  6
  6  6
#>

1:1: Expected: a binary operator


Опять же, как человек-то я понимаю, что написал ерунду, но а как должен это понимать человек, пишущий программу? Шесть-то он ввёл правильно, а далее компилер должен сообщить о проблеме, а не показывать 5 идентичных и бесполезных строчек. Вопрос: это сырой парсер? Возможно, нужны какие-то приседания с грамматикой?
В идеале, мне бы хотелось видеть что-то вроде "вот эта часть строки правильная, а далее могут идти только следующие варианты: expr, sum, etc...". ПЕГ-парсер способен на это?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.