Ejemplo n.º 1
0
	def __init__(self, filename, line, *args):
		CodeItemBase.__init__(self, filename, line, *args)

		argdict = {}
		for arg in self.args:
			if '.' in arg.name:
				self.error("Illegal argument name: '.' is not allowed. Found '%s'" % arg.name)

			if arg.datatype == 'void':
				self.error("Illegal data type: 'void' is not a valid data type for arguments")

			if arg.name in argdict:
				self.error("Duplicate argument name: '%s'" % arg.name)

			argdict[arg.name] = arg

		self.argdict = argdict

		localdict = {}
		for local in self.locals:
			if '.' in local.name:
				self.error("Illegal local variable name: '.' is not allowed. Found '%s'" % local.name)

			if local.datatype == 'void':
				self.error("Illegal data type: 'void' is not a valid data type for local variables")

			if local.name in localdict or local.name in argdict:
				self.error("Duplicate variable name: '%s'" % local.name)

			localdict[local.name] = local

		self.localdict = localdict
Ejemplo n.º 2
0
Archivo: function.py Proyecto: zr40/scc
	def __init__(self, filename, line, *args):
		CodeItemBase.__init__(self, filename, line, *args)

		if len(self.args) + len(self.locals) > 6:
			self.error("Function '%s' has %d arguments and local variables. At most 6 arguments and local variables are allowed" % (name, len(args) + len(locals)))

		argdict = {}
		for arg in self.args:
			if '.' in arg.name:
				self.error("Illegal argument name: '.' is not allowed. Found '%s'" % arg.name)

			if arg.datatype == 'void':
				self.error("Illegal data type: 'void' is not a valid data type for arguments")

			if arg.name in argdict:
				self.error("Duplicate argument name: '%s'" % arg.name)

			argdict[arg.name] = arg

		self.argdict = argdict

		localdict = {}
		for local in self.locals:
			if '.' in local.name:
				self.error("Illegal local variable name: '.' is not allowed. Found '%s'" % local.name)

			if local.datatype == 'void':
				self.error("Illegal data type: 'void' is not a valid data type for local variables")

			if local.name in localdict or local.name in argdict:
				self.error("Duplicate variable name: '%s'" % local.name)

			localdict[local.name] = local

		self.localdict = localdict