Node<T, E> class abstract

Abstract base class for all AST nodes in the Balbismo compiler.

This class defines the fundamental structure and behavior that all AST nodes must implement. Each node represents a construct in the Balbismo language and is responsible for generating the corresponding LLVM IR code.

The generic type parameters provide type safety:

  • T: The type of the node's value (e.g., String for identifiers, int for literals)
  • E: The type returned by the evaluate method (typically void for statements, LangVal for expressions)

Key responsibilities of AST nodes:

  • Code Generation: Generate LLVM IR instructions via the evaluate method
  • Type Checking: Ensure type safety during compilation
  • Symbol Resolution: Interact with the symbol table for variable/function lookup
  • Error Reporting: Provide meaningful error messages for invalid constructs

All nodes automatically receive a unique ID for LLVM register naming and participate in the global LLVM IR generation process.

Implementers

Constructors

Node.new(T nodeValue, List<Node> children)
Constructs a new AST node with the given value and children.

Properties

children → List<Node>
Child nodes that form the structure of this node.
final
hashCode → int
The hash code for this object.
no setterinherited
id ↔ int
Unique identifier for this node, used for LLVM register naming.
getter/setter pair
nodeValue → T
The primary value associated with this node (varies by node type).
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

evaluate(SymbolTable table) → E
Evaluates this AST node and generates corresponding LLVM IR code.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Properties

i ↔ int
Global counter for generating unique node IDs.
getter/setter pair
ir ↔ String
Global LLVM IR code accumulator.
getter/setter pair
irIndent ↔ int
Current indentation level for LLVM IR formatting.
getter/setter pair
strCount ↔ int
Global counter for generating unique string constant names.
getter/setter pair

Static Methods

addConstantString(String value) → String
Adds a string constant to the LLVM IR and returns its global name.
addHeaderIrLine(String line) → dynamic
Adds a line to the LLVM IR header section.
addIrLine(String line) → dynamic
Adds a line to the LLVM IR with current indentation.
addIrlLabel(String label) → dynamic
Adds a labeled block to the LLVM IR and increases indentation.
endIrLabel() → dynamic
Ends a labeled block by decreasing indentation.
newId() → int
Generates a new unique ID for node identification.