def srcDirective(data, attributes): shortHand = attributes[Attributes.handler] properName = attributes[Attributes.name] location = attributes[Attributes.location] srcFile = open(os.path.join(data.dir, location), "r") srcText = srcFile.read() srcFile.close() return Utility.CodeUnit(shortHand, properName, srcText)
def parse(data, srcDir): output = "" main = open(os.path.join(srcDir, source_name), "r") text = main.read() main.close() data.dir = srcDir codeUnits = [] directives = CmdParser.preProcess(data, text) for directive in directives: try: directiveType = directive[Attributes.directive_type] attributes = directive if CmdParser.caseInsensitiveEqv(directiveType, DirectiveTypes.src): codeUnit = CmdParser.srcDirective(data, attributes) codeUnits.append(codeUnit) if CmdParser.caseInsensitiveEqv(directiveType, DirectiveTypes.log): data.logs += CmdParser.logDirective(data, attributes) except Exception as e: raise Exception( "Something went wrong with handling directive \n\"{}\" \n". format(directive) + str(e)) if addCarbonCode: codeUnits.append( Utility.CodeUnit(carbonCode[shortHand], carbonCode[properName], text)) initOverhead = r"// Building Code Units" + "\n" \ + Utility.CodeUnitParser.evalBuild(data, codeUnits) \ + "\n\n" output += CmdParser.parseCmds(data, text, initOverhead) + "\n\n" output += r"// Chaining" + "\n" output += CmdParser.chain(data) return output