-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.py
More file actions
51 lines (43 loc) · 1.38 KB
/
Copy pathtest.py
File metadata and controls
51 lines (43 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import sys
from antlr4 import *
import JavaScriptLexer
import JavaScriptParser
JSL = JavaScriptLexer.JavaScriptLexer
JSP = JavaScriptParser.JavaScriptParser
def beautify_lisp_string(in_string):
indent_size = 3
add_indent = ' '*indent_size
out_string = in_string[0] # no indent for 1st (
indent = ''
for i in range(1, len(in_string)):
if in_string[i] == '(' and in_string[i+1] != ' ':
indent += add_indent
out_string += "\n" + indent + '('
elif in_string[i] == ')':
out_string += ')'
if len(indent) > 0:
indent = indent.replace(add_indent, '', 1)
else:
out_string += in_string[i]
return out_string
class WriteTreeListener(ParseTreeListener):
def visitTerminal(self, node:TerminalNode):
print ( node.parentCtx.__dict__)
#+ " - " + repr(node))
def main(argv):
input_stream = FileStream(argv[1])
print("Test started for: " + argv[1])
lexer = JSL(input_stream)
stream = CommonTokenStream(lexer)
stream.fill()
parser = JSP(stream)
#print("Created parsers")
tree = parser.program()
lisp_tree_str = tree.toStringTree(recog=parser)
print(lisp_tree_str)
from pudb import set_trace
#set_trace()
#ParseTreeWalker.DEFAULT.walk(WriteTreeListener(), tree)
if __name__ == '__main__':
print("Running")
main(sys.argv)