From 216a7ac1ecde92e366e02f74e88f28eebf33b903 Mon Sep 17 00:00:00 2001 From: Bryan Bishop Date: Thu, 26 Apr 2012 10:51:37 -0500 Subject: [PATCH] better comment handling in textpre.py --- textpre.py | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/textpre.py b/textpre.py index d84d85519..e7f191a95 100644 --- a/textpre.py +++ b/textpre.py @@ -266,14 +266,28 @@ chars = { } for l in sys.stdin: - # strip comments - line = l.partition(";") - i = 0 asm = "" - while i < len(line) and l[0] != ";": - asm = asm + line[i] - i = i + 1 + comment = None + in_quotes = False + in_comment = False + for letter in l: + if in_comment: + comment += letter + elif in_quotes and letter != "\"": + asm += letter + elif in_quotes and letter == "\"": + in_quotes = False + asm += letter + elif not in_quotes and letter == "\"": + in_quotes = True + asm += letter + elif not in_quotes and letter != "\"": + if letter == ";": + in_comment = True + comment = ";" + else: + asm += letter # skip asm with no quotes if "\"" not in asm: @@ -339,3 +353,6 @@ for l in sys.stdin: else: sys.stdout.write(token) even = not even + + if comment != None: + sys.stdout.write(comment)