Простой парсер


Парсер — это сленговое слово от английского parse (сущ. анализ, разбор, производить структурный анализ). Так называют программы/библиотеки которые производят соответствующие действие, применяются во многих областях ИТ, в той или иной форме.


Эта статья предлагает рассмотрение общих принципов работы компиляторов и как они пишутся. Будет рассмотрен простой синтаксический анализ методом рекурсивного спуска — калькулятор математических выражений.


Основной упор хотелось бы сделать на примеры реализации кода, но без теории это сделать сложно. Примеры будут приводится на JAVA и код соответственно прилогается.

Основа любого компилятора, интерпретатора и др. является синтаксический анализатор — это та часть которая собственно из набора символов создает программу.

Задача перед синтаксическим анализатором (парсингом) — создание из последовательности символов дерева операций конечного языка:
 

В дальнейшем это дерево интерпретируется тем или иным способом.

Общая схема устройства

В большинстве случаев парсер состоит из двух основных механизмов: лексического и синтаксического анализатора.

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

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


Исходный код http://gocha.org/webstart/parser/01/lang-build.zip
PDF версия: http://gocha.org/webstart/parser/01/parser.pdf

Комментариев нет:

Отправить комментарий