| #!/usr/bin/env python3 |
| # ex: set filetype=python: |
| |
| """Common parsing code for xdrgen""" |
| |
| from lark import Lark |
| |
| |
| # Set to True to emit annotation comments in generated source |
| annotate = False |
| |
| |
| 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 xdr_parser() -> Lark: |
| """Return a Lark parser instance configured with the XDR language grammar""" |
| |
| return Lark.open( |
| "grammars/xdr.lark", |
| rel_to=__file__, |
| start="specification", |
| debug=True, |
| strict=True, |
| propagate_positions=True, |
| parser="lalr", |
| lexer="contextual", |
| ) |