Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2014-06-27 12:43:47 ЛС | профиль | цитата
Почесал я в репе... Потом еще почесал...
Посмотрел, как другой народ делает, и подумал -- а пошло он в... Ну Вы в курсе

Угу, вылавливалось для TokEnd.
Пусть теперь нулик вылавливает (посмотри последние строки исправлений в GetToken постом выше)
Припоминается мне (давно же было), что была какая-то боязнь, что GetToken как то там "за конец" строки залезет со своими проверками.
Не, НЕ ЗАЛЕЗЕТ. Типа - отвечаю.

nesco, нормально все будет. Репу же я - больше пяти минут чесал



------------ Дoбавленo в 12.43:
Широковещательный вопрос
А нет ли желания у Благородных Донов - обсудить полную синтаксическую диаграмму для MathParse
Вот, я ее нарисовал, глядя на коды (см. ниже). И здесь каждому нетерминалу (имя в левой части) соответствует наш какой-то LevelXXX
В общем, есть довольно прозрачное соответствие этой диаграммы - исполняющему ее коду.
Типа, поменять уже сделанную архитектуру - пол-часа трудов....

MathParse

<Expression> := <Addition>   { <Tok4Cmp> <Addition>   }.                // Логическое сравнение (< > <= >= = <>)
<Addition> := <Production> { <Tok4Add> <Production> }. // Сложение/Вычитание
<Production> := <Powers> { <Tok4Mul> <Powers> }. // Умножение/Деление
<Powers> := <SignLogic> { <Tok4Pow> <SignLigic> }. // Возведение в степень
<SignLogic> := [<Tok4Unary>] <Logic>. // Смена знака и лог. not
<Logic> := <Atoms> { <Tok4Logic> <Atoms> }. // Лог.опер(and or xor)
<Atoms> := <Tok4Arg> [ '[' <Expression> [ ',' <Expression> ] ']' // Просто пин, Массив, Матрица
| '(' <Expression> { ',' <Expression> } ')' ] // или Пин-Функция
| <TokName> [ '(' <Expression> { ',' <Expression> } ')' ] // или Функции (встроенные, и пользовательские)
| '(' <Expression> ')' // или Просто скобочная рекурсия
| <Literal>. // или Тупо константа
И у меня к ней есть вопросы
А у Вас
карма: 9

0