Rust Source Backend

Rust source backend exports for CrossGL Translator.

Rust AST Node definitions

class crosstl.backend.Rust.RustAst.ArrayNode(elements, size=None)[source]

Bases: ASTNode

Node representing an array literal

class crosstl.backend.Rust.RustAst.AssociatedTypeNode(name, bounds=None, default_type=None, where_clauses=None)[source]

Bases: ASTNode

Node representing a Rust trait associated type declaration.

class crosstl.backend.Rust.RustAst.BlockNode(statements, returns_value=False)[source]

Bases: ASTNode

Node representing a block expression

class crosstl.backend.Rust.RustAst.ConstNode(name, const_type, value, visibility=None)[source]

Bases: ASTNode

Node representing a const declaration

class crosstl.backend.Rust.RustAst.DereferenceNode(expression)[source]

Bases: ASTNode

Node representing a dereference (*)

class crosstl.backend.Rust.RustAst.EnumNode(name, variants, attributes=None, visibility=None, generics=None, where_clauses=None)[source]

Bases: ASTNode

Node representing a Rust enum declaration.

class crosstl.backend.Rust.RustAst.EnumVariantNode(name, kind='unit', fields=None, value=None, attributes=None)[source]

Bases: ASTNode

Node representing one Rust enum variant.

class crosstl.backend.Rust.RustAst.ForNode(pattern, iterable, body)[source]

Bases: ASTNode

Node representing a Rust for-in loop

class crosstl.backend.Rust.RustAst.FunctionNode(return_type, name, params, body, attributes=None, visibility=None, generics=None, where_clauses=None)[source]

Bases: ASTNode

Node representing a Rust function.

class crosstl.backend.Rust.RustAst.GenericParameterNode(name, bounds=None, default=None)[source]

Bases: ASTNode

Node representing a generic parameter

class crosstl.backend.Rust.RustAst.ImplNode(struct_name, methods, trait_name=None, generics=None, where_clauses=None, type_aliases=None)[source]

Bases: ASTNode

Node representing an impl block

class crosstl.backend.Rust.RustAst.LetNode(name, value, var_type=None, is_mutable=False)[source]

Bases: ASTNode

Node representing a let binding

class crosstl.backend.Rust.RustAst.LoopNode(body, label=None)[source]

Bases: ASTNode

Node representing an infinite loop

class crosstl.backend.Rust.RustAst.MatchArmNode(pattern, guard, body)[source]

Bases: ASTNode

Node representing a match arm

class crosstl.backend.Rust.RustAst.MatchNode(expression, arms)[source]

Bases: ASTNode

Node representing a match expression

class crosstl.backend.Rust.RustAst.RangeNode(start, end, inclusive=False, step=None)[source]

Bases: ASTNode

Node representing a range expression

class crosstl.backend.Rust.RustAst.ReferenceNode(expression, is_mutable=False)[source]

Bases: ASTNode

Node representing a reference (&)

class crosstl.backend.Rust.RustAst.ShaderNode(structs=None, functions=None, global_variables=None, impl_blocks=None, use_statements=None, traits=None, enums=None, type_aliases=None)[source]

Bases: ASTNode

Root node representing a Rust module/program.

class crosstl.backend.Rust.RustAst.StaticNode(name, static_type, value, is_mutable=False, visibility=None)[source]

Bases: ASTNode

Node representing a static variable

class crosstl.backend.Rust.RustAst.StructInitializationNode(struct_name, fields)[source]

Bases: ASTNode

Node representing struct initialization

class crosstl.backend.Rust.RustAst.StructNode(name, members, attributes=None, visibility=None, generics=None)[source]

Bases: ASTNode

Node representing a Rust struct with visibility and attributes.

class crosstl.backend.Rust.RustAst.TraitNode(name, methods, generics=None, visibility=None, where_clauses=None, associated_types=None, *args, **kwargs)[source]

Bases: ASTNode

Node representing a trait definition

class crosstl.backend.Rust.RustAst.TupleNode(elements)[source]

Bases: ASTNode

Node representing a tuple

class crosstl.backend.Rust.RustAst.TypeAliasNode(name, alias_type, generics=None, visibility=None, where_clauses=None, attributes=None)[source]

Bases: ASTNode

Node representing a Rust type alias declaration.

class crosstl.backend.Rust.RustAst.UseNode(path, alias=None, items=None)[source]

Bases: ASTNode

Node representing a use statement

Lexer for importing Rust source into CrossGL Translator.

class crosstl.backend.Rust.RustLexer.Lexer(input_str)[source]

Bases: object

Compatibility wrapper around RustLexer

next()[source]

Return the next token and advance the cursor.

peek()[source]

Return the next token without advancing the cursor.

class crosstl.backend.Rust.RustLexer.RustLexer(code)[source]

Bases: object

Tokenize Rust source for the Rust backend parser.

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

Create a lexer instance from a Rust source file.

Return type:

RustLexer

token_generator()[source]

Yield Rust 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]]

class crosstl.backend.Rust.RustLexer.Token(token_type, text)[source]

Bases: object

Simple typed token object used by Rust compatibility paths.

class crosstl.backend.Rust.RustLexer.TokenType(value)[source]

Bases: Enum

Token names emitted by the Rust source lexer.

Parser for Rust source AST construction.

class crosstl.backend.Rust.RustParser.RustParser(tokens)[source]

Bases: object

Parse Rust tokens into the Rust backend shader AST.

eat(expected_type)[source]

Consume and return the current token when it matches expected_type.

parse()[source]

Parse the complete Rust token stream into a shader AST.

parse_struct_initialization(struct_name)[source]

Parse struct initialization syntax: Name { field: value, … }

Reverse code generator that emits CrossGL from Rust AST nodes.

class crosstl.backend.Rust.RustCrossGLCodeGen.RustToCrossGLConverter[source]

Bases: object

Serialize Rust backend AST nodes back into CrossGL source.

generate(ast)[source]

Generate complete CrossGL source from a parsed Rust AST.

generate_expression(expr)[source]

Render a Rust backend expression node as CrossGL syntax.

generate_function(func, indent=1, struct_name=None)[source]

Render one Rust function node as a CrossGL function.

get_indent()[source]

Return whitespace for the current indentation level.

map_type(rust_type)[source]

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

visit(node)[source]

Dispatch a Rust AST node to a visitor method when available.