pyrser/passes/topython.py
def visit_Hook(self, node: parsing.Hook) -> ast.expr:
        """Generates python code calling a hook.

        self.evalHook('hookname', self.ruleNodes[-1])
        """
        return ast.Call(
            ast.Attribute(
                ast.Name('self', ast.Load()), 'evalHook', ast.Load()),
            [
                ast.Str(node.name),
                ast.Subscript(
                    ast.Attribute(
                        ast.Name('self', ast.Load()), 'ruleNodes', ast.Load()),
                    ast.Index(ast.UnaryOp(ast.USub(), ast.Num(1))),
                    ast.Load())],
            [],
            None,
            None)
def visit_Hook(self, node: parsing.Hook) -> ast.expr:
        return ast.Call(
            ast.Attribute(
                ast.Name('self', ast.Load()), 'evalHook', ast.Load()),
            [
                ast.Str(node.name),
                ast.Subscript(
                    ast.Attribute(
                        ast.Name('self', ast.Load()), 'ruleNodes', ast.Load()),
                    ast.Index(ast.UnaryOp(ast.USub(), ast.Num(1))),
                    ast.Load())],
            [],
            None,
            None)
def visit_Hook ( self , node : parsing . Hook ) -> ast . expr : return ast . Call ( ast . Attribute ( ast . Name ( 'self' , ast . Load ( ) ) , 'evalHook' , ast . Load ( ) ) , [ ast . Str ( node . name ) , ast . Subscript ( ast . Attribute ( ast . Name ( 'self' , ast . Load ( ) ) , 'ruleNodes' , ast . Load ( ) ) , ast . Index ( ast . UnaryOp ( ast . USub ( ) , ast . Num ( 1 ) ) ) , ast . Load ( ) ) ] , [ ] , None , None )
Generates python code calling a hook.

        self.evalHook('hookname', self.ruleNodes[-1])
Generates python code calling a hook .