Но погодите — есть более удобный способ исследования структур деревьев синтаксического анализа. На рис. 19.1 показано дерево синтаксического анализа, созданное для строки 1 + 3 * (2 * 3 + 4), которое изображается в окне PyTree, программы с графическим интерфейсом для визуализации деревьев, представленной в конце главы 18. Это возможно только потому, что модуль parser2 явно строит дерево синтаксического анализа (модуль parser1 производит вычисления во время анализа), и благодаря общности и возможности повторного использования программного кода PyTree.
Если вы читали предыдущую главу, то вспомните, что программа Py- Tree способна нарисовать структуру данных почти любого дерева, но изначально настроена для работы с двоичными деревьями поиска и деревьями синтаксического анализа, которые изучаются в этой главе. Если в отображаемом дереве щелкнуть на изображении узла, будет вычислено значение поддерева с корнем в этом узле.
Программа PyTree облегчает процесс изучения и экспериментирования с парсером. Для определения формы дерева, получающегося для заданного выражения, запустите PyTree, щелкните на переключателе Parser (Парсер), введите выражение в поле ввода внизу и щелкните на кнопке input (ввести) (или нажмите клавишу Enter). Для генерации дерева по введенным данным будет запущен класс парсера, и графический интерфейс отобразит результат. В зависимости от операторов, используемых в выражении, некоторые деревья, весьма существенно отличающиеся по форме, возвращают один и тот же результат.
Рис. 19.1. Дерево синтаксического анализа для строки «1 + 3 * (2 * 3 + 4)»
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011