:py:mod:`dissect.cstruct.expression` ==================================== .. py:module:: dissect.cstruct.expression Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.cstruct.expression.ExpressionTokenizer dissect.cstruct.expression.Expression Attributes ~~~~~~~~~~ .. autoapisummary:: dissect.cstruct.expression.HEXBIN_SUFFIX .. py:data:: HEXBIN_SUFFIX .. py:class:: ExpressionTokenizer(expression: str) .. py:method:: equal(token: str, expected: str | set[str]) -> bool .. py:method:: alnum(token: str) -> bool .. py:method:: alpha(token: str) -> bool .. py:method:: digit(token: str) -> bool .. py:method:: hexdigit(token: str) -> bool .. py:method:: operator(token: str) -> bool .. py:method:: match(func: Optional[Callable[[str], bool]] = None, expected: Optional[str | set[str]] = None, consume: bool = True, append: bool = True) -> bool .. py:method:: consume() -> None .. py:method:: eol() -> bool .. py:method:: get_token() -> str .. py:method:: tokenize() -> list[str] .. py:class:: Expression(cstruct: Expression.__init__.cstruct, expression: str) Expression parser for calculations in definitions. .. py:attribute:: operators .. py:attribute:: precedence_levels .. py:method:: __repr__() -> str Return repr(self). .. py:method:: precedence(o1: str, o2: str) -> bool .. py:method:: evaluate_exp() -> None .. py:method:: is_number(token: str) -> bool .. py:method:: evaluate(context: Optional[dict[str, int]] = None) -> int Evaluates an expression using a Shunting-Yard implementation.