mirror of
https://github.com/mudabbir-ahmad/MYOL-TB2-prog3-Py.git
synced 2026-10-07 19:40:21 +00:00
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import sys
|
|
|
|
from antlr4 import *
|
|
|
|
from HelloLexer import HelloLexer
|
|
from HelloParser import HelloParser
|
|
from HelloListener import HelloListener
|
|
|
|
from TreesUser import TreesUser # contains Marina's PrettyPrint()
|
|
|
|
def main(argv):
|
|
if len(argv) == 1:
|
|
inpstream = StdinStream()
|
|
else:
|
|
inpname = argv[1]
|
|
inpstream = FileStream(inpname)
|
|
# The lexer analyses the characters on inpstream and produces tokens
|
|
lexer = HelloLexer(inpstream)
|
|
# on the token stream (belonging to a standard ANTLR class)
|
|
tokstream = CommonTokenStream(lexer)
|
|
# The parser produces an abstract syntax tree
|
|
parser = HelloParser(tokstream)
|
|
# When we execute the parse, we need to give it the starting rule of our grammar,
|
|
listener = HelloListener()
|
|
|
|
# which in our case is 'greeting' (as defined in hello.g4)
|
|
tree = parser.greeting()
|
|
tree = parser.bye()
|
|
|
|
# traditional Lisp-style parse tree
|
|
print(TreesUser.toStringTree(tree, None, parser))
|
|
# pretty-print the parse tree
|
|
print(TreesUser.PrettyPrint(tree, None, parser))
|
|
if __name__ == '__main__':
|
|
main(sys.argv)
|
|
|
|
|
|
|