Add ANTLR grammar for greetings and farewells with corresponding parser and listener implementations

This commit is contained in:
bobbert committed 2026-03-26 15:32:19 +00:00
1 parent 2027302cf1
commit 6205020013
30 files changed
+1109 -37

No files matched your search

+18 -7
View File
@@ -1,27 +1,38 @@
import sys
from antlr4 import *
from HelloLexer import HelloLexer
from HelloParser import HelloParser
from HelloListener import HelloListener
from antlr4.tree.Trees import Trees
from TreesUser import TreesUser # contains Marina's PrettyPrint()
def main(argv):
if len(argv) == 1:
InputStream = StdinStream()
inpstream = StdinStream()
else:
inpname = argv[1]
InputStream = FileStream(inpname)
lexer = HelloLexer(InputStream)
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()
tree = parser.start()
# which in our case is 'greeting' (as defined in hello.g4)
tree = parser.greeting()
tree = parser.bye()
print(Trees.toStringTree(tree, None, parser))
# 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)