我正在使用 ANTLRv3。我已经定义了一个语法。现在我想显示解析树(如在 ANTLRWorks 解析树或堆栈中)。我已经尝试过http://www.antlr.org/wiki/display/ANTLR3/Interfacing+AST+with+Java(遍历孩子),但它忽略了语法中的子句,而这些子句不会出现在解析字符串中。
例如。我有一个 SQL 语法。我正在解析 SELECT title,description from document 。在 ANTLRWorks 中,我可以看到(在解析树中) root_statement->select_statement->select_expression->select_list->[displayed_column,displayed_colummn] 这就是我想要的。
但是当我从 root_statement(通过 getChildren)获取 AST 树时,我没有得到 select_statement,select_expression。子项仅适用于“SELECT title,description from document”中的字符串。
我怎样才能像在 ANTLv4 中一样通过树?(root_statement.select_statemet.select_expression)