8 def escapeElementValue(value):
\r
9 value = re.sub("&", "&", value)
\r
10 value = re.sub("<", "<", value)
\r
11 value = re.sub(">", ">", value)
\r
14 def printAst(tuple):
\r
15 printAst2(tuple, 0, 1)
\r
17 def printAst2(tuple, depth, lastline):
\r
19 if not isinstance(tuple[1], types.StringType):
\r
20 element_name = symbol.sym_name[id]
\r
21 print (" " * depth + "<" + element_name + ">")
\r
22 for item in tuple[1:]:
\r
23 lastline = printAst2(item, depth + 1, lastline)
\r
24 print (" " * depth + "</" + element_name + ">")
\r
26 element_name = token.tok_name[id]
\r
27 print (" " * depth + "<" + element_name + " startline=\"" + str(lastline) + "\" endline=\"" + str(tuple[2]) + "\">" + escapeElementValue(tuple[1]) + "</" + element_name + ">")
\r
29 if element_name == "NEWLINE": lastline += 1
\r
32 ast = suite(sys.stdin.read())
\r
33 printAst(ast2tuple(ast, True))
\r