| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Создание макроязыка |
| Автор: Anarki 19.9.2005, 07:57 | ||
Интересует вопрос о создании мини макроязыка, в котором будут использоваться оператор условия проверяющий возвращаемое значение функции, переход по меткам и выполнение какой-то функции. Вот вопрос стоит как его распарсить...
Существуют ли модули, облегчающие работу или придется все писать самому, используя регулярки? |
| Автор: Anarki 19.9.2005, 10:20 | ||
| Вот начал реализацию, но думаю, что делать с условием... Как лучше все это спроектировать. Наверное устанавливать какие то флаги, скажем с определенным уровнем.(будет показывать уровень вложенности условия).
Хотя, наверное, лучше парсить все сразу, а не построчно... |
| Автор: GrayCardinal 19.9.2005, 10:45 |
| П-п. А оно вам надо или только "интересует" ? |
| Автор: sharq 19.9.2005, 12:36 |
| Anarki идея, конечно, интересная. Как на счет xml-файлов, парсить на много легче, или структур данных перла, который ты можешь дампить Storable'ом. Хотя и к твоей структуре можно придумать парсер, только смотри у тебя, например, IfScan может быть вложен друг в друга. |
| Автор: Anarki 19.9.2005, 16:15 | ||
Оно действительно надо. С этим языком будет работать человек мало разбирающийся в программировании. |
| Автор: GrayCardinal 20.9.2005, 06:39 | ||
Ну ни фига себе. Накидайте поподробней список "операторов" и чего делать должны. А то я чего-то не въехал. Может подкину пару регулярок |
| Автор: Anarki 20.9.2005, 09:52 | ||
| Регулярки я и сам могу, спасибо. А вот логику вложенных условий... Хотя сейчас веду переговоры, чтобы отказаться от макроязыка в пользу упрощенного Perl. Скажем все описания функций, глобальных переменных вынести в отдельный файл который будет подключать "файл-макросов". В самом файле "файле_макросов" будут просто использоваться функции, условия, переменных не будет видно глазом
(Код может быть некорретным, это я показывал как будут выглядеть "макросы" на Perl) |