Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2009, 17:50   #21
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

А мои мысли таковы , все блоки нужно отделять к примеру , begin end;
При парсинге условий , считать открывшийся begin . Блок считать закрытым тогда , когда колво открытых begin будет равно кол-ву закрытых end;
И с текстом между ними уже работать отдельно.
Писал формулу для подсчёта мат вырадений , вот придумал такой вариант , и то что было внутры считал рекурсивно .

Буду писать чтото похожее на тему ТС , только другими темпами
Lime вне форума Ответить с цитированием
Старый 16.07.2009, 07:03   #22
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Lime, прочтите внимательно, на самом деле так оно и есть. Речь идет не о вложениях begin-end, а о парсинге ложной ветви условия (та что за Else). Мат. выражения (как математические так и матерные) на самом деле не проблема .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.07.2009, 13:59   #23
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Смог частично решить проблему введением дополнительных переменных - однако вложения условных операторов по-прежнему обрабатывается некорректно....
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 27.07.2009, 10:15   #24
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Если кому интересно решил проблему в два прохода:
1. Предварительное сворачивание блоков (вида begin-end), задача простенькая для корректной обработки используется стек вложенных фрагментов в виде обычного StringList'а. Фрагменты создавались в виде самостоятельных структур, а на их место вставлялись ссылки вида + фрагмент имя_фрагмента

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

Задача решена, тему можно закрывать.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор кода программы на Bison+Flex Corol Помощь студентам 2 03.07.2009 09:57
Разбиение текста на блоки. gosu Общие вопросы C/C++ 11 04.06.2009 19:12
Как имея один exe файл получить исходник программы? Skoroxod Общие вопросы Delphi 4 20.02.2009 10:41
один файл, две программы... Deathwatcher Общие вопросы Delphi 0 18.11.2008 12:39
Сортирование масивов за один проход NightWishMaster Паскаль, Turbo Pascal, PascalABC.NET 10 18.10.2007 08:05