Files

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)