Class: TreeHaver::Backends::Rust::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/tree_haver/backends/rust.rb

Overview

Wrapper for tree_stump Parser

Provides TreeHaver-compatible interface to tree_stump’s parser.

Instance Method Summary collapse

Constructor Details

#initializeParser

Create a new parser instance

Raises:



160
161
162
163
# File 'lib/tree_haver/backends/rust.rb', line 160

def initialize
  raise TreeHaver::NotAvailable, "tree_stump not available" unless Rust.available?
  @parser = ::TreeStump::Parser.new
end

Instance Method Details

#language=(lang) ⇒ Language, String

Set the language for this parser

Note: TreeHaver::Parser unwraps language objects before calling this method. When called from TreeHaver::Parser, receives String (language name). For backward compatibility and backend tests, also handles Language wrapper.



173
174
175
176
177
178
179
# File 'lib/tree_haver/backends/rust.rb', line 173

def language=(lang)
  # Extract language name (handle both wrapper and raw string)
  lang_name = lang.respond_to?(:name) ? lang.name : lang.to_s
  # tree_stump uses set_language with a string name
  @parser.set_language(lang_name)
  lang # rubocop:disable Lint/Void (intentional return value)
end

#parse(source) ⇒ TreeStump::Tree

Parse source code



185
186
187
188
# File 'lib/tree_haver/backends/rust.rb', line 185

def parse(source)
  # Return raw tree_stump tree - TreeHaver::Parser will wrap it
  @parser.parse(source)
end

#parse_string(old_tree, source) ⇒ TreeStump::Tree

Parse source code with optional incremental parsing

Note: TreeStump does not currently expose incremental parsing to Ruby. The parse method always does a full parse, ignoring old_tree.



198
199
200
201
202
# File 'lib/tree_haver/backends/rust.rb', line 198

def parse_string(old_tree, source) # rubocop:disable Lint/UnusedMethodArgument
  # TreeStump's parse method only accepts source as a single argument
  # and internally always passes None for the old tree (no incremental parsing support)
  @parser.parse(source)
end