[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...". ПЕГ-парсер способен на это?
Re: [Nitra] Пример Calc и непонятный отчёт об ошибке
От: hardcase Пират http://nemerle.org
Дата: 29.11.14 21:54
Оценка:
Здравствуйте, btn1, Вы писали:

B>Поставил Нитру


Господа, убедительная просьба указывать версию дистрибутива!
Ее можно скопировать из свойств msi файла, либо посмотреть в списке установленных программ, либо в свойстве расширения для VisualStudio.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: [Nitra] Пример Calc и непонятный отчёт об ошибке
От: btn1  
Дата: 30.11.14 07:28
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Господа, убедительная просьба указывать версию дистрибутива!


Лады! 0.1.1071.0
Кстати, чтоб не лазить по всякм свойствам, проще в самом имени сетапа указывать версию.

PS
На 0.1.1424.0 то же самое и при этом, видимо, переименованы выходные классы парсера (CalcParseTree вместо CalcAst).
Отредактировано 30.11.2014 7:38 btn1 . Предыдущая версия .
Re: [Nitra] Пример Calc и непонятный отчёт об ошибке
От: hardcase Пират http://nemerle.org
Дата: 01.12.14 12:27
Оценка:
Здравствуйте, btn1, Вы писали:

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


Включи отображение "пропущенных" узлов:
def str = parseTree.ToString(PrettyPrintOptions.MissingNodes);


Возможно, такую печать нужно сделать по-умолчанию...
/* иЗвиНите зА неРовнЫй поЧерК */
Re: [Nitra] Пример Calc и непонятный отчёт об ошибке
От: hardcase Пират http://nemerle.org
Дата: 01.12.14 12:58
Оценка:
Здравствуйте, btn1, Вы писали:

B>А вот вывод:

B>
input>>6 * - / 3
B>Pretty print: 6 * - / 3
B>1:1: Expected: Expression : 100
B>Result: NaN
B>


Вывод координат в тексте тоже поправил (SingleLineSourceSnapshot багу имел внутрях).
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.