--- es5.py- 2016-09-01 00:00:00.000000000 +0900 +++ es5.py 2016-09-01 01:00:00.000000000 +0900 @@ -27,22 +27,27 @@ qs = decode( s[:j], tbl ) return [ [ 'str', qs ] ] + div_str( s[j:], tbl ) -def cut_comment(lst): - sta = '/*' - end = '*/' - if sta not in lst: - return lst - i = lst.index(sta) +def cut_comment(s, tbl): + sta = enc( tbl.index('/*') ) + end = enc( tbl.index('*/') ) + if sta not in s: + return '' + i = s.index(sta) if i > 0: - return lst[:i] + cut_comment(lst[i:]) - j = 1 + lst[1:].index(end) + 1 if end in lst[1:] else len(lst) - return cut_comment(lst[j:]) + return s[:i] + cut_comment( s[i:], tbl ) + sta_n = len(sta) + end_n = len(end) + j = sta_n + s[sta_n:].index(end) + end_n if end in s[sta_n:] else len(s) + return cut_comment( s[j:], tbl ) def es_split(s): tbl = [ '/*', '*/', '(', ')', ';', ',', '*', '"', ' ', '\t', '\n' ] s = encode(s, tbl) print('encode:\n{}\n'.format(s)) + s = cut_comment(s, tbl) + print('cut_comment:\n{}\n'.format(s)) + lst = div_str(s, tbl) print('div_str:\n{}\n'.format(lst)) @@ -50,9 +55,6 @@ f2 = lambda t, e: t + f(e) lst = reduce(f2, lst, []) - print('before cut_comment:\n{}\n'.format(lst)) - lst = cut_comment(lst) - return lst if __name__ == "__main__":