allow parser syntax errors to stop parser tree walking
This commit is contained in:
parent
af2bd818da
commit
f38e5c77ee
|
@ -177,11 +177,7 @@ class OscCommentMacroListener(CommentMacroListener):
|
||||||
if ctx.target()is None:
|
if ctx.target()is None:
|
||||||
logger.error("ERROR: limited to fading specified masters only.")
|
logger.error("ERROR: limited to fading specified masters only.")
|
||||||
return
|
return
|
||||||
try:
|
level = ctx.number().value
|
||||||
level = ctx.number().value
|
|
||||||
except AttributeError:
|
|
||||||
logger.error("ERROR: level arument is required!")
|
|
||||||
return
|
|
||||||
if (level < 0 or level > 100):
|
if (level < 0 or level > 100):
|
||||||
logger.error("Level must be between 0 and 100.")
|
logger.error("Level must be between 0 and 100.")
|
||||||
return
|
return
|
||||||
|
|
14
comment.py
14
comment.py
|
@ -20,12 +20,19 @@ import configparser
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from antlr4.error.ErrorListener import ErrorListener
|
||||||
from CommentMacroLexer import CommentMacroLexer
|
from CommentMacroLexer import CommentMacroLexer
|
||||||
from CommentMacroParser import CommentMacroParser
|
from CommentMacroParser import CommentMacroParser
|
||||||
from OscCommentMacroListener import OscCommentMacroListener
|
from OscCommentMacroListener import OscCommentMacroListener
|
||||||
from pythonosc import udp_client
|
from pythonosc import udp_client
|
||||||
|
|
||||||
|
|
||||||
|
# define an error listener that raises SyntaxError exceptions
|
||||||
|
class SyntaxErrorListener(ErrorListener):
|
||||||
|
def syntaxError(self, recognizer, offendingSymbol, line, column, msg, e):
|
||||||
|
raise SyntaxError('line ' + str(line) + ': ' + msg)
|
||||||
|
|
||||||
|
|
||||||
# setup logging
|
# setup logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.DEBUG)
|
||||||
|
@ -50,7 +57,12 @@ def comment(text):
|
||||||
lexer = CommentMacroLexer(input_stream)
|
lexer = CommentMacroLexer(input_stream)
|
||||||
stream = antlr4.CommonTokenStream(lexer)
|
stream = antlr4.CommonTokenStream(lexer)
|
||||||
parser = CommentMacroParser(stream)
|
parser = CommentMacroParser(stream)
|
||||||
tree = parser.prog()
|
parser._listeners = [SyntaxErrorListener()]
|
||||||
|
try:
|
||||||
|
tree = parser.prog()
|
||||||
|
except SyntaxError as e:
|
||||||
|
logger.error(e)
|
||||||
|
return
|
||||||
oscMacro = OscCommentMacroListener(servers)
|
oscMacro = OscCommentMacroListener(servers)
|
||||||
walker = antlr4.ParseTreeWalker()
|
walker = antlr4.ParseTreeWalker()
|
||||||
walker.walk(oscMacro, tree)
|
walker.walk(oscMacro, tree)
|
||||||
|
|
Loading…
Reference in New Issue