mirror of
https://gitlab.com/scemama/irpf90.git
synced 2024-06-24 06:02:07 +02:00
71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
#!/usr/bin/python
|
|
|
|
from irpf90_t import *
|
|
from variable import *
|
|
from variables import variables
|
|
|
|
class Fmodule(object):
|
|
|
|
def __init__(self,text,filename):
|
|
self.text = text
|
|
self.name = "%s_mod"%(filename[:-6].lower())
|
|
|
|
def is_main(self):
|
|
if '_is_main' not in self.__dict__:
|
|
buffer = filter(lambda x: isinstance(x[1],Program),self.text)
|
|
self._is_main = (buffer != [])
|
|
return self._is_main
|
|
is_main = property(is_main)
|
|
|
|
def variables(self):
|
|
if '_variables' not in self.__dict__:
|
|
from variables import variables
|
|
name = self.name
|
|
self._variables = filter(lambda x: variables[x].fmodule == name, variables)
|
|
return self._variables
|
|
variables = property(variables)
|
|
|
|
def head(self):
|
|
if '_head' not in self.__dict__:
|
|
self._head = None
|
|
return self._head
|
|
head = property(head)
|
|
|
|
def needed_vars(self):
|
|
if '_needed_vars' not in self.__dict__:
|
|
result = map(lambda x: variables[x].needs,self.variables)
|
|
result = make_single ( flatten(result) )
|
|
self._needed_vars = result
|
|
return self._needed_vars
|
|
needed_vars = property(needed_vars)
|
|
|
|
def generated_text(self):
|
|
if '_generated_text' not in self.__dict__:
|
|
self._generated_text = None
|
|
return self._generated_text
|
|
generated_text = property(generated_text)
|
|
|
|
def residual_text(self):
|
|
if '_residual_text' not in self.__dict__:
|
|
self._residual_text = None
|
|
return self._residual_text
|
|
residual_text = property(residual_text)
|
|
|
|
def needed_modules(self):
|
|
if '_needed_modules' not in self.__dict__:
|
|
buffer = filter(lambda x: isinstance(x,Use), self.generated_text)
|
|
buffer = map(lambda x: x.text.split()[1].lower(), buffer)
|
|
self._needed_modules = make_single(buffer)
|
|
return self._needed_modules
|
|
needed_modules = property(needed_modules)
|
|
|
|
if __name__ == '__main__':
|
|
from parsed_text import parsed_text
|
|
for filename, text in parsed_text:
|
|
if filename == 'electrons.irp.f':
|
|
x = Fmodule(text,filename)
|
|
break
|
|
print x.needed_vars
|
|
print x.is_main
|
|
|