Показанные выше самостоятельные программы парсеров демонстрируют некоторые интересные понятия и подчеркивают мощь языка Python как универсального инструмента программирования. В вашей работе написание парсеров может оказаться одной из типичных задач, которые вы решаете полностью с помощью обычных языков программирования, таких как C. Парсеры являются важным компонентом в широком круге приложений, но в некоторых случаях они не столь необходимы, как может показаться. Позвольте объяснить почему.
К данному моменту мы реализовали механизм анализа выражений и затем добавили интерпретатор дерева синтаксического анализа, чтобы легче было модифицировать программный код. В настоящем виде парсер работает, но, возможно, медленнее, чем реализация на языке C. Если парсер используется часто, можно ускорить его работу, переместив выполнение некоторых операций в модули расширений C. Например, сначала можно перевести на C сканер, потому что он часто вызывается из парсера. В конце концов, можно добавить в грамматику компоненты, позволяющие выражениям обращаться к специфическим для приложения переменным и функциям.
Все это — путь к хорошему проектированию. Но для некоторых приложений такой подход может оказаться не самым лучшим при программировании на Python. Простейшим способом вычисления вводимого выражения в Python часто оказывается вызов встроенной функции eval. На самом деле обычно можно заменить всю программу вычисления выражения одним вызовом функции. В следующем разделе демонстрируется, как можно использовать этот прием, чтобы упростить системы синтаксического анализа в целом.
Важна центральная идея, лежащая в основе языка и подчеркиваемая в следующем разделе: если у вас уже имеется расширяемая, встраиваемая система языка высокого уровня, зачем изобретать еще одну? Python сам часто в состоянии удовлетворить потребности основанных на языке компонентов.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011