knit_script.knit_script_interpreter.statements.Variable_Declaration module

Statement for declaring a variable.

This module provides the Variable_Declaration statement class, which handles variable declaration operations in knit script programs. It wraps assignment operations with scope-specific behavior for both local and global variable declarations.

class Variable_Declaration(parser_node, assignment, is_global=False)[source]

Bases: Statement

Used to set a variable value at the current or global scope.

This statement wraps an assignment operation and can optionally declare the variable in the global scope rather than the current local scope. It provides explicit variable declaration semantics that can override the normal scoping rules when global declaration is specified.

Variable declarations are used to establish new variables with specific scope targeting, ensuring that variables are created in the intended scope level regardless of existing variable names in parent scopes.

_is_global

True if the variable should be declared in global scope.

Type:

bool

_assignment

The assignment operation that defines the variable name and value.

Type:

Assignment

__init__(parser_node, assignment, is_global=False)[source]

Initialize a variable declaration.

Parameters:
  • parser_node (LRStackNode) – The parser node from the abstract syntax tree.

  • assignment (Assignment) – The assignment operation that defines the variable name and value.

  • is_global (bool, optional) – If True, declares the variable in the global scope. If False, declares in the current local scope. Defaults to False.

execute(context)[source]

Execute the variable declaration by performing the assignment.

Evaluates the assignment expression and stores the result in the variable scope according to the global/local setting, ensuring the variable is created in the intended scope level.

Parameters:

context (Knit_Script_Context) – The current execution context of the knit script interpreter.

classmethod __class_getitem__(params)

Parameterizes a generic class.

At least, parameterizing a generic class is the main thing this method does. For example, for some generic class Foo, this is called when we do Foo[int] - there, with cls=Foo and params=int.

However, note that this method is also called when defining generic classes in the first place with class Foo(Generic[T]): ….

classmethod __init_subclass__(**kwargs)

Automatically wrap execute methods in subclasses with appropriate error handling and debugging decorators.

This method is called whenever a class inherits from Statement. It checks if the subclass defines its own execute method and wraps it with the appropriate decorators

Parameters:

**kwargs (Any) – Additional keyword arguments passed to super().__init_subclass__

property file_name: str | None

Returns: str | None: The file name of the knitscript program this was parsed from or None if the program was passed as a string.

property line_number: int

Get the line number of the symbol that generated this statement.

Returns:

The line number where this element appears in the source file.

Return type:

int

property local_path: str | None

Returns: str | None: The path to the directory containing the file from which this element was parsed or None if the value was parsed from a python string.

property location: Location

Get the location of this symbol in KnitScript file.

Returns:

The location of this symbol in the source file, including file name, line number, and position information.

Return type:

Location

property location_str: str

Returns: str: The string referencing the line number and possible file name information about this element.

property position_context: str

The position context string is the string from the knitscript program from which this element was parsed. The context string will begin at the start of this element and continue to the end of the line of knitscript or a semicolon on new line are reached.

Returns:

The string used to contextualize this element in the knitscript program.

Return type:

str