Skip to content

[PERF] make visitor iterative managed stack loop  #613

@b3b00

Description

@b3b00

To avoid stackoverflows during CST traversal.

// Conceptual layout of a stack-safe, non-recursive CST Visitor
public OUT Visit(ParseNode root)
{
    var todoStack = new Stack<ParseNode>();
    var outputStack = new Stack<object>();

    todoStack.Push(root);

    while (todoStack.Count > 0)
    {
        var currentNode = todoStack.Pop();
        
        // 1. Process the node structure iteratively without deep method recursion
        // 2. Safely evaluate and invoke visitors using an array pool for arguments
        // 3. Push child nodes back onto the todoStack
    }

    return (OUT)outputStack.Pop();
}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions