self.current = [] def exitRow(self, ctx): # getParent() method does not exist, use 'parentCtx' field here. if ctx.parentCtx.getRuleIndex() == CSVParser.RULE_hdr: return m = dict(zip(self.header, self.current)) self.rows.append(m) if __name__ == '__main__': if len(sys.argv) > 1: input_stream = FileStream(sys.argv[1]) else: input_stream = InputStream(sys.stdin.read()) lexer = CSVLexer(input_stream) token_stream = CommonTokenStream(lexer) parser = CSVParser(token_stream) tree = parser.top() lisp_tree_str = tree.toStringTree(recog=parser) print(lisp_tree_str) # listener print("Start Walking...") listener = CsvLoader() walker = ParseTreeWalker() walker.walk(listener, tree) print('result =', listener.rows)