Mojo Source Backend

Mojo source backend exports for CrossGL Translator.

Mojo AST Node definitions

class crosstl.backend.Mojo.MojoAst.ClassNode(name, members, methods, base_classes=None)[source]

Bases: ASTNode

Node representing a class definition

class crosstl.backend.Mojo.MojoAst.DecoratorNode(name, args=None)[source]

Bases: ASTNode

Node representing a decorator

class crosstl.backend.Mojo.MojoAst.ImportNode(module, items=None, alias=None)[source]

Bases: ASTNode

Node representing an import statement

class crosstl.backend.Mojo.MojoAst.IncludeNode(path)[source]

Bases: ASTNode

Node representing an include directive

class crosstl.backend.Mojo.MojoAst.PassNode[source]

Bases: ASTNode

Node representing a pass statement

class crosstl.backend.Mojo.MojoAst.PragmaNode(directive, value=None)[source]

Bases: ASTNode

Node representing a pragma directive

class crosstl.backend.Mojo.MojoAst.SwitchCaseNode(value, statements)[source]

Bases: ASTNode

Node representing a switch case

class crosstl.backend.Mojo.MojoAst.VariableDeclarationNode(vtype, name, value=None, is_var=True)[source]

Bases: VariableNode

Node representing a Mojo variable declaration with type inference

Lexer for importing Mojo source into CrossGL Translator.

class crosstl.backend.Mojo.MojoLexer.MojoLexer(code)[source]

Bases: object

Tokenize Mojo source for the Mojo backend parser.

classmethod from_file(filepath, chunk_size=8192)[source]

Create a lexer instance from a Mojo source file.

Return type:

MojoLexer

token_generator()[source]

Yield Mojo tokens while skipping whitespace and comments.

Return type:

Iterator[Tuple[str, str]]

tokenize()[source]

Return the full token stream as (token_type, text) tuples.

Return type:

List[Tuple[str, str]]

Parser for Mojo source AST construction.

class crosstl.backend.Mojo.MojoParser.MojoParser(tokens)[source]

Bases: object

Parse Mojo tokens into the Mojo backend AST.

eat(token_type)[source]

Consume the current token when it matches token_type.

parse()[source]

Parse the complete Mojo token stream into a module AST.

parse_module()[source]

Parse top-level Mojo imports, declarations, and functions.

parse_type()[source]

Parse a type, which might be a generic type with square brackets

skip_comments()[source]

Advance past comment tokens before parsing syntax.

Reverse code generator that emits CrossGL from Mojo AST nodes.

class crosstl.backend.Mojo.MojoCrossGLCodeGen.MojoToCrossGLConverter[source]

Bases: object

Serialize Mojo backend AST nodes back into CrossGL source.

generate(ast)[source]

Generate complete CrossGL source from a parsed Mojo AST.

generate_expression(expr)[source]

Render a Mojo backend expression node as CrossGL syntax.

generate_function(func, indent=1)[source]

Render one Mojo function node as a CrossGL function.

map_semantic(attributes)[source]

Map Mojo decorators or attributes to CrossGL semantic annotations.

map_type(mojo_type)[source]

Map a Mojo type name to the closest CrossGL type name.