Изучение лексического сканирования и анализа с нуля - PullRequest
1 голос
/ 23 июня 2011

Мне было интересно, может ли кто-нибудь предложить проекты, которые реализуют простые лексеры и парсеры (без помощи таких инструментов, как lex и yacc), чтобы я мог взглянуть на источник. Я заинтересован в этой теме, и прежде чем я хотел бы увидеть и изучить, как они могут быть реализованы вручную.

Ответы [ 3 ]

1 голос
/ 24 июня 2011

Книга Дракона очень хороша в этом. Очень подробно рассмотрим всю технологию компиляции. Это включает в себя большой раздел о разборе и разборе деревьев.

http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools

0 голосов
/ 24 июня 2011

Если вы хотите увидеть код для рукописных парсеров, то я предлагаю поискать gcc и различные xml-парсеры.Вы можете начать читать с здесь об архитектуре gcc.Введите «исходный код парсера xml» в своей любимой поисковой системе, и у вас будет множество примеров парсеров xml.Если вас больше интересует, как писать нативные библиотеки синтаксических анализаторов, которые не требуют дополнительного этапа генерации кода, вы можете взглянуть на boost :: Spirit (C ++) или AX (C ++ 0x),Также проверьте эту таблицу для различных проектов, некоторые из них предлагают исходный код, но вам придется заняться майнингом самостоятельно.

0 голосов
/ 23 июня 2011

Зайдите на antlr.org и прочитайте о том, как работает ANTLR.Кроме того, Полная ссылка ANTLR определенно стоит своих денег.Плюс ANTLR имеет большое и очень полезное сообщество пользователей.Да, ANTLR - это инструмент, но вы можете посмотреть на источник.Разработка ваших собственных лексеров и парсеров, вероятно, не то, что вы хотите делать в долгосрочной перспективе, но вы, конечно, будете писать свои собственные грамматики.Грамматика ANTLR v3 очень удобна в использовании.

...