Еще один баянчик =).
Мне нужно разобрать выражение. Да, я пользовался поиском, почитал... ясно.
В выражении могут быть только арфиметические операции, скобочки и переменные (имена переменных как в С++), никаких функций.
Вобщем-то, не очень долго думая, я остановился на таком решении...
Парсить строку два раза.
Первый проход будет выделять все имена переменных, удалять лишние пробелы,
преобразовывать лишние знаки (+- это -, ++ это + и т.п), проверять соответствие
скобочек (не расставляя приоритетов операций, а просто смотреть — три открывающих — три закрываеющих — ага все ОК), проверят корректность имен переменных, и алгебраических операций (например, 3 +* 3 — неверное выражение)
Второй проход уже будет после того, как переменные проинициализированы.
Этот проход будет преобразовывать запись в обратную польскую нотацию...
Вычисление выражение будет проходить именно по ней.
Почему два прохода? Дело в том, что я хочу, еще на этапе ввода выражения выделять все имена переменных, отображая их пользователю. Сотавлять постфиксную нотацию на этом этапе, кажется, излишне...
А вот мой вопрос: что в этом плохого? Что может быть лучше, и, примерно, равно по сложности реализации?