Ejemplo n.º 1
0
    def getName(token, nameOfVar=""):
        if nameOfVar == "":
            nameOfVar = token.token
        package = parser.package

        if nameOfVar in parser.structs[name]:
            if decl:
                if stage and nameOfVar in parser.structs[package]:
                    Error.parseError(parser,
                                     nameOfVar + " is already a struct")
                parser.structs[package][nameOfVar] = parser.structs[name][
                    nameOfVar]
            else:
                Scope.addVar(place, parser, nameOfVar,
                             parser.scope[name][0][nameOfVar])

            names.append((nameOfVar, "full"))
        elif nameOfVar in parser.interfaces[name]:
            if not decl: return

            if stage and nameOfVar in parser.interfaces[package]:
                Error.parseError(parser,
                                 nameOfVar + " is already an interface")
            parser.interfaces[package][nameOfVar] = parser.interfaces[name][
                nameOfVar]
        elif not decl and nameOfVar in parser.scope[name][0]:
            #can't set lambda
            Scope.addAlias(place, package, name, nameOfVar, nameOfVar, parser)

            #Scope.addVar(place, parser, nameOfVar, parser.scope[name][0][nameOfVar])
            names.append((nameOfVar, ""))
        elif not decl:
            Error.parseError(
                parser, "Package " + name +
                " does not have a variable, or type called " + nameOfVar)