Re[5]: Макрос PegGrammar
От: catbert  
Дата: 12.12.10 11:30
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Забавная фича, но где она реально нужна? мне в голову приходит только поддержка нескольких диалектов одного языка. Широко распространен в этом смысле только SQL, как часто люди пишут парсеры SQL


HTML+JavaScript+CSS
Re[5]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.10 11:56
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Забавная фича, но где она реально нужна? мне в голову приходит только поддержка нескольких диалектов одного языка. Широко распространен в этом смысле только SQL, как часто люди пишут парсеры SQL


Для парсинга того же Nemerle нужна.

Плюс имея динамическое расширение модульность будет автоматом. А там уже и статическое расширение приделать будет не сложно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Макрос PegGrammar
От: matumba  
Дата: 12.12.10 14:29
Оценка:
Здравствуйте, Vlad2, Вы писали Статья: Макрос PegGrammar.

"Буду краток" (ц)
1. Статья напоминает расширенную документацию к PEGGrammar. Это её прямое назначение или это должно было быть введением для новичков?
2. Неплохо бы расписать роль PEGGrammar в цепочке компиляторных модулей — что даём на вход, что происходит внутри, что имеем на выходе и как этот выход использовать.
3. Хотя бы небольшой пример грамматики (раз уж так подробно расписываются возможности макроса), но желательно с охватом всех этих возможностей — чтобы наглядно было видно, что и зачем применять. Я, например, не уловил назначение "точки восстановления" (которую можно вставлять практически после любого правила) и "точки отсечения" (которые, похоже, нужны только в IntelliSence?).
4. Попытка использовать PEGGrammar из C# сразу провалилась — нет атрибута PegGrammarAttribute! Получается, это только Немерловое решение?
Re[2]: Макрос PegGrammar
От: Ziaw Россия  
Дата: 12.12.10 14:36
Оценка:
Здравствуйте, matumba, Вы писали:

M>2. Неплохо бы расписать роль PEGGrammar в цепочке компиляторных модулей — что даём на вход, что происходит внутри, что имеем на выходе и как этот выход использовать.


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

M>3. Хотя бы небольшой пример грамматики (раз уж так подробно расписываются возможности макроса), но желательно с охватом всех этих возможностей — чтобы наглядно было видно, что и зачем применять. Я, например, не уловил назначение "точки восстановления" (которую можно вставлять практически после любого правила) и "точки отсечения" (которые, похоже, нужны только в IntelliSence?).


Примеры уже были, тот же калькулятор.

M>4. Попытка использовать PEGGrammar из C# сразу провалилась — нет атрибута PegGrammarAttribute! Получается, это только Немерловое решение?


Естественно. Это макрос который генерит код парсера. Генерить произвольный код во время компиляции в C# не умеет.
Зато полученный парсер вполне юзабелен откуда угодно в .net.
Re[2]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.10 18:08
Оценка:
Здравствуйте, matumba, Вы писали:

M>1. Статья напоминает расширенную документацию к PEGGrammar. Это её прямое назначение или это должно было быть введением для новичков?


Это и есть документация.

M>2. Неплохо бы расписать роль PEGGrammar в цепочке компиляторных модулей — что даём на вход, что происходит внутри, что имеем на выходе и как этот выход использовать.


На входе грамматика и обработчики. На выходе то что эти обработчики сформируют.

M>3. Хотя бы небольшой пример грамматики (раз уж так подробно расписываются возможности макроса), но желательно с охватом всех этих возможностей — чтобы наглядно было видно, что и зачем применять. Я, например, не уловил назначение "точки восстановления" (которую можно вставлять практически после любого правила) и "точки отсечения" (которые, похоже, нужны только в IntelliSence?).


Для этого нужно отдельную статью писать. Примеров же масса. Загляни в сниппетыю

M>4. Попытка использовать PEGGrammar из C# сразу провалилась — нет атрибута PegGrammarAttribute! Получается, это только Немерловое решение?


Естественно. Это же макрос. Причем синтаксический. Шарпу такое даже не снилось.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Макрос PegGrammar
От: hardcase Пират http://nemerle.org
Дата: 12.12.10 18:23
Оценка:
Здравствуйте, matumba, Вы писали:

M>3. Хотя бы небольшой пример грамматики (раз уж так подробно расписываются возможности макроса), но желательно с охватом всех этих возможностей — чтобы наглядно было видно, что и зачем применять. Я, например, не уловил назначение "точки восстановления" (которую можно вставлять практически после любого правила) и "точки отсечения" (которые, похоже, нужны только в IntelliSence?).


Посмотри грамматику препроцессора C# и как он работает с полученным AST (интерпретирует код).
Препроцессорный парсер: PreParser.n
AST: PreParser_AST.n
Препроцессор: Preprocessor.n
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.10 18:26
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Посмотри грамматику препроцессора C# и как он работает с полученным AST (интерпретирует код).


Это слишком сложно для начала. Грамматики калькулятора и джейсона тут будут более кстати.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Макрос PegGrammar
От: hardcase Пират http://nemerle.org
Дата: 12.12.10 18:33
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Это слишком сложно для начала. Грамматики калькулятора и джейсона тут будут более кстати.


Грамматику джейсона стоит отрефакторить. Я вижу как мои первые потуги в деле использования PEG-а уже пошли копипастой: правила вида UPPERCASE = "закорючка" это не круто.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Макрос PegGrammar
От: hardcase Пират http://nemerle.org
Дата: 12.12.10 18:36
Оценка:
Здравствуйте, VladD2, Вы писали:

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


H>>Посмотри грамматику препроцессора C# и как он работает с полученным AST (интерпретирует код).


VD>Это слишком сложно для начала. Грамматики калькулятора и джейсона тут будут более кстати.


Парсер там примитивный — он последовательно перебирает комментарии и директивы. А вот уже о вложенности директив заботится сам препроцессор.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.10 19:45
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Грамматику джейсона стоит отрефакторить. Я вижу как мои первые потуги в деле использования PEG-а уже пошли копипастой: правила вида UPPERCASE = "закорючка" это не круто.


Ну, так помоги товарищу советом или физически.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.10 19:47
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Парсер там примитивный — он последовательно перебирает комментарии и директивы. А вот уже о вложенности директив заботится сам препроцессор.


Я не заочно говорил. Я посмотрел что у тебя получилось. Для новичков это явный перебор. Им нужно что-то простое и короткое (в то числе и в обработчиках).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Макрос PegGrammar
От: adontz Грузия http://adontz.wordpress.com/
Дата: 13.12.10 09:28
Оценка:
Здравствуйте, Чистяков Владислав Юрьевич, Вы писали:

Для меня это стало хорошей вводной статьёй по PEG.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Макрос PegGrammar
От: hardcase Пират http://nemerle.org
Дата: 13.12.10 10:04
Оценка:
Здравствуйте, Чистяков Владислав Юрьевич, Вы писали:

Опечатка:

Игнорирование разбираемого правило значения


Должно быть:

Игнорирование разбираемого правилом значения

/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Макрос PegGrammar
От: jazzer Россия Skype: enerjazzer
Дата: 13.12.10 10:11
Оценка:
Здравствуйте, VladD2, Вы писали:

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


Z>>Только надо ли оно? Даже грамматика C# вполне обозрима и читабельна. Класс сделан partial и методы обработки грамматики разбиты по файлам.


VD>Модульность предназначена не только для борьбы с размерами кода, но и для борьбы с копипастом. Например, почти все сишныеп языки имеют одинаковую грамматику для числе, комментариев и т.п.


Не прошло и полгода

KK>Встроенные парсеры чисел(целых — в разной системе исчисления, с плавающей точкой);
Это все на фиг не нужная белиберда. В Спирете она нужна протому что он весьма убог. Грамматика для перечисленных задач пишется за две минуты.

http://rsdn.ru/forum/nemerle/4042096.1.aspx
Автор: VladD2
Дата: 17.11.10

jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Макрос PegGrammar
От: hardcase Пират http://nemerle.org
Дата: 13.12.10 10:31
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Не прошло и полгода

J>

KK>>Встроенные парсеры чисел(целых — в разной системе исчисления, с плавающей точкой);
J>Это все на фиг не нужная белиберда. В Спирете она нужна протому что он весьма убог. Грамматика для перечисленных задач пишется за две минуты.

J>http://rsdn.ru/forum/nemerle/4042096.1.aspx
Автор: VladD2
Дата: 17.11.10

J>

Там вопрос в том, будут ли эти примитивные правила в ДКА укатываться.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.10 11:04
Оценка: :)
Здравствуйте, jazzer, Вы писали:

J>Не прошло и полгода

J>

KK>>Встроенные парсеры чисел(целых — в разной системе исчисления, с плавающей точкой);
J>Это все на фиг не нужная белиберда. В Спирете она нужна протому что он весьма убог. Грамматика для перечисленных задач пишется за две минуты.

J>http://rsdn.ru/forum/nemerle/4042096.1.aspx
Автор: VladD2
Дата: 17.11.10

J>

Длы тех кто в танке. "Встроенные парсеры" — это парсеры реализованные вручную. Здесь же речь идет о возможности выделять любые правила в отдельные библиотеки. Прочти то что написано в конце того сообщения:

KK>Модульность!!! Чем дальше откладывать эту проблемму, тем, возможно, сложнее будет ее реализовать безболезненно для всех.

Вот это другой вопрос. Вольфхаунд должен был двано это реализовать. Причем должна появиться динамическая расширяемость.
Но вот что-то видимо его отвлекает. Надеюсь, что в обозримом времени он это все допишет.

Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Макрос PegGrammar
От: catbert  
Дата: 13.12.10 14:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Длы тех кто в танке. "Встроенные парсеры" — это парсеры реализованные вручную.


Кстати да, планируется ли поддержка парсеров сырого текста? Типа чтобы вручную прописывать проблемные с точки зрения PEG подпарсеры.
Re[7]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.10 14:40
Оценка:
Здравствуйте, catbert, Вы писали:

C>Кстати да, планируется ли поддержка парсеров сырого текста?


Вот думали для препроцессора сделать такое дело, но решили, что проще отдельный парсер сделать.

C>Типа чтобы вручную прописывать проблемные с точки зрения PEG подпарсеры.


А такие существуют?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.10 15:17
Оценка:
Здравствуйте, WolfHound, Вы писали:

VD>>Что не верно то? Ты уже поясняй свои мысли.

WH>То что ни то ни другое не имеет никакого отношения к OrderedChoice.
WH>Я тебе раз 50 наверное об этом говорил но ты не слушаешь.

Ау... Жду развернутых объяснений. Остальные правки внес. Пока не обновляю статью чтобы не делать два раза одну и ту же работу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Макрос PegGrammar
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.10 15:20
Оценка:
Здравствуйте, adontz, Вы писали:

A>Для меня это стало хорошей вводной статьёй по PEG.


Спасибо! Рад что мой труд кому-то интересен.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.