tools/net/sunrpc/xdrgen/xdr_parse.py
Source file repositories/reference/linux-study-clean/tools/net/sunrpc/xdrgen/xdr_parse.py
File Facts
- System
- Linux kernel
- Corpus path
tools/net/sunrpc/xdrgen/xdr_parse.py- Extension
.py- Size
- 5217 bytes
- Lines
- 175
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: tools
- Status
- atlas-only
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
#!/usr/bin/env python3
# ex: set filetype=python:
"""Common parsing code for xdrgen"""
import sys
from typing import Callable
from lark import Lark
from lark.exceptions import UnexpectedInput, UnexpectedToken, VisitError
# Set to True to emit annotation comments in generated source
annotate = False
# Set to True to emit enum value validation in decoders
enum_validation = True
# Map internal Lark token names to human-readable names
TOKEN_NAMES = {
"__ANON_0": "identifier",
"__ANON_1": "number",
"SEMICOLON": "';'",
"LBRACE": "'{'",
"RBRACE": "'}'",
"LPAR": "'('",
"RPAR": "')'",
"LSQB": "'['",
"RSQB": "']'",
"LESSTHAN": "'<'",
"MORETHAN": "'>'",
"EQUAL": "'='",
"COLON": "':'",
"COMMA": "','",
"STAR": "'*'",
"$END": "end of file",
}
class XdrParseError(Exception):
"""Raised when XDR parsing fails"""
def set_xdr_annotate(set_it: bool) -> None:
"""Set 'annotate' if --annotate was specified on the command line"""
global annotate
annotate = set_it
def get_xdr_annotate() -> bool:
"""Return True if --annotate was specified on the command line"""
return annotate
def set_xdr_enum_validation(set_it: bool) -> None:
"""Set 'enum_validation' based on command line options"""
global enum_validation
enum_validation = set_it
def get_xdr_enum_validation() -> bool:
"""Return True when enum validation is enabled for decoder generation"""
return enum_validation
def make_error_handler(source: str, filename: str) -> Callable[[UnexpectedInput], bool]:
"""Create an error handler that reports the first parse error and aborts.
Args:
source: The XDR source text being parsed
Annotation
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.