From cdab9bb2c0ba76fb186659b1c337d3d00d43ef89 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 3 Mar 2011 15:46:21 +0100 Subject: [PATCH] Introduced nodep Version:1.1.64 --- src/irpf90_t.py | 6 ++++++ src/parsed_text.py | 17 +++++++++++++++-- src/preprocessed_text.py | 1 + src/version.py | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/irpf90_t.py b/src/irpf90_t.py index 63e5093..9af0fe1 100644 --- a/src/irpf90_t.py +++ b/src/irpf90_t.py @@ -284,6 +284,12 @@ class Provide(Line): def __repr__(self): return "%20s:%5d : %s"%("Provide",self.i,self.text) +class NoDep(Line): + def __init__(self,i,text,filename): + Line.__init__(self,i,text,filename) + def __repr__(self): + return "%20s:%5d : %s"%("NoDep",self.i,self.text) + class Return (Line): def __init__(self,i,text,filename): Line.__init__(self,i,text,filename) diff --git a/src/parsed_text.py b/src/parsed_text.py index 2d3bf2a..2a03c00 100644 --- a/src/parsed_text.py +++ b/src/parsed_text.py @@ -169,6 +169,13 @@ def get_parsed_text(): if v not in variables.keys(): error.fail(line,"Variable %s is unknown"%(v)) append( (l,Simple_line(line.i,"!%s"%(line.text),line.filename)) ) + elif type(line) == NoDep: + l = line.lower.split()[1:] + for v in l: + if v not in variables.keys(): + error.fail(line,"Variable %s is unknown"%(v)) + l = map(lambda x: "-%s"%(x), l) + append( (l,Simple_line(line.i,"!%s"%(line.text),line.filename)) ) elif type(line) in [ Touch, SoftTouch ]: vars = line.lower.split() if len(vars) < 2: @@ -244,7 +251,7 @@ parsed_text = get_parsed_text() def move_to_top(text,t): assert type(text) == list - assert t in [ Declaration, Implicit, Use, Cont_provider ] + assert t in [ NoDep, Declaration, Implicit, Use, Cont_provider ] inside = False for i in range(len(text)): @@ -264,6 +271,7 @@ def move_to_top(text,t): result = [] for filename,text in parsed_text: + text = move_to_top(text,NoDep) text = move_to_top(text,Declaration) text = move_to_top(text,Implicit) text = move_to_top(text,Use) @@ -396,6 +404,10 @@ def move_variables(): elif type(line) in [ End_provider, End ]: assert old_varlist == [] varlist = [] + for v in vars[:]: + if v[0] == '-': + vars.remove(v) + vars.remove(v[1:]) result.append( (vars,line) ) return result @@ -462,6 +474,7 @@ build_needs() result = [] for filename,text in parsed_text: + text = move_to_top(text,NoDep) text = move_to_top(text,Declaration) text = move_to_top(text,Implicit) text = move_to_top(text,Use) @@ -494,7 +507,7 @@ check_opt() ###################################################################### if __name__ == '__main__': for i in range(len(parsed_text)): - if parsed_text[i][0] == 'eplf_function.irp.f': + if parsed_text[i][0] == 'mo.irp.f': print '!-------- %s -----------'%(parsed_text[i][0]) for line in parsed_text[i][1]: print line[1] diff --git a/src/preprocessed_text.py b/src/preprocessed_text.py index 23203a8..9d3775f 100644 --- a/src/preprocessed_text.py +++ b/src/preprocessed_text.py @@ -59,6 +59,7 @@ simple_dict = { "touch": Touch , "soft_touch": SoftTouch , "provide": Provide , + "no_dep": NoDep , "free": Free , "irp_if": Irp_If , "irp_else": Irp_Else , diff --git a/src/version.py b/src/version.py index 69f627b..6da2d73 100644 --- a/src/version.py +++ b/src/version.py @@ -1 +1 @@ -version = "1.1.63" +version = "1.1.64"