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")
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]
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")
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")
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)
def parse_args(self, args): parsed_args = [] for arg in args: parsed_args.append(text.PlainStringContext(arg, self).parse().strip()) return parsed_args