mirror of
https://github.com/mudabbir-ahmad/MYOL-TB2-prog3-Py.git
synced 2026-10-07 19:40:21 +00:00
Add ANTLR grammar for greetings and farewells with corresponding parser and listener implementations
This commit is contained in:
1 parent
2027302cf1
commit
6205020013
30 files changed
+1109
-37
No files matched your search
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user