diff options
Diffstat (limited to 'tools/net/sunrpc/xdrgen/subcmds/source.py')
| -rw-r--r-- | tools/net/sunrpc/xdrgen/subcmds/source.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/tools/net/sunrpc/xdrgen/subcmds/source.py b/tools/net/sunrpc/xdrgen/subcmds/source.py index 2024954748f0..bc7d38802df3 100644 --- a/tools/net/sunrpc/xdrgen/subcmds/source.py +++ b/tools/net/sunrpc/xdrgen/subcmds/source.py @@ -8,7 +8,6 @@ import logging from argparse import Namespace from lark import logger -from lark.exceptions import UnexpectedInput from generators.source_top import XdrSourceTopGenerator from generators.enum import XdrEnumGenerator @@ -23,6 +22,7 @@ from xdr_ast import _XdrAst, _XdrEnum, _XdrPointer from xdr_ast import _XdrStruct, _XdrTypedef, _XdrUnion from xdr_parse import xdr_parser, set_xdr_annotate +from xdr_parse import make_error_handler, XdrParseError logger.setLevel(logging.INFO) @@ -92,19 +92,19 @@ def generate_client_source(filename: str, root: Specification, language: str) -> # cel: todo: client needs PROC macros -def handle_parse_error(e: UnexpectedInput) -> bool: - """Simple parse error reporting, no recovery attempted""" - print(e) - return True - - def subcmd(args: Namespace) -> int: """Generate encoder and decoder functions""" set_xdr_annotate(args.annotate) parser = xdr_parser() with open(args.filename, encoding="utf-8") as f: - parse_tree = parser.parse(f.read(), on_error=handle_parse_error) + source = f.read() + try: + parse_tree = parser.parse( + source, on_error=make_error_handler(source, args.filename) + ) + except XdrParseError: + return 1 ast = transform_parse_tree(parse_tree) match args.peer: case "server": |
