From c1059859bee3ff3a8389dabdb857f38549746379 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 19 Oct 2012 14:49:41 +0200 Subject: [PATCH] Better error messages --- packages/Makefile | 1 + src/parsed_text.py | 145 ++++++++++++++++++++++++--------------------- 2 files changed, 77 insertions(+), 69 deletions(-) diff --git a/packages/Makefile b/packages/Makefile index b523cb8..07d5d8e 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -1,5 +1,6 @@ include version default: + set -x rm *.rpm *.tar.gz *.exe.gz 2> /dev/null ;\ VERSION=$(VERSION) epm -f portable -a noarch -m noarch irpf90 irpf90.list ;\ cd noarch ;\ diff --git a/src/parsed_text.py b/src/parsed_text.py index cf17e19..fdcf47b 100644 --- a/src/parsed_text.py +++ b/src/parsed_text.py @@ -339,48 +339,52 @@ def move_variables(): old_elsevars = [] revtext = list(text) revtext.reverse() - for vars,line in revtext: - if type(line) in [ End_provider,End ]: - varlist = [] - append( ([],line) ) - elif type(line) in [ Endif, End_select ]: - old_ifvars.append( list(ifvars) ) - old_elsevars.append( list(elsevars) ) - old_varlist.append( list(varlist) ) - varlist = [] - append( ([],line) ) - elif type(line) == Else: - elsevars += list(varlist) - append( (varlist,line) ) - varlist = [] - elif type(line) in [ Elseif, Case ]: - ifvars += list(varlist) - append( (varlist,line) ) - if vars != []: - varlist = old_varlist.pop() - varlist += vars + try: + for vars,line in revtext: + if type(line) in [ End_provider,End ]: + varlist = [] + append( ([],line) ) + elif type(line) in [ Endif, End_select ]: + old_ifvars.append( list(ifvars) ) + old_elsevars.append( list(elsevars) ) old_varlist.append( list(varlist) ) - varlist = [] - elif type(line) in [ If, Select ]: - ifvars += list(varlist) - append( (varlist,line) ) - vars += filter(lambda x: x in elsevars, ifvars) - ifvars = old_ifvars.pop() - elsevars = old_elsevars.pop() - varlist = old_varlist.pop() + vars - elif type(line) in [ Begin_provider, Program, Subroutine, Function ]: - varlist += vars - append( (varlist,line) ) - if old_varlist != [] \ - or old_ifvars != [] \ - or old_elsevars != []: - error.fail(line,"End if missing") - varlist = [] - elif type(line) == Provide_all: - append( (vars,line) ) - else: - varlist += vars - append( ([],line) ) + varlist = [] + append( ([],line) ) + elif type(line) == Else: + elsevars += list(varlist) + append( (varlist,line) ) + varlist = [] + elif type(line) in [ Elseif, Case ]: + ifvars += list(varlist) + append( (varlist,line) ) + if vars != []: + varlist = old_varlist.pop() + varlist += vars + old_varlist.append( list(varlist) ) + varlist = [] + elif type(line) in [ If, Select ]: + ifvars += list(varlist) + append( (varlist,line) ) + vars += filter(lambda x: x in elsevars, ifvars) + ifvars = old_ifvars.pop() + elsevars = old_elsevars.pop() + varlist = old_varlist.pop() + vars + elif type(line) in [ Begin_provider, Program, Subroutine, Function ]: + varlist += vars + append( (varlist,line) ) + if old_varlist != [] \ + or old_ifvars != [] \ + or old_elsevars != []: + error.fail(line,"End if missing") + varlist = [] + elif type(line) == Provide_all: + append( (vars,line) ) + else: + varlist += vars + append( ([],line) ) + except: + error.fail(line,"Unable to parse file") + result.reverse() # 2nd pass @@ -389,34 +393,37 @@ def move_variables(): append = result.append old_varlist = [] varlist = [] - for vars,line in text: - if vars != []: - vars = make_single(vars) - if type(line) in [ Begin_provider, Program, Subroutine, Function ]: - varlist = list(vars) - elif type(line) in [ If, Select ]: - old_varlist.append(varlist) - vars = filter(lambda x: x not in varlist,vars) - varlist = make_single(varlist + vars) - assert old_varlist is not varlist - elif type(line) in [ Elseif, Else, Case ]: - varlist = old_varlist.pop() - old_varlist.append(varlist) - vars = filter(lambda x: x not in varlist,vars) - varlist = make_single(varlist + vars) - assert old_varlist is not varlist - elif type(line) in [ Endif, End_select ]: - varlist = old_varlist.pop() - elif type(line) == Provide_all: - vars += varlist - 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) ) + try: + for vars,line in text: + if vars != []: + vars = make_single(vars) + if type(line) in [ Begin_provider, Program, Subroutine, Function ]: + varlist = list(vars) + elif type(line) in [ If, Select ]: + old_varlist.append(varlist) + vars = filter(lambda x: x not in varlist,vars) + varlist = make_single(varlist + vars) + assert old_varlist is not varlist + elif type(line) in [ Elseif, Else, Case ]: + varlist = old_varlist.pop() + old_varlist.append(varlist) + vars = filter(lambda x: x not in varlist,vars) + varlist = make_single(varlist + vars) + assert old_varlist is not varlist + elif type(line) in [ Endif, End_select ]: + varlist = old_varlist.pop() + elif type(line) == Provide_all: + vars += varlist + 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) ) + except: + error.fail(line,"Unable to parse file") return result main_result = []