def generate_bsvcpp(filelist, project_dir, bsvdefines, interfaces, bsvpath): for inputfile in filelist: syntax_parse(open(inputfile).read(), inputfile, bsvdefines, bsvpath) ## code generation pass ilist = [] for i in interfaces: ifc = globalv.globalvars.get(i) if not ifc: print('Connectal: Unable to locate the interface:', i) for keys in globalv.globalvars: print(' ', keys) sys.exit(1) ifc = ifc.instantiate(dict(zip(ifc.params, ifc.params))) ilist.append(ifc) for ditem in ifc.decls: for pitem in ditem.params: thisType = pitem.type p = globalv.globalvars.get(thisType.name) if p and thisType.params and p.params: myName = '%sL_%s_P' % (thisType.name, '_'.join( [t.name for t in thisType.params if t])) pitem.oldtype = pitem.type pitem.type = AST.Type(myName, []) if not globalv.globalvars.get(myName): globalv.add_new( AST.TypeDef( p.tdtype.instantiate( dict(zip(p.params, thisType.params))), myName, [])) jsondata = AST.serialize_json(ilist, globalimports, bsvdefines) if project_dir: cppgen.generate_cpp(project_dir, noisyFlag, jsondata) bsvgen.generate_bsv(project_dir, noisyFlag, False, jsondata)
def generate_bsvcpp(filelist, project_dir, bsvdefines, interfaces): for inputfile in filelist: syntax_parse(open(inputfile).read(),inputfile, bsvdefines) ## code generation pass ilist = [] for i in interfaces: ifc = globalv.globalvars.get(i) if not ifc: print 'Connectal: Unable to locate the interface:', i for keys in globalv.globalvars: print ' ', keys sys.exit(1) ifc = ifc.instantiate(dict(zip(ifc.params, ifc.params))) ilist.append(ifc) for ditem in ifc.decls: for pitem in ditem.params: thisType = pitem.type p = globalv.globalvars.get(thisType.name) if p and thisType.params and p.params: myName = '%sL_%s_P' % (thisType.name, '_'.join([t.name for t in thisType.params if t])) pitem.oldtype = pitem.type pitem.type = AST.Type(myName, []) if not globalv.globalvars.get(myName): globalv.add_new(AST.TypeDef(p.tdtype.instantiate(dict(zip(p.params, thisType.params))), myName, [])) jsondata = AST.serialize_json(ilist, globalimports, bsvdefines) if project_dir: cppgen.generate_cpp(project_dir, noisyFlag, jsondata) bsvgen.generate_bsv(project_dir, noisyFlag, False, jsondata)
def p_packageStmt(p): '''packageStmt : interfaceDecl | typeClassDecl | functionDef | instanceDecl | varDecl SEMICOLON | varAssign SEMICOLON | moduleDef | macroDef | typeDef | importBviDef''' globalv.add_new(p[1])