Esempio n. 1
0
    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)
Esempio n. 2
0
    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