Как стать автором
Обновить

Комментарии 14

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

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

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

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

Неспортивно.

s/(Д|д)воичн({\s}2)/бинарн$2/g

Про единицы измерения мне до сих пор помнится вопрос на экзамене по физике, который мне задал профессор:
П: Какой физический смысл имеет <какой-то мутный коэффициент в каком-то законе терподинамики>?
Я: (правильный ответ) Никакого!
подстроечный коэффициент, есть такие)
Есть же более простой путь написания синтаксического анализатора через 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, как думаете, каждые сколько недель в среднем жители хабра пишут про парсинг математических выражений?

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий