document with comments
This commit is contained in:
parent
f9fe9237d0
commit
8a0a3b739d
19
comment.py
19
comment.py
|
@ -74,37 +74,54 @@ except NameError as e:
|
||||||
print('failed to release memory', e)
|
print('failed to release memory', e)
|
||||||
|
|
||||||
|
|
||||||
|
# init reusable walker and listener
|
||||||
walker = ParseTreeWalker()
|
walker = ParseTreeWalker()
|
||||||
listener = OscCommentMacroListener(servers)
|
listener = OscCommentMacroListener(servers)
|
||||||
|
|
||||||
|
|
||||||
|
# main handler for processing input
|
||||||
def comment(text):
|
def comment(text):
|
||||||
|
# force upper case
|
||||||
text = text.upper()
|
text = text.upper()
|
||||||
|
# generate text stream
|
||||||
input_stream = InputStream(text)
|
input_stream = InputStream(text)
|
||||||
|
# lex the text stream
|
||||||
lexer = CommentMacroLexer(input_stream)
|
lexer = CommentMacroLexer(input_stream)
|
||||||
|
# get token stream from lexer
|
||||||
stream = CommonTokenStream(lexer)
|
stream = CommonTokenStream(lexer)
|
||||||
|
# parse the token steam
|
||||||
parser = CommentMacroParser(stream)
|
parser = CommentMacroParser(stream)
|
||||||
|
# attach an error handler to the parser
|
||||||
parser._listeners.append(SyntaxErrorListener())
|
parser._listeners.append(SyntaxErrorListener())
|
||||||
try:
|
try:
|
||||||
|
# get tree from parser
|
||||||
tree = parser.prog()
|
tree = parser.prog()
|
||||||
|
# walk the tree
|
||||||
walker.walk(listener, tree)
|
walker.walk(listener, tree)
|
||||||
except SyntaxError as e:
|
except SyntaxError as e:
|
||||||
logger.debug(e) # antlr internal listener prints the error
|
logger.debug(e) # antlr internal listener prints the error
|
||||||
# # log it to the debug logger anyway
|
# # log it to the debug logger anyway
|
||||||
|
|
||||||
|
|
||||||
|
# handle user input if run directly
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
|
# look for macros passed as arguments
|
||||||
logger.debug("found macro at argv[1]")
|
logger.debug("found macro at argv[1]")
|
||||||
comment(sys.argv[1])
|
comment(sys.argv[1])
|
||||||
else:
|
else:
|
||||||
import readline # for input history and line editing
|
# for input history and line editing
|
||||||
|
import readline
|
||||||
|
# be an interactive shell
|
||||||
while True:
|
while True:
|
||||||
|
# get user input
|
||||||
try:
|
try:
|
||||||
text = input("comment# ")
|
text = input("comment# ")
|
||||||
except (KeyboardInterrupt, EOFError):
|
except (KeyboardInterrupt, EOFError):
|
||||||
text = 'exit'
|
text = 'exit'
|
||||||
print(text)
|
print(text)
|
||||||
|
# catch exit keyword
|
||||||
if text.lower() == 'exit':
|
if text.lower() == 'exit':
|
||||||
break
|
break
|
||||||
|
# exec user input
|
||||||
comment(text)
|
comment(text)
|
||||||
|
|
Loading…
Reference in New Issue