コード例 #1
0
ファイル: PyASDLHandler.py プロジェクト: EvelynHf/basil
 def emit_classes (self, self_contained = False):
     code_list = ["#! /usr/bin/env python"]
     if self_contained:
         code_list += ["class AST (object):",
                       ["def __eq__ (self, other):",
                        ["return ((type(self) == type(other))",
                         ["and (self.__dict__ == other.__dict__))"]],
                        ],
                       "",
                       ]
     else:
         code_list += ["from basil.lang.asdl.AST import AST",
                       ""]
     # __________________________________________________
     self.base_classes.sort()
     for base_class_name in self.base_classes:
         code_list += ["class %s (AST):" % base_class_name,
                       ["pass"], ""]
     # __________________________________________________
     class_names = self.classes.keys()
     class_names.sort()
     for class_name in class_names:
         base_class, class_body = self.classes[class_name]
         if base_class is None:
             base_class = "AST"
         code_list += ["class %s (%s):" % (class_name, base_class),
                       class_body, ""]
     return "\n".join(pgen2LL1.gen_code_lines(code_list))
コード例 #2
0
ファイル: MetaAST.py プロジェクト: EvelynHf/basil
def main (*args):
    import pprint
    handler = MetaASDLHandler()
    for arg in args:
        pt = asdl.parse(arg)
        module = handler.handle(pt)
        print module.emit_md()
        for ty in module._types:
            print ty.emit_md()
        print
        print "\n".join(pgen2LL1.gen_code_lines(module.emit_code()))
コード例 #3
0
ファイル: MetaAST.py プロジェクト: EvelynHf/basil
 def emit_code (self, *args, **kws):
     code_lines = ["#! /usr/bin/env python", "",
                   "from basil.lang.asdl.AST import AST", ""]
     for module in self.modules:
         module.emit_code(code_lines)
     return "\n".join(pgen2LL1.gen_code_lines(code_lines))