Задачка для тех кто хочет изучить Nemerle.Peg и/или Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.05.11 16:44
Оценка:
Всем привет!

Сейчас Nemerle.Peg (макрос PegGrammar) использует рукописный граммар который разбирает дерево токенов немерла (используется так называемый лексерный макрос).
Грамматика грамматики PegGrammar стала довольно сложной и разбирать ее вручную стало довольно напряжно.

Собственно задачка заключается в том, чтобы написать парсер грамматики PegGrammar на нем самом же.

Общая идея такова. За основу надо взять макрос PegGrammar (сделать брэнч). В нем нужно заменить метод ParseEbnf:
public ParseEbnf(typer : Typer, token : Token, grammar : Grammar) : Grammar

на реализацию основанную на PegGrammar. Для этого нужно создать еще один класс — парсер, прикрутить к нему макрос PegGrammar, описать грамматику и реализовать обработчики.

Задачка, что называется, из реального мира (а не баловство синтетическое). При этом она не такая уж сложная (подойдет даже для полного новичка в языке). Задача довольно интересная. И что самое главное — очень полезная.

Кто хочет взяться?

ЗЫ

Обещаю помощь через Скайп или этот форум. Мой логин в скайпе соответствует логину на этом сайте.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Задачка для тех кто хочет изучить Nemerle.Peg и/или Neme
От: Ka3a4oK  
Дата: 15.05.11 16:51
Оценка:
VD>Кто хочет взяться?
Готов попробовать. Руку на PEG я набил.

VD>Обещаю помощь через Скайп или этот форум. Мой логин в скайпе соответствует логину на этом сайте.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[2]: Задачка для тех кто хочет изучить Nemerle.Peg и/или N
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.05.11 17:31
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

VD>>Кто хочет взяться?

KK>Готов попробовать. Руку на PEG я набил.

Давай! Если будут какие-то вопросы, обращайся.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Задачка для тех кто хочет изучить Nemerle.Peg и/или Neme
От: Ziaw Россия  
Дата: 16.05.11 09:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Собственно задачка заключается в том, чтобы написать парсер грамматики PegGrammar на нем самом же.


Грамматику придется держать в строке? Что на это скажет IDE?
Re[2]: Задачка для тех кто хочет изучить Nemerle.Peg и/или N
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.05.11 14:33
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Грамматику придется держать в строке? Что на это скажет IDE?


Зачем? Как и сейчас будет все. Макрос по прежнему будет принимать лексему которая будет содержать дерево лексем. Просто вместо того чтобы возиться с ними можно получить из исходного файла код по соответствующему местоположению и распарсить его с помощью Peg-а.

Вообще-то я все описал в тематическом сообщении. Просто прочти его внимательнее.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Задачка для тех кто хочет изучить Nemerle.Peg и/или N
От: Ziaw Россия  
Дата: 17.05.11 04:24
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Зачем? Как и сейчас будет все. Макрос по прежнему будет принимать лексему которая будет содержать дерево лексем. Просто вместо того чтобы возиться с ними можно получить из исходного файла код по соответствующему местоположению и распарсить его с помощью Peg-а.


Ясно. Но пег тогда придется собирать при помощи пега? Разумно ли это?
Re[4]: Задачка для тех кто хочет изучить Nemerle.Peg и/или N
От: gloomy rocker Россия  
Дата: 17.05.11 05:50
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, VladD2, Вы писали:


VD>>Зачем? Как и сейчас будет все. Макрос по прежнему будет принимать лексему которая будет содержать дерево лексем. Просто вместо того чтобы возиться с ними можно получить из исходного файла код по соответствующему местоположению и распарсить его с помощью Peg-а.


Z>Ясно. Но пег тогда придется собирать при помощи пега? Разумно ли это?


CoCo/R собирается при помощи него самого, компилятор Nemerle тоже — очень даже разумно.
Скука — двигатель прогресса.
Re[4]: Задачка для тех кто хочет изучить Nemerle.Peg и/или N
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.11 09:31
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Ясно. Но пег тогда придется собирать при помощи пега? Разумно ли это?


Компилятор собирается же при помощи компилятора. Придется boot расширить еще одной сборкой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Задачка для тех кто хочет изучить Nemerle.Peg и/или N
От: Ka3a4oK  
Дата: 23.05.11 19:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Ka3a4oK, Вы писали:


VD>>>Кто хочет взяться?

KK>>Готов попробовать. Руку на PEG я набил.

VD>Давай! Если будут какие-то вопросы, обращайся.


Написал тебе письмо, ты почему-то не ответил. Продублирую здесь:


Привет.

Начал работать над темой http://rsdn.ru/forum/nemerle/4272345.aspx

.

Сразу вопрос:

Что за странные определения:

and parseSequence(tok : Token) : Rule * Token
{
...
}

Похоже на локальную функцию, но почему and и в чем отличие от def?

... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[4]: Задачка для тех кто хочет изучить Nemerle.Peg и/или N
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.05.11 21:55
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>Написал тебе письмо, ты почему-то не ответил.


Я не всегда отслеживаю почту в реалтайме. Если нужен быстрый отклик, лучше дергать меня по Скайпу.

KK>Продублирую здесь:



KK>

KK>Привет.
KK>Начал работать над темой http://rsdn.ru/forum/nemerle/4272345.aspx

.
KK>Сразу вопрос:
KK>Что за странные определения:
KK>and parseSequence(tok : Token) : Rule * Token
KK>{
KK> ...
KK>}
KK>Похоже на локальную функцию, но почему and и в чем отличие от def?


Это группа функций. Локальные функции видны только ниже по тексту. Если нужно создать набор локальных функций которые смогут рекурсивно друг-друга вызвать, то их надо объявлять через and. Первая функция идет через def, а все остальные через and.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.