m2isar.frontends.coredsl2.behavior_model_builder

Attributes

logger

Classes

BehaviorModelBuilder

ANTLR visitor to build an M2-ISA-R behavioral model of a function or instruction

Module Contents

logger[source]
class BehaviorModelBuilder(constants: dict[str, arch.Constant], memories: dict[str, arch.Memory], memory_aliases: dict[str, arch.Memory], fields: dict[str, arch.BitFieldDescr], functions: dict[str, arch.Function], warned_fns: set[str])[source]

Bases: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Visitor

Inheritance diagram of m2isar.frontends.coredsl2.behavior_model_builder.BehaviorModelBuilder

ANTLR visitor to build an M2-ISA-R behavioral model of a function or instruction of a CoreDSL 2 specification.

_constants[source]
_memories[source]
_memory_aliases[source]
_fields[source]
_scalars[source]
_functions[source]
warned_fns[source]
visitChildren(node)[source]

Helper method to return flatter results on tree visits.

aggregateResult(aggregate, nextResult)[source]

Aggregate results from multiple children into a list.

visitProcedure_call(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Procedure_callContext)[source]

Generate a procedure (method call without return value) call.

visitMethod_call(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Method_callContext)[source]

Generate a function (method call with return value) call.

visitBlock(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.BlockContext)[source]

Generate a block of statements, return a list.

visitDeclaration(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.DeclarationContext)[source]

Generate a declaration statement. Can be multiple declarations of the same type at once. Each declaration can have an initial value.

visitBreak_statement(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Break_statementContext)[source]
visitReturn_statement(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Return_statementContext)[source]

Generate a return statement.

visitWhile_statement(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.While_statementContext)[source]

Generate a while loop.

visitDo_statement(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Do_statementContext)[source]

Generate a do .. while loop.

visitFor_statement(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.For_statementContext)[source]

Generate a for loop. Currently hacky, untested and mostly broken.

visitFor_condition(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.For_conditionContext)[source]

Generate the condition of a for loop.

visitIf_statement(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.If_statementContext)[source]

Generate an if statement. Packs all if, else if and else branches into one object.

visitConditional_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Conditional_expressionContext)[source]

Generate a ternary expression.

visitBinary_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Binary_expressionContext)[source]

Generate a binary expression.

abstract visitPreinc_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Preinc_expressionContext)[source]

Generate a pre-increment expression. Not yet supported, throws NotImplementedError.

abstract visitPostinc_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Preinc_expressionContext)[source]

Generate a post-increment expression. Not yet supported, throws NotImplementedError.

visitPrefix_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Prefix_expressionContext)[source]

Generate an unary expression.

visitParens_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Parens_expressionContext)[source]

Generate a parenthesized expression.

visitSlice_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Slice_expressionContext)[source]

Generate a slice expression. Depending on context, this is translated to either an actual m2isar.metamodel.behav.SliceOperation`or an :class:`m2isar.metamodel.behav.IndexedReference if a :class:`m2isar.metamodel.arch.Memory object is to be sliced.

visitConcat_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Concat_expressionContext)[source]

Generate a concatenation expression.

visitAssignment_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Assignment_expressionContext)[source]

Generate an assignment. If a combined arithmetic-assignment is present, generate an additional binary operation and use it as the RHS.

visitReference_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Reference_expressionContext)[source]

Generate a simple reference.

visitInteger_constant(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Integer_constantContext)[source]

Generate an integer literal.

visitCharacter_constant(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Character_constantContext)[source]

Generate a character literal. Converts directly to uint8.

visitBool_constant(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Bool_constantContext)[source]

Generate a boolean literal. Converts directly to uint1.

visitCast_expression(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Cast_expressionContext)[source]

Generate a type cast.

visitType_specifier(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Type_specifierContext)[source]

Generate a generic type specifier.

visitInteger_type(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Integer_typeContext)[source]

Generate an integer type specifier.

visitVoid_type(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Void_typeContext)[source]

Generate a void type specifier.

visitBool_type(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Bool_typeContext)[source]

Generate a bool type specifier. Aliases to unsigned<1>.

visitInteger_signedness(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Integer_signednessContext)[source]

Generate integer signedness.

visitInteger_shorthand(ctx: m2isar.frontends.coredsl2.parser_gen.CoreDSL2Parser.Integer_shorthandContext)[source]

Lookup a shorthand type specifier.