LINUX.ORG.RU

Подскажите что-нибудь про парсеры?

 , ,


1

2

Собственно, сабж. Что можно почитать про парсеры? Желательно, с примерами. Интересно, как вообще парсят конфиги, json, исходный код. Не обмазываются же ифами на каждое ключевое слово?

Для начала книгу дракона. Потом мануал по antlr. Для большинства практических применений этого хватит.

Legioner ★★★★★ ()

«Language Implementation Patterns» от автора ANTLR неплохая.

xaizek ★★★★★ ()

Я в своё время написал самопальный парсер примитивного вида конфига,

[section_1]
key_1 = value_1
...
key_n = value_n

[section_2]
key_1 = value_1
...
key_n = value_n

который используется так,

char* value = r_string ( "section_1", "key_1" );

за пару часов.

По ходу дела нужно будет решить, как хранить данные, обрабатывать ошибки синтаксиса, возможно, комментарии. Также учесть поддержку базовых типов, чтобы можно было прочитать float например. Некоторое понимание придёт.

Если JSON, то почитай про сериализацию и десериализацию (для похожих целей ещё используют XML). К примеру, посредством рефлексии, таким образом можно заполнять и выгружать целые объекты, а не отдельные их поля.

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

PhysShell ()
Последнее исправление: PhysShell (всего исправлений: 1)
Ответ на: комментарий от PhysShell

Внезапно решил добавить: если именно с позиции разработчика компиляторов интересно взглянуть, можно посмотреть пару лекций на эту тему для ознакомления. Есть даже на ютубе.

А теперь просто интересное задание: написание калькулятора. Того самого. И материал по теме.

Если решишь писать интерпретатор, не пожалеешь, что его сделал.

PhysShell ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей