Nemerle.Peg — .NET генератор парсеров шаговой доступности (Денис Рысцов, ADD-2011)
Аннотация
- Докладчик
- Денис Рысцов
- Применение парсеров в прикладном программировании.
- Описание PEG нотации.
- Генерация парсеров по PEG нотации: packrat и top-down parser with backtracking.
- Nemerle.Peg: разбор текста + построение объектной модели.
- Пример парсера языка разметки JSON.
- Преимущества и недостатки Nemerle.Peg.
Доклад ориентирован на:
- Разработчиков, которые хотят узнать об описании парсеров (грамматик) в нотации PEG.
- .Net разработчиков, которые хотят научиться писать парсеры (и забыть regex как страшный сон).
Видео
- Скачать
http://ftp.linux.kiev.ua/pub/conference/peers/addconf/2011/2c7-parser-development-with-nemerle-rystsov.avs.avi
Для этого доклада нужен подкаст (аудиозапись)?
Примечания и отзывы
Было круто, но по моему, подавляющая часть аудитории не понимала до конца, что, и, главное, КАК там происходит :) ©
Денис рассказал про то, где применяются парсеры в программировании, а затем рассказал про парсер Peg на языке Nemerle.
Так как я занимаюсь разработкой корпоративных приложений, то темя для меня была, в общем, мало знакомая, поэтому получил много новой информации, но не все переварил. Зато в будущем, когда возникнет необходимость написания собственного парсера, полученная информация пригодится и поможет глубже изучить данный вопрос. Денису спасибо за интересный доклад.
©
Доклад начался долгим рассказом про то, как докладчик делал какой-то опрос на хабре. Затем, ближе к теме, рассказал немного о парсерах, упомянул ANTLR — основной конкурент Nemerle.Peg (Peg — Parser Expression Grammar). Привёл для сравнения, статистику по количеству строк кода, необходимых для реализации парсера на ANTLR и Nemerle.Peg, по которой получилось, что последний в 4 раза лаконичнее. Дальше начался livecoding, от простых примеров написания парсера с использованием Nemerle.Peg до парсера JSON. Поскольку про Nemerle я знаю только то, что рассказал Чистяков на предыдущих докладах, понял только, что Nemerle.Peg действительно позволяет написать лаконичный и эффективный парсер.
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».