def parse(self, qpath_string ):
'''????????
:param qpath_string: QPath???
:type qpath_string: string
:returns: list, list - ?????, ??????
'''
self._last_locator = None
qpath_string = qpath_string.strip()
self._lexer = QPathLexer()
self.tokens = self._lexer.tokens
self._parser = yacc.yacc(module=self, debuglog=self._logger, errorlog=self._logger, write_tables=0)
self._qpath_string = qpath_string
parsed_structs = []
lex_structs = []
for locator in self._parser.parse(qpath_string, self._lexer):
parsed_structs.append(locator.dumps())
lex_struct = {}
for propname in locator:
prop = locator[propname]
lex_struct[prop.name.value] = [prop.name.lexpos, prop.operator.lexpos, prop.value.lexpos]
lex_structs.append(lex_struct)
return parsed_structs, lex_structs
评论列表
文章目录