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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2009, 14:23   #11
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

В тему не вникал, но можно заюзать оператор GoTo.
Levsha100 вне форума Ответить с цитированием
Старый 15.07.2009, 14:25   #12
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Это каким образом?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 15.07.2009, 14:54   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Utkin
Тут ведь еще трабла может случится, я вот не очень представляю как такое анализировать:


Код:
If t=0 then begin
 r:=0
 begin
   k=0;y=8;
 end;
end;
О вложениях тоже нужно будет думать...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 15:00   #14
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Мой алгоритм учитывает вложения . Он не учитывает условия в ложной ветви.
Там идет обработка при встрече заголовка и конца фрагмента. Для этого используется стек имен фрагментов (ну просто числа) в виде StringList. Посмотрите внимательно при встрече заголовка фрагмента его имя помещается в стринглист, а при выходе выталкивается (условия для Id=3 и Id=4 соответственно) . Это стек F, изначально мы находимся в -1 фрагменте . Данные записываются в тот фрагмент, который находится последним в списке.
В конце должен быть контроль - если список не пуст - значит указанные фрагменты не были завершены (просто в тексте нет нижней границы фрагмента). Я приводил тест работы данной подпрограммы - там цикл находится в фрагменте - там все видно.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 15.07.2009 в 15:06.
Utkin вне форума Ответить с цитированием
Старый 15.07.2009, 15:18   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Utkin
Да это я мысли вслух озвучил )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 15:21   #16
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну в принципе ответ - использовать стек .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 15.07.2009, 15:38   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Utkin
Знаешь, дружище, я в свое время написал специальный можудь по распарсиванию строк по моему желанию, который мне очень пригодился при анализе сложных строк, вот прежде чем писать компилер - советую набрать такой модулек (а еще луче класс), чтоб потом не задумываться о деталях, именно подстроенный под понимание программного кода.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 15:46   #18
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Собственно так и есть . Имеется программный интерфейс - набор процедур и функций для работы с концепциями языка (все есть строка) и есть программный интерфейс для поддержки внутренних структур языка (те самые фрагменты, циклы и еще очень много всего). Имеется аналог встроенного лексического анализатора типа яка или бизона (только проще и заточенного под себя), я могу автоматически формировать форму БНФ для введеных команд (теоретически, просто нет времени этим заниматься). Он позволяет загружать команды (хотите русские, хотите английские), менять параметры и порядок их следования, автоматически переводить с одного языка на другой (в смысле русский-украинский или белорусский или допустим реализовать свой Бейсик) и много еще всяких приколюшек в проекте. Смесь Паскаля и Лиспа и соответствующих стилей программирования. Посматриваю на включение ООП возможностей. Но это все в будущем , пока основное - это разбить программу на логические блоки. Я пробовал в два-три прохода. Интересно, просто и медленно. А мне надо все и сразу . Да, только это не компилятор, а интерпретатор, но общая структура в принципе у всех одинакова. Сам интерпретатор будет представлять собой один класс - то есть можно будет встраивать его по аналогии Лиспа и Lua.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 15.07.2009 в 15:56.
Utkin вне форума Ответить с цитированием
Старый 15.07.2009, 16:12   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Оффтоп:
Цитата:
А мне надо все и сразу
Хы... Так не бывает )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 16:14   #20
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну то есть это возможно (в смысле разложить прогу в один проход), но я запутался и поэтому попросил сторонних мнений по этому поводу .
Маньяк-самоучка
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