Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def process_item(self):
apply_map = self.item.apply_map
line = self.item.get_line()[2:].lstrip()[2:].lstrip()
i = line.index(')')
self.items = split_comma(line[1:i], self.item)
line = line[i+1:].lstrip()
if line.startswith(','):
line = line[1:].lstrip()
self.expr = apply_map(line)
return
def tofortran(self, isfix=None):
def process_item(self):
clsname = self.__class__.__name__.lower()
line = self.item.get_line()
if not line.lower().startswith(clsname):
self.isvalid = False
return
line = line[len(clsname):].lstrip()
if line.startswith('::'):
line = line[2:].lstrip()
self.items = split_comma(line, self.item)
return
self.info('looking module information from %r' % (fn))
reader = FortranFileReader(fn, include_dirs=self.reader.include_dirs, source_only=self.reader.source_only)
parser = FortranParser(reader)
parser.parse()
parser.block.a.module.update(modules)
parser.analyze()
modules.update(parser.block.a.module)
if self.name not in modules:
self.warning('no information about the module %r in use statement' % (self.name))
return
module = modules[self.name]
use[self.name] = module
use_provides = self.parent.a.use_provides
renames = [split_comma(item, comma='=>') for item in self.items if '=>' in item]
norenames = [item for item in self.items if '=>' not in item]
all_mod_provides = dict(module.a.module_provides)
all_mod_provides.update(module.a.use_provides)
if self.isonly:
# populate use_provides with items/renames only.
for rename, orig in renames:
self.populate_use_provides(all_mod_provides, use_provides, orig, rename)
for name in norenames:
self.populate_use_provides(all_mod_provides, use_provides, name)
else:
# norenames should be empty
if norenames:
self.warning("'use' without 'only' clause does not rename the variables '%s'" % ', '.join(norenames))
# populate use_provides with renamed vars from module.
for rename, orig in renames:
self.populate_use_provides(all_mod_provides, use_provides, orig, rename)
def process_item(self):
line = self.item.get_line()[10:].lstrip()
if line.startswith('::'):
line = line[2:].lstrip()
self.items = split_comma(line, self.item)
return
def tofortran(self, isfix=None):
def update(self, *attrs):
attributes = self.attributes
if len(attrs)==1 and isinstance(attrs[0],(tuple,list)):
attrs = attrs[0]
for attr in attrs:
lattr = attr.lower()
uattr = attr.upper()
if lattr.startswith('dimension'):
assert self.dimension is None, repr((self.dimension,attr))
l = attr[9:].lstrip()
assert l[0]+l[-1]=='()',repr(l)
self.set_dimension(split_comma(l[1:-1].strip(), self.parent.item))
continue
if lattr.startswith('intent'):
l = attr[6:].lstrip()
assert l[0]+l[-1]=='()',repr(l)
self.set_intent(specs_split_comma(l[1:-1].strip(),
self.parent.item, upper=True))
continue
if lattr.startswith('bind'):
l = attr[4:].lstrip()
assert l[0]+l[-1]=='()',repr(l)
self.bind = specs_split_comma(l[1:-1].strip(), self.parent.item,
upper = True)
continue
if lattr.startswith('check'):
l = attr[5:].lstrip()
assert l[0]+l[-1]=='()',repr(l)
def process_item(self):
line = self.item.get_line()[9:].lstrip()
if line.startswith('('):
i = line.index(')')
name = line[1:i].strip()
line = line[i+1:].lstrip()
else:
name = ''
self.iname = name
if line.startswith(','):
line = line[1:].lstrip()
i = line.find('::')
if i != -1:
attrs = split_comma(line[:i], self.item)
line = line[i+2:].lstrip()
else:
attrs = []
attrs1 = []
for attr in attrs:
if is_name(attr):
attr = attr.upper()
else:
i = attr.find('(')
assert i!=-1 and attr.endswith(')'),repr(attr)
attr = '%s (%s)' % (attr[:i].rstrip().upper(), attr[i+1:-1].strip())
attrs1.append(attr)
self.attrs = attrs1
i = line.find('=')
if i==-1:
self.name = line
if lattr.startswith('intent'):
l = attr[6:].lstrip()
assert l[0]+l[-1]=='()',repr(l)
self.set_intent(specs_split_comma(l[1:-1].strip(),
self.parent.item, upper=True))
continue
if lattr.startswith('bind'):
l = attr[4:].lstrip()
assert l[0]+l[-1]=='()',repr(l)
self.bind = specs_split_comma(l[1:-1].strip(), self.parent.item,
upper = True)
continue
if lattr.startswith('check'):
l = attr[5:].lstrip()
assert l[0]+l[-1]=='()',repr(l)
self.check.extend(split_comma(l[1:-1].strip(), self.parent.item))
continue
if uattr not in attributes:
if uattr not in self.known_attributes:
self.parent.warning('unknown attribute %r' % (attr))
attributes.append(uattr)
return
def process_item(self):
line = self.item.get_line()[7:].lstrip()
if line.startswith(','):
line = line[1:].lstrip()
i = line.index('::')
self.aspec = line[:i].rstrip().upper()
line = line[i+2:].lstrip()
i = line.index('=>')
self.spec = self.item.apply_map(line[:i].rstrip())
self.items = split_comma(line[i+2:].lstrip())
return
def process_item(self):
line = self.item.get_line()[7:].lstrip()[1:-1].strip()
self.items = split_comma(line, self.item)
return
def tofortran(self, isfix=None):
def analyze(self):
for line in self.items:
i = line.find('(')
if i==-1:
name = line
array_spec = None
else:
assert line.endswith(')'),repr(line)
name = line[:i].rstrip()
array_spec = split_comma(line[i+1:-1].strip(), self.item)
var = self.get_variable(name)
var.set_bounds(array_spec)
var.update('pointer')
return