Pull to refresh

Comments 14

Хоть и перевод, но просто сравнивать double — такая себе затея.
Оформление кода тоже странноватое, хотят тут сложно сказать дефект перевода или оно так и есть в проекте.
Парсер тоже, сам по себе, наивен даже для двух дней.
Ну и, как мне кажется, для таких вот утилит, если хочется написать самому правильнее брать что-то типа python, а не бороться с плюсами как в плане синтаксиса, так и в плане удобства.
У C++ все нормально с синтаксисом и удобством
Забавно читать, как автор статьи изобретает крайне неэффективный велосипед, даже не догадываясь о существовании алгоритма сортировочной станции.

Прежде, чем изобретать что-то своё или принимать решение о переводе статьи, имеет смысл заглянуть в учебник по теме. В данном случае — в любой приличный учебник по созданию компиляторов.

Ну, например этот: Ахо, Лам "Компиляторы: принципы, технологии и инструменты"

Тильды эквивалентны знакам «минус», их нужно писать так, чтобы отличать от бинарного вычитания

Неспортивно.
Про единицы измерения мне до сих пор помнится вопрос на экзамене по физике, который мне задал профессор:
П: Какой физический смысл имеет <какой-то мутный коэффициент в каком-то законе терподинамики>?
Я: (правильный ответ) Никакого!
подстроечный коэффициент, есть такие)
Есть же более простой путь написания синтаксического анализатора через yacc например +ragel для удобства
Строгое сравнение двух double — сомнительное действие
bool operator==(const val& l, const val& r){
  if(l.u != r.u) return false;
  if(l.n != r.n) return false;
  return true;
}
Про консольный калькулятор уже было. Помню я переписал на ассемблер UASM. Код получился даже наглядней С++11.

KvanTTT, как думаете, каждые сколько недель в среднем жители хабра пишут про парсинг математических выражений?

Сложно прикинуть, но вроде не так уж и часто. К тому же это еще и перевод.

Sign up to leave a comment.