Path: blob/master/tools/net/sunrpc/xdrgen/subcmds/lint.py
52072 views
#!/usr/bin/env python31# ex: set filetype=python:23"""Translate an XDR specification into executable code that4can be compiled for the Linux kernel."""56import logging78from argparse import Namespace9from lark import logger10from lark.exceptions import VisitError1112from xdr_parse import xdr_parser, make_error_handler, XdrParseError13from xdr_parse import handle_transform_error14from xdr_ast import transform_parse_tree1516logger.setLevel(logging.DEBUG)171819def subcmd(args: Namespace) -> int:20"""Lexical and syntax check of an XDR specification"""2122parser = xdr_parser()23with open(args.filename, encoding="utf-8") as f:24source = f.read()25try:26parse_tree = parser.parse(27source, on_error=make_error_handler(source, args.filename)28)29except XdrParseError:30return 131try:32transform_parse_tree(parse_tree)33except VisitError as e:34handle_transform_error(e, source, args.filename)35return 13637return 0383940