typeparser module

binaryninja.typeparser.BasicTypeParserResult(...)

binaryninja.typeparser.CoreTypeParser([handle])

binaryninja.typeparser.ParsedType(name, ...)

binaryninja.typeparser.QualifiedNameTypeAndId(...)

binaryninja.typeparser.TypeParser([handle])

binaryninja.typeparser.TypeParserError(...)

binaryninja.typeparser.TypeParserResult(...)

class BasicTypeParserResult(types: Dict[ForwardRef('types.QualifiedName'), ForwardRef('types.Type')], variables: Dict[ForwardRef('types.QualifiedName'), ForwardRef('types.Type')], functions: Dict[ForwardRef('types.QualifiedName'), ForwardRef('types.Type')])[source]

Bases: object

Parameters:
functions: Dict[QualifiedName, Type]
types: Dict[QualifiedName, Type]
variables: Dict[QualifiedName, Type]
class CoreTypeParser(handle=None)[source]

Bases: TypeParser

get_option_text(option: TypeParserOption, value: str) str | None[source]

Get the string representation of an option for passing to parse_type_*

Parameters:
Returns:

A string representing the option if the parser supports it, otherwise None

Return type:

str | None

parse_type_string(source: str, platform: Platform, existing_types: List[QualifiedNameTypeAndId] | None = None) Tuple[Tuple[types.QualifiedNameType, Type] | None, List[TypeParserError]][source]

Parse a single type and name from a string containing their definition.

Parameters:
  • source (str) – Source code to parse

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (List[QualifiedNameTypeAndId] | None) – Optional map of all existing types to use for parsing context

Returns:

A tuple of (result, errors) where result is a tuple of (type, name) or None of there was a fatal error.

Return type:

Tuple[Tuple[types.QualifiedNameType, Type] | None, List[TypeParserError]]

parse_types_from_source(source: str, file_name: str, platform: Platform, existing_types: List[QualifiedNameTypeAndId] | None = None, options: List[str] | None = None, include_dirs: List[str] | None = None, auto_type_source: str = '') Tuple[TypeParserResult | None, List[TypeParserError]][source]

Parse an entire block of source into types, variables, and functions

Parameters:
  • source (str) – Source code to parse

  • file_name (str) – Name of the file containing the source (optional: exists on disk)

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (List[QualifiedNameTypeAndId] | None) – Optional map of all existing types to use for parsing context

  • options (List[str] | None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str] | None) – Optional list of directories to include in the header search path

  • auto_type_source (str) – Optional source of types if used for automatically generated types

Returns:

A tuple of (result, errors) where the result is None if there was a fatal error

Return type:

Tuple[TypeParserResult | None, List[TypeParserError]]

preprocess_source(source: str, file_name: str, platform: Platform, existing_types: List[QualifiedNameTypeAndId] | None = None, options: List[str] | None = None, include_dirs: List[str] | None = None) Tuple[str | None, List[TypeParserError]][source]

Preprocess a block of source, returning the source that would be parsed

Parameters:
  • source (str) – Source code to process

  • file_name (str) – Name of the file containing the source (does not need to exist on disk)

  • platform (Platform) – Platform to assume the source is relevant to

  • existing_types (List[QualifiedNameTypeAndId] | None) – Optional map of all existing types to use for parsing context

  • options (List[str] | None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str] | None) – Optional list of directories to include in the header search path

Returns:

A tuple of (preproccessed source, errors), where the preproccessed source is None if there was a fatal error.

Return type:

Tuple[str | None, List[TypeParserError]]

class ParsedType(name: 'types.QualifiedNameType', type: 'types.Type', is_user: bool)[source]

Bases: object

Parameters:
  • name (types.QualifiedNameType) –

  • type (Type) –

  • is_user (bool) –

is_user: bool
name: types.QualifiedNameType
type: Type
class QualifiedNameTypeAndId(name: 'types.QualifiedNameType', id: str, type: 'types.Type')[source]

Bases: object

Parameters:
  • name (types.QualifiedNameType) –

  • id (str) –

  • type (Type) –

id: str
name: types.QualifiedNameType
type: Type
class TypeParser(handle=None)[source]

Bases: object

get_option_text(option: TypeParserOption, value: str) str | None[source]

Get the string representation of an option for passing to parse_type_*

Parameters:
Returns:

A string representing the option if the parser supports it, otherwise None

Return type:

str | None

parse_type_string(source: str, platform: Platform, existing_types: List[QualifiedNameTypeAndId] | None = None) Tuple[Tuple[types.QualifiedNameType, Type] | None, List[TypeParserError]][source]

Parse a single type and name from a string containing their definition.

Parameters:
  • source (str) – Source code to parse

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (List[QualifiedNameTypeAndId] | None) – Optional map of all existing types to use for parsing context

Returns:

A tuple of (result, errors) where result is a tuple of (type, name) or None of there was a fatal error.

Return type:

Tuple[Tuple[types.QualifiedNameType, Type] | None, List[TypeParserError]]

parse_types_from_source(source: str, file_name: str, platform: Platform, existing_types: List[QualifiedNameTypeAndId] | None = None, options: List[str] | None = None, include_dirs: List[str] | None = None, auto_type_source: str = '') Tuple[TypeParserResult | None, List[TypeParserError]][source]

Parse an entire block of source into types, variables, and functions

Parameters:
  • source (str) – Source code to parse

  • file_name (str) – Name of the file containing the source (optional: exists on disk)

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (List[QualifiedNameTypeAndId] | None) – Optional map of all existing types to use for parsing context

  • options (List[str] | None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str] | None) – Optional list of directories to include in the header search path

  • auto_type_source (str) – Optional source of types if used for automatically generated types

Returns:

A tuple of (result, errors) where the result is None if there was a fatal error

Return type:

Tuple[TypeParserResult | None, List[TypeParserError]]

preprocess_source(source: str, file_name: str, platform: Platform, existing_types: List[QualifiedNameTypeAndId] | None = None, options: List[str] | None = None, include_dirs: List[str] | None = None) Tuple[str | None, List[TypeParserError]][source]

Preprocess a block of source, returning the source that would be parsed

Parameters:
  • source (str) – Source code to process

  • file_name (str) – Name of the file containing the source (does not need to exist on disk)

  • platform (Platform) – Platform to assume the source is relevant to

  • existing_types (List[QualifiedNameTypeAndId] | None) – Optional map of all existing types to use for parsing context

  • options (List[str] | None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str] | None) – Optional list of directories to include in the header search path

Returns:

A tuple of (preproccessed source, errors), where the preproccessed source is None if there was a fatal error.

Return type:

Tuple[str | None, List[TypeParserError]]

register()[source]

Register a custom parser with the API

name = None
class TypeParserError(severity: TypeParserErrorSeverity, message: str, file_name: str, line: int, column: int)[source]

Bases: object

Parameters:
column: int
file_name: str
line: int
message: str
severity: TypeParserErrorSeverity
class TypeParserResult(types: List[ParsedType], variables: List[ParsedType], functions: List[ParsedType])[source]

Bases: object

Parameters:
functions: List[ParsedType]
types: List[ParsedType]
variables: List[ParsedType]
preprocess_source(source: str, filename: str = None, include_dirs: List[str] | None = None) Tuple[str | None, str][source]

preprocess_source run the C preprocessor on the given source or source filename.

Parameters:
  • source (str) – source to pre-process

  • filename (str) – optional filename to pre-process

  • include_dirs (list(str)) – list of string directories to use as include directories.

Returns:

returns a tuple of (preprocessed_source, error_string)

Return type:

tuple(str,str)

Example:
>>> source = "#define TEN 10\nint x[TEN];\n"
>>> preprocess_source(source)
('#line 1 "input"\n\n#line 2 "input"\n int x [ 10 ] ;\n', '')
>>>

Deprecated since version 3.4.4271: Use TypeParser.preprocess_source instead.

to_bytes(field)[source]