|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.07.2009, 17:50 | #21 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
А мои мысли таковы , все блоки нужно отделять к примеру , begin end;
При парсинге условий , считать открывшийся begin . Блок считать закрытым тогда , когда колво открытых begin будет равно кол-ву закрытых end; И с текстом между ними уже работать отдельно. Писал формулу для подсчёта мат вырадений , вот придумал такой вариант , и то что было внутры считал рекурсивно . Буду писать чтото похожее на тему ТС , только другими темпами |
16.07.2009, 07:03 | #22 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Lime, прочтите внимательно, на самом деле так оно и есть. Речь идет не о вложениях begin-end, а о парсинге ложной ветви условия (та что за Else). Мат. выражения (как математические так и матерные) на самом деле не проблема .
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
17.07.2009, 13:59 | #23 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Смог частично решить проблему введением дополнительных переменных - однако вложения условных операторов по-прежнему обрабатывается некорректно....
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
27.07.2009, 10:15 | #24 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Если кому интересно решил проблему в два прохода:
1. Предварительное сворачивание блоков (вида begin-end), задача простенькая для корректной обработки используется стек вложенных фрагментов в виде обычного StringList'а. Фрагменты создавались в виде самостоятельных структур, а на их место вставлялись ссылки вида + фрагмент имя_фрагмента 2. Замена прочих элементов - циклов и условий. Задача значительно упростилась - поскольку шаблон для данного фрагмента легко реализовывался (вида заглянуть на строку ниже или прочесть три строки ниже). Вложенность циклов и условий обрабатывать нет необходимости (в общем-то в этом и заключалась основная проблема) - поскольку они сразу отделены при первом проходе. Код получился достаточно большой (но ясный), если кому интересно выложу исходники. Задача решена, тему можно закрывать.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разбор кода программы на 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 |