Fix some problems handling multiple filenames

This commit is contained in:
Douglas Clowes
2014-10-30 13:41:02 +11:00
parent d41e77cc79
commit a57852954e

View File

@ -1908,6 +1908,7 @@ def load_file(source_file, depth_list):
return LocalData return LocalData
def dump_source_files(data): def dump_source_files(data):
global SourceFileList, SourceLineList
print "SourceFileList:", SourceFileList print "SourceFileList:", SourceFileList
print "SourceLineList:", SourceLineList print "SourceLineList:", SourceLineList
curr_file = -1 curr_file = -1
@ -1917,44 +1918,38 @@ def dump_source_files(data):
print "File:", SourceFileList[curr_file] print "File:", SourceFileList[curr_file]
print "%4d:" % SourceLineList[line_no][1], line print "%4d:" % SourceLineList[line_no][1], line
def process_source(source_files): def process_source(source_file):
global lexer, yaccer
global PathName, SourceFile global PathName, SourceFile
global TheDrivers global TheDrivers
global NumberOfLinesIn global NumberOfLinesIn, NumberOfLinesOut
global SourceData global SourceData
global PrintedFileName
global SourceFileList, SourceLineList
TheDrivers = {} TheDrivers = {}
# PrintedFileName = -1
# Build the lexer NumberOfLinesIn = 0
# NumberOfLinesOut = 0
lexer = lex.lex() SourceFileList = list()
SourceLineList = list()
PathName = os.path.realpath(os.path.abspath(os.path.dirname(source_file)))
# SourceData = load_file(source_file, [])
# Build the parser NumberOfLinesIn = len(SourceData)
# start_line = lexer.lineno
#yaccer = yacc.yacc(tabmodule="gen_sct",outputdir="/tmp",write_tables=0,debug=0) yaccer.parse('\n'.join(SourceData))
yaccer = yacc.yacc(debug=0) stop_line = lexer.lineno
if Verbose:
for source_file in source_files: print 'Consumed file %s with %d lines (%d, %d)' % \
PathName = os.path.realpath(os.path.abspath(os.path.dirname(source_file))) (source_file, NumberOfLinesIn, start_line, stop_line - 1)
SourceData = load_file(source_file, []) lexer.lineno = 1
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) process_drivers(TheDrivers)
if args.list: if args.list:
dump_source_files(SourceData) dump_source_files(SourceData)
def main(): def main():
global lexer, yaccer
global Verbose global Verbose
global Move global Move
global DriverDump global DriverDump
@ -1993,9 +1988,22 @@ def main():
Verbose = True Verbose = True
else: else:
Verbose = False Verbose = False
source_files = args.driver_source source_files = args.driver_source #
if source_files: if source_files and len(source_files) > 0:
process_source(source_files) # 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__": if __name__ == "__main__":
main() main()