我正在尝试使用以下用 python 编写的代码为输入“[a, b=c, [d,e]]”生成抽象语法树。
语法:
list : '[' elements ']'
elements : element (',' element)*
element : NAME '=' NAME
| NAME
| list
抽象语法树代码:
def parse_element(self):
if self.__token_at(1).type == TokenTypes.NAME and self.__token_at(2).type == TokenTypes.EQUALS and self.__token_at(3).type == TokenTypes.NAME:
node = AST(self.__token_at(1))
self.__match(TokenTypes.NAME)
return node
node = AST(self.__token_at(2))
self.__match(TokenTypes.EQUALS)
return node
node = AST(self.__token_at(3))
self.__match(TokenTypes.NAME)
return node
elif self.__token_at(1).type == TokenTypes.NAME:
node = AST(self.__token_at(1))
self.__match(TokenTypes.NAME)
return node
elif self.__token_at(1).type == TokenTypes.LBRACK:
return self.parse_list()
输出: 期待找到 RBRACK <'=', EQUALS> (列表<'a', NAME><'b', NAME>)