Это кажется на занятие им правильным способом.
, К сожалению, это может быть медленным и утомительным процессом. Нет действительно никакой замены для закапывания и понимания, что код пытается выполнить.
Одна книга, которую я могу рекомендовать (если Вам уже не зарегистрировали ее под "и т.д.") Рефакторинг к Шаблонам . Это приспособлено к людям, которые находятся в Вашей точной ситуации.
Мое предложение таково. не обрабатывайте '-' как арифметический оператор. рассматривать его как «знаковый» оператор. или относитесь к нему так, как будто это часть всего операнда (то есть его знак). Я имею в виду, что каждый раз, когда вы сталкиваетесь с '-', вам просто нужно умножить операнд после него на -1, а затем продолжить чтение следующего токена. :) Надеюсь, это поможет. просто мысль ...
Когда мне нужно было это поддержать, я делал это на промежуточном этапе. Я начал с создания списка всех лексем выражений, затем использовал вспомогательные функции для извлечения операторов и операндов, а функция «получить операнд» просто потребляла две лексемы всякий раз, когда она видела унарный оператор.
Это действительно помогает, если вы используете другой символ для означает "унарный минус".