コード例 #1
0
 def _fill_interpolation(self, n):
     text = n.format_string.value
     parser = Parser()
     format_string, expressions = self._extract_interpolations(text)
     exprs = [parser.parse(expr) for expr in expressions]
     n.format_string.value = format_string
     n.expressions.exprs.extend(exprs)
コード例 #2
0
 def _load_file(self, path):
     with open(path, 'r') as f:
         source = f.read()
         print source
         parser = Parser()
         transformer = AstTransformer()
         ast = parser.parse(source)
         transformer.visit(ast)
         return ast
コード例 #3
0
ファイル: setlxc.py プロジェクト: jcklie/setlx2py
    argparser.add_argument("-o", required=True, help="output file", metavar="FILE",
                        type=lambda x: is_writable(argparser,x))
    
    argparser.add_argument("-v", required=False, help="verbosity", action="store_true")
    return argparser

if  __name__ == '__main__':    
    args = build_argparser().parse_args()
    
    source = ""
    
    with open(args.i, 'r') as input_file:
        source = input_file.read()    
    
    parser = Parser()
    ast = parser.parse(source)
    
    if args.v: log_ast(ast)
        
    # Load files
    # We just search for calls to the 'load' function
        
    to_replace = {} # Stores which Call nodes to replace with AST from loaded file
    for i, stmt in enumerate(ast.stmts):
        if isinstance(stmt, Call) and stmt.name.name == 'load':
            path = stmt.args.arguments[0].value
            to_replace[i] = path
    
    # Second loop as you do not want to alter a list you are iterating on            
    for i, path in to_replace.items():        
        with open(path, 'r') as f: