def go (args): with open (args.file) as f: asn1def = f.read() parse_tree = parser.parse_asn1(asn1def) modules = build_semantic_model(parse_tree) assert (len(modules) == 1) base, ext = os.path.splitext (args.file) parts = os.path.split (base) module_name = parts[-1] if args.outdir: path = args.outdir else: path = "." if args.lang == 'python': from tinyber.py_nodes import PythonBackend as Backend from tinyber import py_nodes as nodes elif args.lang == 'c': from tinyber.c_nodes import CBackend as Backend from tinyber import c_nodes as nodes # pull in the python-specific node implementations walker = Walker (modules[0], nodes) walker.walk() backend = Backend (args, walker, module_name, path) backend.generate_code()
def go(args): with open(args.file) as f: asn1def = f.read() parse_tree = parser.parse_asn1(asn1def) modules = build_semantic_model(parse_tree) assert (len(modules) == 1) base, ext = os.path.splitext(args.file) parts = os.path.split(base) module_name = parts[-1] if args.outdir: path = args.outdir else: path = "." if args.lang == 'python': from tinyber.py_nodes import PythonBackend as Backend from tinyber import py_nodes as nodes elif args.lang == 'c': from tinyber.c_nodes import CBackend as Backend from tinyber import c_nodes as nodes # pull in the python-specific node implementations walker = Walker(modules[0], nodes) walker.walk() backend = Backend(args, walker, module_name, path) backend.generate_code()
def main(): args = parse_args() with open(args.file) as f: asn1def = f.read() if args.outdir and (args.parse or args.sema): print('ERROR: can only use --outdir with --gen') return 1 parse_tree = parser.parse_asn1(asn1def) if args.parse: parser.print_parse_tree(parse_tree) return 0 modules = sema.build_semantic_model(parse_tree) if args.sema: for module in modules: print(module) return 0 if args.gen: for module in modules: generate_module_code(args, module, modules) return 0
def realise(incdirs, restargs): defmods = {} refmods = {} incdirs.append(os.path.curdir) for file_ in restargs: modnm = os.path.basename(file_).lower() dprint('Parsing ASN.1 syntaxdef for "%s"', modnm) with open(file_, 'r') as asn1fh: asn1txt = asn1fh.read() asn1tree = parser.parse_asn1(asn1txt) dprint('Building semantic model for "%s"', modnm) asn1sem = build_semantic_model(asn1tree) defmods[os.path.basename(file_)] = asn1sem[0] refmods[os.path.splitext(modnm)[0]] = asn1sem[0] dprint('Realised semantic model for "%s"', modnm) imports = list(refmods.keys()) while len(imports) > 0: dm = refmods[imports.pop(0).lower()] if not dm.imports: continue for rm in dm.imports.imports.keys(): rm = str(rm).lower() if rm not in refmods: dprint('Importing ASN.1 include for "%s"', rm) modfh = None for incdir in incdirs: try: modfh = open(incdir + os.path.sep + rm + '.asn1', 'r') break except IOError: continue if modfh is None: raise Exception( 'No include file "{}.asn1" found'.format(rm)) asn1txt = modfh.read() asn1tree = parser.parse_asn1(asn1txt) dprint('Building semantic model for "%s"', rm) asn1sem = build_semantic_model(asn1tree) refmods[rm] = asn1sem[0] imports.append(rm) dprint('Realised semantic model for "%s"', rm) return defmods, refmods
def realise(incdirs, restargs): defmods = {} refmods = {} incdirs.append(os.path.curdir) for file_ in restargs: modnm = os.path.basename(file_).lower() dprint('Parsing ASN.1 syntaxdef for "%s"', modnm) with open(file_, 'r') as asn1fh: asn1txt = asn1fh.read() asn1tree = parser.parse_asn1(asn1txt) dprint('Building semantic model for "%s"', modnm) asn1sem = build_semantic_model(asn1tree) defmods[os.path.basename(file_)] = asn1sem[0] refmods[os.path.splitext(modnm)[0]] = asn1sem[0] dprint('Realised semantic model for "%s"', modnm) imports = list(refmods.keys()) while len(imports) > 0: dm = refmods[imports.pop(0).lower()] if not dm.imports: continue for rm in dm.imports.imports.keys(): rm = str(rm).lower() if rm not in refmods: dprint('Importing ASN.1 include for "%s"', rm) modfh = None for incdir in incdirs: try: modfh = open(incdir + os.path.sep + rm + '.asn1', 'r') break except IOError: continue if modfh is None: raise Exception('No include file "{}.asn1" found'.format(rm)) asn1txt = modfh.read() asn1tree = parser.parse_asn1(asn1txt) dprint('Building semantic model for "%s"', rm) asn1sem = build_semantic_model(asn1tree) refmods[rm] = asn1sem[0] imports.append(rm) dprint('Realised semantic model for "%s"', rm) return defmods, refmods
def main(): args = parse_args() with open(args.file) as f: asn1def = f.read() parse_tree = parser.parse_asn1(asn1def) if args.parse: parser.print_parse_tree(parse_tree) return 0 modules = sema.build_semantic_model(parse_tree) if args.sema: for module in modules: print(module) return 0 if args.gen: for module in modules: print(pygen.auto_generated_header(args.file, __version__)) pyasn1gen.generate_pyasn1(module, sys.stdout, modules) return 0
def main(): args = parse_args() with open(args.file) as f: asn1def = f.read() if args.outdir and not args.gen: print('ERROR: can only use --outdir with --gen', file=sys.stderr) return 1 parse_tree = parser.parse_asn1(asn1def) if args.parse: parser.print_parse_tree(parse_tree) return 0 modules = sema.build_semantic_model(parse_tree) if args.sema: for module in modules: print(module) return 0 if args.gen: generate_module_code(args) return 0