riscemu.ExecutableParser module

RiscEmu (c) 2021 Anton Lydike

SPDX-License-Identifier: MIT

This file holds the parser that parses the tokenizer output.

class riscemu.ExecutableParser.ExecutableParser(tokenizer: riscemu.Tokenizer.RiscVTokenizer)

Bases: object

Parses output form the RiscVTokenizer

__init__(tokenizer: riscemu.Tokenizer.RiscVTokenizer)

Initialize self. See help(type(self)) for accurate signature.

tokenizer: riscemu.Tokenizer.RiscVTokenizer
parse()riscemu.Executable.Executable

parse tokenizer output into an executable :return: the parsed executable :raise ParseException: Raises a ParseException when invalid input is read

parse_instruction(ins: riscemu.Tokenizer.RiscVInstructionToken)None

parses an Instruction token :param ins: the instruction token

handle_symbol(token: riscemu.Tokenizer.RiscVSymbolToken)

Handle a symbol token (such as ‘main:’) :param token: the symbol token

handle_pseudo_op(op: riscemu.Tokenizer.RiscVPseudoOpToken)

Handle a pseudo op token (such as ‘.word 0xffaabbcc’) :param op: the peseudo-op token

op_section(op: riscemu.Tokenizer.RiscVPseudoOpToken)

handles a .section token :param op: The token

op_text(op: Optional[riscemu.Tokenizer.RiscVPseudoOpToken] = None)

handles a .text token :param op: The token

op_data(op: Optional[riscemu.Tokenizer.RiscVPseudoOpToken] = None)

handles a .data token :param op: The token

op_rodata(op: Optional[riscemu.Tokenizer.RiscVPseudoOpToken] = None)

handles a .rodata token :param op: The token

op_space(op: riscemu.Tokenizer.RiscVPseudoOpToken)

handles a .space token. Inserts empty space into the current (data or rodata) section :param op: The token

op_ascii(op: riscemu.Tokenizer.RiscVPseudoOpToken)

handles a .ascii token. Inserts ascii encoded text into the currrent data section :param op: The token

op_asciiz(op: riscemu.Tokenizer.RiscVPseudoOpToken)

handles a .ascii token. Inserts nullterminated ascii encoded text into the currrent data section :param op: The token

op_global(op: riscemu.Tokenizer.RiscVPseudoOpToken)

handles a .global token. Marks the token as global :param op: The token

op_set(op: riscemu.Tokenizer.RiscVPseudoOpToken)

handles a .set name, val token. Sets the symbol name to val :param op: The token

op_align(op: riscemu.Tokenizer.RiscVPseudoOpToken)

handles an align token. Currently a nop (just not implemented fully yet, as linker handles most alignement tasks) :param op: The token

op_word(op: riscemu.Tokenizer.RiscVPseudoOpToken)