Отладка абстрактного синтаксического дерева (AST).
Во время работы над парсером постоянно возникала необходимость посмотреть как выглядит тот или иной кусок дерева или все дерево целиком. Недолго думая, я попробовал выводить его в виде XML, - получилось довольно неплохо.
Исходный код на C:
typedef void *LPVOID;
Дерево, полученное после синтаксического разбора:
<translation_unit>
<external_declaration>
<declaration>
<init_list_declaration>
<declaration_specifiers>
<declaration_specifier>
<storage_class_specifier>
typedef
</storage_class_specifier>
</declaration_specifier>
<declaration_specifier>
<type_specifier>
<builtin_type>
void
</builtin_type>
</type_specifier>
</declaration_specifier>
</declaration_specifiers>
<init_declarator>
<declarator>
<pointer>
*
</pointer>
<direct_declarator>
LPVOID
</direct_declarator>
</declarator>
</init_declarator>
</init_list_declaration>
;
</declaration>
</external_declaration>
</translation_unit>