Опять выражения... Сколько можно?
От: Аноним  
Дата: 06.02.06 16:17
Оценка:
Еще один баянчик =).
Мне нужно разобрать выражение. Да, я пользовался поиском, почитал... ясно.

В выражении могут быть только арфиметические операции, скобочки и переменные (имена переменных как в С++), никаких функций.

Вобщем-то, не очень долго думая, я остановился на таком решении...
Парсить строку два раза.
Первый проход будет выделять все имена переменных, удалять лишние пробелы,
преобразовывать лишние знаки (+- это -, ++ это + и т.п), проверять соответствие
скобочек (не расставляя приоритетов операций, а просто смотреть — три открывающих — три закрываеющих — ага все ОК), проверят корректность имен переменных, и алгебраических операций (например, 3 +* 3 — неверное выражение)

Второй проход уже будет после того, как переменные проинициализированы.
Этот проход будет преобразовывать запись в обратную польскую нотацию...
Вычисление выражение будет проходить именно по ней.

Почему два прохода? Дело в том, что я хочу, еще на этапе ввода выражения выделять все имена переменных, отображая их пользователю. Сотавлять постфиксную нотацию на этом этапе, кажется, излишне...

А вот мой вопрос: что в этом плохого? Что может быть лучше, и, примерно, равно по сложности реализации?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.