m2isar.frontends.coredsl2.behavior_model_builder
Attributes
Classes
ANTLR visitor to build an M2-ISA-R behavioral model of a function or instruction |
Module Contents
- 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
ANTLR visitor to build an M2-ISA-R behavioral model of a function or instruction of a CoreDSL 2 specification.
- 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.