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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2012, 11:58   #1
Новичок!
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 35
По умолчанию Создание макропроцессора

Есть задача: написать макропроцессор. Т.е. программу, которая просматривает текст, находит ключевые слова, знаки и то что между ними, и заменяет на нужное определение этих ключевых слов.
К примеру, есть текст:
Код:
while (выражение)
{
команды
}
Макропроцессор должен это дело просмотреть и сделать, например такое:
Код:
label: if (выражение)
{
команды
}
goto: label
Т.е он видит while заменяет на if, берёт выражение, вставляет в if, находит начало команд по спецсимволу, вставляет команды до ограничителя в тело if`а, в конце ставит goto.
При этом ограничители заданы могут быть пользователем и "что заменять" на "замену" также указаны пользователем, например в файле.
Надеюсь, я понятно объяснил, просто не знаю откуда к этому делу подступиться. Может кто-нибудь алгоритм объяснит?
Новичок! вне форума Ответить с цитированием
Старый 22.09.2012, 13:31   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,544
По умолчанию

Цитата:
просто не знаю откуда к этому делу подступиться. Может кто-нибудь алгоритм объяснит?
Самое сложное это понять что является в этом случаем словом каковы его ограничители пробел переход строки точка запятая символ отличный от ...

а дальше все "просто"
берет слово проверяет его на наличие макроса
Цитата:
которая просматривает текст, находит ключевые слова
как только нашла
Цитата:
видит while
выполняет предписанные действия
Цитата:
заменяет на if, берёт выражение, вставляет в if, находит начало команд по спецсимволу, вставляет команды до ограничителя в тело if`а, в конце ставит goto.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.09.2012, 13:46   #3
Новичок!
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 35
По умолчанию

спасибо)
Но у меня тут ещё одна мыслишка появилась: можно ли это хоть как то сделать с помощью регулярных выражений ?
Новичок! вне форума Ответить с цитированием
Старый 22.09.2012, 14:34   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,168
По умолчанию

конечно можно
Ципихович Эндрю вне форума Ответить с цитированием
Старый 22.09.2012, 15:07   #5
Новичок!
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 35
По умолчанию

Цитата:
конечно можно
а не подскажете как с помощью регулярных выражений заменить «while (выражение)» на «if (выражение)», ведь выражение может быть любой длины
Новичок! вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание бд Алек ASP.NET 2 02.01.2012 04:34
создание бд в с++ Alena_897 C/C++ Базы данных 7 19.11.2011 21:18
Создание внутреннего и внешнего серверов. Создание серверов автоматизации. Ann_Sh Помощь студентам 3 09.10.2011 15:53
Создание gadilla_cs Общие вопросы Delphi 12 10.12.2010 17:56