Frontend API¶
Frontend API for parsing CrossGL and registering translator extensions.
- crosstl.translator.parse(shader_code)[source]¶
Parse shader code and return the AST.
- Parameters:
shader_code (str) – The shader code to parse
- Returns:
The abstract syntax tree
- crosstl.translator.register_backend_spec(spec, *, overwrite=False)[source]¶
Register a new backend codegen spec.
- Return type:
- crosstl.translator.register_source(spec, *, overwrite=False)[source]¶
Register a new backend source (lexer/parser) spec.
- Return type:
Lexer for tokenizing CrossGL source code.
- class crosstl.translator.lexer.Lexer(code)[source]¶
Bases:
objectTokenizer for CrossGL Universal IR.
Parser that builds CrossGL AST nodes from lexer tokens.
- class crosstl.translator.parser.Parser(tokens)[source]¶
Bases:
objectRecursive-descent parser for CrossGL Universal IR tokens.
- format_type_argument(type_node)[source]¶
Format a parsed type node back into a compact type argument string.
- is_variable_declaration()[source]¶
Lookahead check for variable declarations. Handles complex cases and distinguishes from function calls and member access.
- parse_for_in_statement_after_for()[source]¶
Parse a
for pattern in iterableloop afterforis consumed.
- parse_for_loop_variable_declaration()[source]¶
Parse variable declarations in for loops (without consuming semicolon).
- parse_generic_declaration()[source]¶
Parse legacy generic declarations that wrap structs/enums/functions.
- parse_integer_literal_parts(value)[source]¶
Return integer digits and signedness for an integer literal.
- parse_preprocessor_directive()[source]¶
Parse a preprocessor token into a structured directive node.
- parse_primary_expression()[source]¶
Parse identifiers, literals, parenthesized expressions, and arrays.
Canonical CrossGL abstract syntax tree node definitions.
- class crosstl.translator.ast.ASTNode(source_location=None, annotations=None)[source]¶
Bases:
objectBase class for all AST nodes with common functionality.
- class crosstl.translator.ast.ArrayAccessNode(array_expr, index_expr, **kwargs)[source]¶
Bases:
ExpressionNodeArray indexing.
- class crosstl.translator.ast.ArrayLiteralNode(elements, **kwargs)[source]¶
Bases:
ExpressionNodeArray literal expression such as {1, 2, 3}.
- class crosstl.translator.ast.ArrayNode(element_type, name, size=None, semantic=None, **kwargs)[source]¶
Bases:
VariableNodeLegacy array node for backward compatibility.
- class crosstl.translator.ast.ArrayType(element_type, size=None, **kwargs)[source]¶
Bases:
TypeNodeArray types with static or dynamic sizing.
- class crosstl.translator.ast.AssignmentNode(target, value, operator='=', **kwargs)[source]¶
Bases:
StatementNodeAssignment operations.
- class crosstl.translator.ast.AtomicOpNode(operation, target, arguments, **kwargs)[source]¶
Bases:
ExpressionNodeAtomic operations for GPU computing.
- class crosstl.translator.ast.AttributeNode(name, arguments=None, **kwargs)[source]¶
Bases:
ASTNodeAttributes/annotations/decorators.
- class crosstl.translator.ast.BinaryOpNode(left, operator, right, **kwargs)[source]¶
Bases:
ExpressionNodeBinary operations.
- class crosstl.translator.ast.BlockNode(statements, **kwargs)[source]¶
Bases:
StatementNodeBlock of statements.
- class crosstl.translator.ast.BreakNode(label=None, **kwargs)[source]¶
Bases:
StatementNodeBreak statements.
- class crosstl.translator.ast.BufferNode(name, buffer_type, binding=None, set_=None, access='read_write', **kwargs)[source]¶
Bases:
ASTNodeBuffer resource declarations.
- class crosstl.translator.ast.BufferOpNode(operation, buffer_expr, arguments, **kwargs)[source]¶
Bases:
ExpressionNodeBuffer operations like Load/Store/Append/Consume.
- class crosstl.translator.ast.BuiltinVariableNode(builtin_name, component=None, **kwargs)[source]¶
Bases:
ExpressionNodeBuilt-in variables (gl_Position, threadIdx, etc.).
- class crosstl.translator.ast.CaseNode(value, statements, **kwargs)[source]¶
Bases:
ASTNodeSwitch case.
- class crosstl.translator.ast.CastNode(expression, target_type, **kwargs)[source]¶
Bases:
ExpressionNodeType casting.
- crosstl.translator.ast.CbufferNode¶
alias of
StructNode
- class crosstl.translator.ast.ConstantNode(name, const_type, value, visibility='public', **kwargs)[source]¶
Bases:
ASTNodeCompile-time constants.
- class crosstl.translator.ast.ConstructorNode(constructor_type, arguments, named_arguments=None, **kwargs)[source]¶
Bases:
ExpressionNodeType constructors (vec3(1,2,3), MyStruct{field: value}).
- class crosstl.translator.ast.ContinueNode(label=None, **kwargs)[source]¶
Bases:
StatementNodeContinue statements.
- class crosstl.translator.ast.EnumNode(name, variants, underlying_type=None, attributes=None, **kwargs)[source]¶
Bases:
ASTNodeEnumeration declarations.
- class crosstl.translator.ast.EnumVariantNode(name, value=None, fields=None, **kwargs)[source]¶
Bases:
ASTNodeIndividual enum variant.
- class crosstl.translator.ast.ExecutionModel(value)[source]¶
Bases:
EnumDifferent execution models supported.
- class crosstl.translator.ast.ExpressionNode(expression_type=None, **kwargs)[source]¶
Bases:
ASTNodeBase class for all expressions.
- class crosstl.translator.ast.ExpressionStatementNode(expression, **kwargs)[source]¶
Bases:
StatementNodeExpression used as a statement.
- class crosstl.translator.ast.ForInNode(pattern, iterable, body, **kwargs)[source]¶
Bases:
StatementNodeFor-in loop (Rust, Python style).
- class crosstl.translator.ast.ForNode(init, condition, update, body, **kwargs)[source]¶
Bases:
StatementNodeFor loop statements.
- class crosstl.translator.ast.FunctionCallNode(function, arguments, generic_args=None, **kwargs)[source]¶
Bases:
ExpressionNodeFunction calls.
- class crosstl.translator.ast.FunctionNode(name, return_type, parameters, body=None, generic_params=None, attributes=None, visibility='public', qualifiers=None, is_unsafe=False, is_async=False, **kwargs)[source]¶
Bases:
ASTNodeFunction declarations.
- class crosstl.translator.ast.FunctionType(return_type, param_types, **kwargs)[source]¶
Bases:
TypeNodeFunction pointer/reference types.
- class crosstl.translator.ast.GenericParameterNode(name, constraints=None, default_type=None, **kwargs)[source]¶
Bases:
ASTNodeGeneric/template parameter.
- class crosstl.translator.ast.GenericType(name, constraints=None, **kwargs)[source]¶
Bases:
TypeNodeGeneric/template type parameters.
- class crosstl.translator.ast.IdentifierNode(name, **kwargs)[source]¶
Bases:
ExpressionNodeVariable/function identifiers.
- class crosstl.translator.ast.IdentifierPatternNode(name, **kwargs)[source]¶
Bases:
PatternNodeIdentifier pattern (variable binding).
- class crosstl.translator.ast.IfNode(condition, then_branch, else_branch=None, **kwargs)[source]¶
Bases:
StatementNodeConditional statements.
- class crosstl.translator.ast.ImportNode(path, alias=None, items=None, **kwargs)[source]¶
Bases:
ASTNodeImport/include statements.
- class crosstl.translator.ast.LambdaNode(parameters, body, captures=None, **kwargs)[source]¶
Bases:
ExpressionNodeLambda/closure expressions.
- class crosstl.translator.ast.LiteralNode(value, literal_type, **kwargs)[source]¶
Bases:
ExpressionNodeLiteral values.
- class crosstl.translator.ast.LiteralPatternNode(literal, **kwargs)[source]¶
Bases:
PatternNodeLiteral pattern.
- class crosstl.translator.ast.LoopNode(body, label=None, **kwargs)[source]¶
Bases:
StatementNodeInfinite loop (Rust style).
- class crosstl.translator.ast.MatchArmNode(pattern, guard, body, **kwargs)[source]¶
Bases:
ASTNodePattern matching arm.
- class crosstl.translator.ast.MatchNode(expression, arms, **kwargs)[source]¶
Bases:
StatementNodePattern matching (Rust, functional languages).
- class crosstl.translator.ast.MatrixType(element_type, rows, cols, **kwargs)[source]¶
Bases:
TypeNodeMatrix types (mat4, float4x4, etc.).
- class crosstl.translator.ast.MemberAccessNode(object_expr, member, **kwargs)[source]¶
Bases:
ExpressionNodeMember access (dot operator).
- class crosstl.translator.ast.MeshOpNode(operation, arguments, **kwargs)[source]¶
Bases:
ExpressionNodeMesh/task shader intrinsics (SetMeshOutputCounts, DispatchMesh).
- class crosstl.translator.ast.NamedType(name, generic_args=None, **kwargs)[source]¶
Bases:
TypeNodeUser-defined types (structs, enums, etc.).
- class crosstl.translator.ast.ParameterNode(name, param_type, default_value=None, attributes=None, is_mutable=False, **kwargs)[source]¶
Bases:
ASTNodeFunction parameter.
- class crosstl.translator.ast.PatternNode(source_location=None, annotations=None)[source]¶
Bases:
ASTNodeBase class for patterns in pattern matching.
- class crosstl.translator.ast.PointerAccessNode(pointer_expr, member, **kwargs)[source]¶
Bases:
ExpressionNodePointer member access (arrow operator).
- class crosstl.translator.ast.PointerType(pointee_type, is_mutable=True, **kwargs)[source]¶
Bases:
TypeNodePointer types for languages that support them.
- class crosstl.translator.ast.PreprocessorNode(directive, content='', **kwargs)[source]¶
Bases:
ASTNodePreprocessor directives (e.g. #version, #include).
- class crosstl.translator.ast.PrimitiveType(name, size_bits=None, **kwargs)[source]¶
Bases:
TypeNodePrimitive types (int, float, bool, etc.).
- class crosstl.translator.ast.RangeNode(start, end, inclusive=False, **kwargs)[source]¶
Bases:
ExpressionNodeInteger range expression.
- class crosstl.translator.ast.RayQueryOpNode(operation, query_expr, arguments, **kwargs)[source]¶
Bases:
ExpressionNodeRayQuery method calls.
- class crosstl.translator.ast.RayTracingOpNode(operation, arguments, **kwargs)[source]¶
Bases:
ExpressionNodeRaytracing intrinsics like TraceRay, ReportHit, etc.
- class crosstl.translator.ast.ReferenceType(referenced_type, is_mutable=False, **kwargs)[source]¶
Bases:
TypeNodeReference types for languages like Rust.
- class crosstl.translator.ast.ReturnNode(value=None, **kwargs)[source]¶
Bases:
StatementNodeReturn statements.
- class crosstl.translator.ast.SamplerNode(name, filter_mode='linear', address_mode='clamp', binding=None, **kwargs)[source]¶
Bases:
ASTNodeSampler resource declarations.
- class crosstl.translator.ast.ShaderNode(name, execution_model, stages=None, structs=None, functions=None, global_variables=None, constants=None, cbuffers=None, imports=None, preprocessors=None, **kwargs)[source]¶
Bases:
ASTNodeRoot node representing a complete shader program.
- class crosstl.translator.ast.StageNode(stage, entry_point, local_variables=None, local_functions=None, execution_config=None, **kwargs)[source]¶
Bases:
ASTNodeIndividual shader stage (vertex, fragment, compute, etc.).
- class crosstl.translator.ast.StatementNode(source_location=None, annotations=None)[source]¶
Bases:
ASTNodeBase class for all statements.
- class crosstl.translator.ast.StructMemberNode(name, member_type, default_value=None, attributes=None, visibility='public', **kwargs)[source]¶
Bases:
ASTNodeIndividual struct member.
- class crosstl.translator.ast.StructNode(name, members, generic_params=None, attributes=None, inheritance=None, visibility='public', **kwargs)[source]¶
Bases:
ASTNodeStruct/class declarations.
- class crosstl.translator.ast.StructPatternNode(type_name, field_patterns, **kwargs)[source]¶
Bases:
PatternNodeStruct destructuring pattern.
- class crosstl.translator.ast.SwitchNode(expression, cases, default_case=None, **kwargs)[source]¶
Bases:
StatementNodeSwitch statements.
- class crosstl.translator.ast.SwizzleNode(vector_expr, components, **kwargs)[source]¶
Bases:
ExpressionNodeVector swizzling (vec.xyz, vec.xxyy, etc.).
- class crosstl.translator.ast.SyncNode(sync_type, arguments=None, **kwargs)[source]¶
Bases:
StatementNodeSynchronization operations.
- class crosstl.translator.ast.TernaryOpNode(condition, true_expr, false_expr, **kwargs)[source]¶
Bases:
ExpressionNodeTernary conditional operator.
- class crosstl.translator.ast.TextureNode(texture_expr, sampler_expr, coordinates, level=None, offset=None, **kwargs)[source]¶
Bases:
ExpressionNodeTexture sampling operations.
- class crosstl.translator.ast.TextureOpNode(operation, texture_expr, arguments, sampler_expr=None, **kwargs)[source]¶
Bases:
ExpressionNodeExtended texture operations (Sample, Load, Gather, etc.).
- class crosstl.translator.ast.TextureResourceNode(name, texture_type, format=None, binding=None, set_=None, **kwargs)[source]¶
Bases:
ASTNodeTexture resource declarations.
- class crosstl.translator.ast.TypeNode(source_location=None, annotations=None)[source]¶
Bases:
ASTNodeBase class for all type representations.
- class crosstl.translator.ast.UnaryOpNode(operator, operand, is_postfix=False, **kwargs)[source]¶
Bases:
ExpressionNodeUnary operations.
- class crosstl.translator.ast.VariableNode(name, var_type, initial_value=None, attributes=None, qualifiers=None, is_mutable=True, visibility='private', **kwargs)[source]¶
Bases:
ASTNodeVariable declarations.
- crosstl.translator.ast.VectorConstructorNode¶
alias of
ConstructorNode
- class crosstl.translator.ast.VectorType(element_type, size, **kwargs)[source]¶
Bases:
TypeNodeVector types (vec2, vec3, vec4, float3, etc.).
- class crosstl.translator.ast.WaveOpNode(operation, arguments, **kwargs)[source]¶
Bases:
ExpressionNodeWave/subgroup operations.
- class crosstl.translator.ast.WhileNode(condition, body, **kwargs)[source]¶
Bases:
StatementNodeWhile loop statements.
- class crosstl.translator.ast.WildcardPatternNode(source_location=None, annotations=None)[source]¶
Bases:
PatternNodeWildcard pattern (_).