From a57852954ef124944ddc4b5f24f3a84c2682325e Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Thu, 30 Oct 2014 13:41:02 +1100 Subject: [PATCH] Fix some problems handling multiple filenames --- site_ansto/instrument/util/gen_sct.py | 66 +++++++++++++++------------ 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/site_ansto/instrument/util/gen_sct.py b/site_ansto/instrument/util/gen_sct.py index 15853d08..0c2a89d6 100755 --- a/site_ansto/instrument/util/gen_sct.py +++ b/site_ansto/instrument/util/gen_sct.py @@ -1908,6 +1908,7 @@ def load_file(source_file, depth_list): return LocalData def dump_source_files(data): + global SourceFileList, SourceLineList print "SourceFileList:", SourceFileList print "SourceLineList:", SourceLineList curr_file = -1 @@ -1917,44 +1918,38 @@ def dump_source_files(data): print "File:", SourceFileList[curr_file] print "%4d:" % SourceLineList[line_no][1], line -def process_source(source_files): - global lexer, yaccer +def process_source(source_file): global PathName, SourceFile global TheDrivers - global NumberOfLinesIn + global NumberOfLinesIn, NumberOfLinesOut global SourceData + global PrintedFileName + global SourceFileList, SourceLineList TheDrivers = {} - # - # Build the lexer - # - lexer = lex.lex() - - - # - # Build the parser - # - #yaccer = yacc.yacc(tabmodule="gen_sct",outputdir="/tmp",write_tables=0,debug=0) - yaccer = yacc.yacc(debug=0) - - for source_file in source_files: - PathName = os.path.realpath(os.path.abspath(os.path.dirname(source_file))) - SourceData = load_file(source_file, []) - NumberOfLinesIn = len(SourceData) - start_line = lexer.lineno - yaccer.parse('\n'.join(SourceData)) - stop_line = lexer.lineno - if Verbose: - print 'Consumed file %s with %d lines (%d, %d)' % \ - (source_file, NumberOfLinesIn, start_line, stop_line - 1) - lexer.lineno = 1 + PrintedFileName = -1 + NumberOfLinesIn = 0 + NumberOfLinesOut = 0 + SourceFileList = list() + SourceLineList = list() + PathName = os.path.realpath(os.path.abspath(os.path.dirname(source_file))) + SourceData = load_file(source_file, []) + NumberOfLinesIn = len(SourceData) + start_line = lexer.lineno + yaccer.parse('\n'.join(SourceData)) + stop_line = lexer.lineno + if Verbose: + print 'Consumed file %s with %d lines (%d, %d)' % \ + (source_file, NumberOfLinesIn, start_line, stop_line - 1) + lexer.lineno = 1 process_drivers(TheDrivers) if args.list: dump_source_files(SourceData) def main(): + global lexer, yaccer global Verbose global Move global DriverDump @@ -1993,9 +1988,22 @@ def main(): Verbose = True else: Verbose = False - source_files = args.driver_source - if source_files: - process_source(source_files) + source_files = args.driver_source # + if source_files and len(source_files) > 0: + # Build the lexer + # + lexer = lex.lex() + + + # + # Build the parser + # + #yaccer = yacc.yacc(tabmodule="gen_sct",outputdir="/tmp",write_tables=0,debug=0) + yaccer = yacc.yacc(debug=0) + + + for source_file in source_files: + process_source(source_file) if __name__ == "__main__": main()