Customizing Parsers
While the default setup of the parsers provided by this Gem should be suitable
for most some developers might want to change parts of it. An example would be
the use of a custom class for nodes instead of Parser::AST::Node
.
Customizing the AST is done by creating a custom builder class and passing it to the constructor method of a parser. The default setup comes down to the following:
builder = Parser::Builders::Default.new
parser = Parser::Ruby19.new(builder)
When creating your own builder class it’s best to subclass the default one so that you don’t have to redefine every used method again:
class MyBuilder < Parser::Builders::Default
end
builder = MyBuilder.new
parser = Parser::Ruby19.new(builder)
Custom Node Classes
To use a custom node class you have to override the method
Parser::Builders::Default#n
:
class MyBuilder < Parser::Builders::Default
def n(type, children, location)
return MyNodeClass.new(type, children, :location => location)
end
end
Note that the used class (and corresponding instance) must be compatible with
Parser::AST::Node
so it’s best to subclass it and override/add code where
needed.