Shared Backend AST

Common AST node definitions shared across backends.

class crosstl.backend.common_ast.ASTNode[source]

Bases: object

Base class for backend AST nodes produced by native source parsers.

class crosstl.backend.common_ast.ArrayAccessNode(array, index)[source]

Bases: ASTNode

Node representing array access

class crosstl.backend.common_ast.AssignmentNode(left, right, operator='=')[source]

Bases: ASTNode

Node representing an assignment operation

class crosstl.backend.common_ast.AttributeNode(name, args=None, arguments=None)[source]

Bases: ASTNode

Attributes/annotations.

class crosstl.backend.common_ast.BinaryOpNode(left, op, right)[source]

Bases: ASTNode

Node representing a binary operation

class crosstl.backend.common_ast.BreakNode(*args, **kwargs)[source]

Bases: ASTNode

Node representing a break statement.

class crosstl.backend.common_ast.CallNode(callee, args)[source]

Bases: ASTNode

Node representing a call on a callee expression

class crosstl.backend.common_ast.CaseNode(value, body=None, statements=None)[source]

Bases: ASTNode

Node representing a case in a switch statement.

class crosstl.backend.common_ast.CastNode(target_type, expression)[source]

Bases: ASTNode

Node representing a type cast

class crosstl.backend.common_ast.ConstantBufferNode(name, members)[source]

Bases: ASTNode

Node representing constant buffer

class crosstl.backend.common_ast.ContinueNode(*args, **kwargs)[source]

Bases: ASTNode

Node representing a continue statement.

class crosstl.backend.common_ast.DeleteNode(expression, is_array=False)[source]

Bases: ASTNode

Node representing a C++ delete expression statement

class crosstl.backend.common_ast.DesignatedInitializerNode(designators=None, value=None)[source]

Bases: ASTNode

Node representing C99-style designated initializer entries.

class crosstl.backend.common_ast.DiscardNode(*args, **kwargs)[source]

Bases: ASTNode

Node representing a discard statement

class crosstl.backend.common_ast.DoWhileNode(body, condition)[source]

Bases: ASTNode

Node representing a do-while loop

class crosstl.backend.common_ast.EnumNode(name, members)[source]

Bases: ASTNode

Node representing an enum declaration

class crosstl.backend.common_ast.ForNode(init, condition, update, body)[source]

Bases: ASTNode

Node representing a for loop

class crosstl.backend.common_ast.FunctionCallNode(name, args)[source]

Bases: ASTNode

Node representing a function call

class crosstl.backend.common_ast.FunctionNode(return_type, name, params, body, qualifiers=None, attributes=None, *args, **kwargs)[source]

Bases: ASTNode

Node representing a function declaration.

class crosstl.backend.common_ast.IfNode(condition=None, if_body=None, else_body=None, if_chain=None, else_if_chain=None)[source]

Bases: ASTNode

Node representing an if statement.

class crosstl.backend.common_ast.InitializerListNode(elements=None)[source]

Bases: ASTNode

Node representing C-style brace initializer lists.

class crosstl.backend.common_ast.MemberAccessNode(object, member, is_pointer=False)[source]

Bases: ASTNode

Node representing member access (dot or arrow operator)

class crosstl.backend.common_ast.MethodCallNode(object, method, args)[source]

Bases: ASTNode

Node representing a method call on an object

class crosstl.backend.common_ast.NewNode(target_type, size=None, args=None, is_array=False)[source]

Bases: ASTNode

Node representing a C++ new expression

class crosstl.backend.common_ast.PostfixOpNode(operand, op)[source]

Bases: ASTNode

Node representing a postfix operation (e.g., i++, i–)

class crosstl.backend.common_ast.PreprocessorNode(directive, content)[source]

Bases: ASTNode

Node representing preprocessor directives

class crosstl.backend.common_ast.RangeForNode(vtype, name, iterable, body)[source]

Bases: ASTNode

Node representing a C++ range-based for loop

class crosstl.backend.common_ast.ReturnNode(value=None)[source]

Bases: ASTNode

Node representing a return statement

class crosstl.backend.common_ast.ShaderNode(includes=None, functions=None, structs=None, global_variables=None, kernels=None, *args, **kwargs)[source]

Bases: ASTNode

Root node representing a complete program.

class crosstl.backend.common_ast.StaticAssertNode(condition, message=None)[source]

Bases: ASTNode

Node representing a static_assert

class crosstl.backend.common_ast.StructNode(name, members, attributes=None)[source]

Bases: ASTNode

Node representing a struct declaration.

class crosstl.backend.common_ast.SwitchNode(expression, cases, default_case=None, default=None)[source]

Bases: ASTNode

Node representing a switch statement.

class crosstl.backend.common_ast.SyncNode(sync_type, args=None, arguments=None)[source]

Bases: ASTNode

Node representing synchronization operations.

class crosstl.backend.common_ast.TernaryOpNode(condition, true_expr, false_expr)[source]

Bases: ASTNode

Node representing a ternary conditional operator

class crosstl.backend.common_ast.TextureSampleNode(texture, sampler, coordinates, lod=None)[source]

Bases: ASTNode

Node representing texture sampling

class crosstl.backend.common_ast.ThreadgroupSyncNode[source]

Bases: ASTNode

Node representing threadgroup synchronization

class crosstl.backend.common_ast.TypeAliasNode(alias_type, name)[source]

Bases: ASTNode

Node representing a typedef/alias

class crosstl.backend.common_ast.UnaryOpNode(op, operand)[source]

Bases: ASTNode

Node representing a unary operation

class crosstl.backend.common_ast.VariableNode(vtype, name, value=None, qualifiers=None, attributes=None, is_const=False, **kwargs)[source]

Bases: ASTNode

Node representing a variable declaration

class crosstl.backend.common_ast.VectorConstructorNode(vector_type, args, type_name=None)[source]

Bases: ASTNode

Node representing a vector constructor.

class crosstl.backend.common_ast.WhileNode(condition, body)[source]

Bases: ASTNode

Node representing a while loop