10
0
mirror of https://gitlab.com/scemama/irpf90.git synced 2024-11-19 12:32:22 +01:00
irpf90/src/parsed_text.py

65 lines
1.5 KiB
Python

#!/usr/bin/python
from util import *
from irpf90_t import *
from variables import variables
from preprocessed_text import preprocessed_text
from subroutines import subroutines
import regexps
def find_variables_in_line(line):
assert isinstance(line,Line)
result = []
buffer = regexps.re_string.sub('',line.text)
for v in variables.keys():
var = variables[v]
if var.regexp.search(buffer) is not None:
result.append(var.name)
return result
def get_parsed_text():
result = []
for filename, text in preprocessed_text:
temp_result = []
varlist = []
for line in filter(
lambda x: type(x) not in [ Doc, Begin_doc, End_doc ],
text):
if type(line) in [ \
Empty_line,
Continue,
Return,
Begin_shell,
End_shell,
Openmp,
Use,
Enddo,
End_select,
Endif,
Implicit,
Program,
Subroutine,
Function,
End,
]:
temp_result.append( ([],line) )
elif type(line) in [End, End_provider]:
temp_result.append( ([],line) )
varlist = []
elif isinstance(line,Provide):
l = line.text.split()[1:]
varlist += l
temp_result.append( (l,line) )
else:
l = find_variables_in_line(line)
varlist += l
temp_result.append( (l,line) )
result.append( (filename, temp_result) )
parsed_text = get_parsed_text()
if __name__ == '__main__':
for line in parsed_text[0][1]:
print line