コード例 #1
0
    def parse(self, context):

        if len(self.args) != 5:
            raise Exception("@d2 expects exactly 5 arguments")

        else:
            # read derivative operator indices
            try:
                d1indexstring = text.PlainStringContext(
                    self.args[1], context).parse().strip()
                d2indexstring = text.PlainStringContext(
                    self.args[2], context).parse().strip()
            except Exception, e:
                raise Exception("invalid derivative index")

            d1index = num.fromstring(d1indexstring, context)
            d2index = num.fromstring(d2indexstring, context)

            # read d1stencil name
            try:
                d1stencilname = text.PlainStringContext(
                    self.args[3], context).parse().strip()
                d2stencilname = text.PlainStringContext(
                    self.args[4], context).parse().strip()

            except Exception, e:
                raise Exception("invalid stencil name")
コード例 #2
0
    def parse(self, context):
        if len(self.args) != 2:
            raise ValueError("@defaultrange takes exactly two arguments")

        minval = text.PlainStringContext(self.args[0], context).parse()
        maxval = text.PlainStringContext(self.args[1], context).parse()

        minvar = num.ConstantNumber.getinstance(minval)
        maxvar = num.ConstantNumber.getinstance(maxval)

        context.declare('RANGEMIN', minvar)
        context.declare('RANGEMAX', maxvar)
        context.defaultrange = [minvar, maxvar]
コード例 #3
0
    def parse(self, context):
        if len(self.args) > 1:
            raise Exception("@end expects either zero or one argument")

        elif isinstance(context, tag.ExtendedTagContext):

            success = False
            if len(self.args) == 1:
                try:
                    endname = text.PlainStringContext(self.args[0],
                                                      context).parse()
                    success = (endname == context.tagtoken.name)
                except Exception:
                    pass
            elif len(self.args) == 0:
                success = True

            if success:
                raise parser.LeaveContext
            else:
                if not endname:
                    endname = '??'
                raise ValueError("cannot close @" + context.tagtoken.name +
                                 " with @end[[" + endname + "]]")

        else:
            raise Exception("unexpected @end")
コード例 #4
0
ファイル: stencil.py プロジェクト: 168WenFangjun/grx
	def parse(self, context):
		
		if len(self.args) != 1:
			raise Exception("@stencil expects exactly one argument")
		else:
			try:
				stencil_name = text.PlainStringContext(self.args[0], context).parse()
				m = parser.valid_varname.match(stencil_name)
				if (not m) or (m.group(0) != stencil_name):
					raise ValueError
			except Exception, e:
				raise ValueError("invalid stencil name")
コード例 #5
0
ファイル: arraysyntax.py プロジェクト: 168WenFangjun/grx
    def parse(self, context):
        if len(self.args) != 1:
            raise ValueError("@arraysyntax takes exactly one argument")

        syntax = text.PlainStringContext(self.args[0],
                                         context).parse().strip().upper()

        if syntax == 'C':
            context.arraysyntax = 'C'
        elif syntax == 'F' or syntax == 'F90' or syntax == 'FORTRAN':
            context.arraysyntax = 'F'
        else:
            raise Exception("unknown array syntax " + syntax)
コード例 #6
0
ファイル: stencil.py プロジェクト: 168WenFangjun/grx
	def parse_args(self, args):
		parsed_args = []
		for arg in args:
			parsed_args.append(text.PlainStringContext(arg, self).parse().strip())
		return parsed_args