Source code for pudding.processor.grammar

"""Module for Grammar class."""

from ..tokens.token import BaseToken

type TokenList = list[BaseToken | tuple[BaseToken, TokenList]]


[docs] class Grammar: """Class representing a grammar. :var lineno: Line number the grammar is defined in. :var name: Name of the grammar. :var tokens: Tokens in this grammar. :var inherits: Name of the inherited grammar or None. """ def __init__( self, lineno: int, name: str, tokens: TokenList, inherits: str | None = None, ) -> None: """Init of Grammar. :param lineno: Line number the grammar is defined in. :param name: Name of the grammar. :param tokens: Tokens in this grammar. :param inherits: Name of the inherited grammar or None. """ self.lineno = lineno self.name = name self.tokens = tokens self.inherits = inherits def __repr__(self) -> str: """Return string representation of this object.""" name = self.__class__.__name__ return f"<{name} {self.name}({self.inherits}) {list(self.tokens)}>"