def read_module(f,nested=False): import ivy_logic_parser import ivy_parser header = f.readline() s = '\n' + f.read() # newline at beginning to preserve line numbers header = string.strip(header) if header.startswith('#lang ivy'): version = header[len('#lang ivy'):] old_version = iu.get_string_version() iu.set_string_version(version) if version != old_version: if nested: raise IvyError(None,'#lang ivy{} expected'.format(old_version)) # print "version: {}, old_version: {}".format(version,old_version) clear_rules('ivy_logic_parser') clear_rules('ivy_parser') reload(ivy_logic_parser) reload(ivy_parser) ivy_parser.importer = import_module decls = parse(s,nested) elif header == '//lang dafny1': decls = dc.parse_to_ivy(s) else: err = IvyError(None,'file must begin with "#lang ivyN.N"') err.lineno = 1 if iu.filename: err.filename = iu.filename raise err return decls
def read_module(f, nested=False): import ivy_logic_parser import ivy_parser header = f.readline() s = '\n' + f.read() # newline at beginning to preserve line numbers header = string.strip(header) if header.startswith('#lang ivy'): version = header[len('#lang ivy'):] old_version = iu.get_string_version() iu.set_string_version(version) if version != old_version: if nested: raise IvyError(None, '#lang ivy{} expected'.format(old_version)) # print "version: {}, old_version: {}".format(version,old_version) clear_rules('ivy_logic_parser') clear_rules('ivy_parser') reload(ivy_logic_parser) reload(ivy_parser) ivy_parser.importer = import_module decls = parse(s, nested) elif header == '//lang dafny1': decls = dc.parse_to_ivy(s) else: err = IvyError(None, 'file must begin with "#lang ivyN.N"') err.lineno = 1 if iu.filename: err.filename = iu.filename raise err return decls
def parse_to_ivy(s): dm = dp.parse(s) im = ip.parse(preamble) with ModuleContext(dm,im): dm.to_ivy() print im return im