Здравствуйте, para, Вы писали:
P>данный синтаксис рассчитан на то что в тестируемом парсере такие строки невозможны P>иначе как их выцеплять из тетируемого файла?
Твой вопрос бы число из любопытства?
Нет желания заняться этим проектом?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Mumusan, Вы писали:
M>>Мой скайп — stanislav.sidristyi
VD>Что-то откликнулось сразу двое, но оба пропали не написав ни одной строчки кода.
VD>У вас желание работать над проектом еще не пропало?
нет не пропало, у меня выплыла внезапная рабочая поездка , я еще неделю-две буду в отъезде. С моей стороны все в силе.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Mumusan, Вы писали:
M>>Мой скайп — stanislav.sidristyi
VD>Что-то откликнулось сразу двое, но оба пропали не написав ни одной строчки кода.
VD>У вас желание работать над проектом еще не пропало?
С моей тоже в силе. Поскольку в Немерле недавно, просматриваю все что есть и вникаю в детали реализации.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Mumusan, Вы писали:
M>>С моей тоже в силе. Поскольку в Немерле недавно, просматриваю все что есть и вникаю в детали реализации.
VD>В детали реализации чего?
Компилятора, опыта конкретно с немерлом не так много, надо натренировать глаз что-ли, чтобы в одном стиле писать. Можно вас попросить по началу дать первые пару заданий для разгона, а дальше я сам Теряюсь
Re[2]: Создание грамматики N1 для нового генератора парсеров
Здравствуйте, VladD2, Вы писали:
VD>Цель этого проекта с эмулировать парсер N1 и его макросов, так чтобы обкатать возможности генератора парсеров, протестировать скорость, качество сообщений об ошибках и т.п.
VD>Особенностями данного парсера будут: VD>1. Динамически-расширяемая грамматика (часть правил будет загружаться из внешних модулей). VD>2. Отсутствие ключевых слов. По возможности парсер должен использовать "контекстно-зависимые ключевые слова". Сейчас в Nemerle 1.х контекстно-зависимыми являются только ключевые слова get, set, add, remove и type.
Каков статус парсера для грамматики Н1 и что конкретно, нужно сделать, где взять документацию по ParserGenerator (peg)?
Здравствуйте, Mumusan, Вы писали:
M>Компилятора, опыта конкретно с немерлом не так много, надо натренировать глаз что-ли, чтобы в одном стиле писать.
Рассматривать кучу кода совершенно бесмысленно. Понять код можно только работая над ним. И это долгий процесс.
По сему нужно просто взять и начать что-то делать.
M>Можно вас попросить по началу дать первые пару заданий для разгона, а дальше я сам :) Теряюсь :)
Ну, вот первая задача которую нужно сделать — это создать проект расширения к студии и в нем расширение редатора кода.
Но для начала нужно понять готово ли рабочее пространство.
Для работы у тебя должно быть следующее:
1. Установлены: GitExtentions (и налажен экаунт гитхаба), VS 2010 и SP1 к ней, VS SDK для VS 2010 с SP1.
2. Исходники Nemerle клонированы с репозитория на github.com или его форка.
3. Собраны из исходников компилятор и Интеграция Nemerle c МЫ 2010. Сборку нужно производить с помощью батника DevBuildQuick-4.cmd.
4. Клонирован репозиторий https://github.com/rsdn/ParserGenerator.
Из этого все сделано?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Создание грамматики N1 для нового генератора парсеров
Здравствуйте, VladD2, Вы писали:
VD>Написать всю оставшуюся грамматику и тесты к ней. Для синтаксических макросов нужны только грамматики. Сами макросы не нужны.
VD>Задача — прасить корректные файлы Н1.
Какое АСТ надо получить, такое же как сейчас, или надо получить иное дерево?
VD>Из примеров и наших рассказов. Мне хватило 10 минут.
Peg который лежит у нас я использовал и вроде разобрался, что там с динамическим подключением, на каком синтаксисе остановились? Н1 можно разобрать обычным статическим методом парсинга в АСТ, нужно здесь использовать доп. функции типа динамической грамматики и как он будет встраиваться в остальную инфраструктуру компилятора, какой интерфейс этот модуль должен иметь?
Re[5]: Создание грамматики N1 для нового генератора парсеров
. Ну, а детали уже по скайпу или здесь выяснять.
VD>>Из примеров и наших рассказов. Мне хватило 10 минут.
CU>Peg который лежит у нас я использовал и вроде разобрался,
В новом парсере не так много изменений. Убран "/". Правила поделены на лексические и остальные. В лексических строится ДКА. В остальных проименяется гибрид алгоритмов TDOP и PEG. Это выражается в следующим:
1. В лексерных правилах можно использовать "|" для указания альтернатив. Альтернативы не имеют приоритетов (пофигу в каком порядке их задавать).
2. Для описания альтернатив в обычных (не лексических) правилах нужно использовать точки расширения. Для этого одно правило (расширяемое) описывается без тела, а его расширения описываются по принципу:
РасширяеющееПравило is РасширяемоеПравило = грамматика без "/" и "|".
3. При описании грамматики внутри раширяющих правил можно использовать силу связвания. Это нужно при описании операторов. По сути приоритет и ассоциативность задаются силой связывания указываемой при рекурсивных обращениях к расширяемому правилу.
4. АСТ задается в виде тега Ast() и описания имен параметров в нем.
Далее все легко освоить по примерам: Базовая грамматика. Расширяющая грамматика. Пример использования силы связывания.
CU>что там с динамическим подключением, на каком синтаксисе остановились?
Как в Н1 — using-ом. Это код уже написан. Вот код загрузки внешних парсеров. А вот подключения грамматики по using-у. Он пока не рассчитан на одноименные расширения, но это легко поправить.
CU> Н1 можно разобрать обычным статическим методом парсинга в АСТ, нужно здесь использовать доп. функции типа динамической грамматики и как он будет встраиваться в остальную инфраструктуру компилятора, какой интерфейс этот модуль должен иметь?
Как я уже сказал динамическая загрузка грамматик уже сделана и работает. В последствии можно будет сделать несколько расширяющих грамматик. Но пока достаточно использовать ту что находится в проекте N2ParserExtensions. Вот в нем и в проекте базового парсера N2Parser и надо добавлять правила.
Обработчиков писать не надо (да и нельзя). Нужно просто описывать правила и АСТ к нему.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.