Class: Ibex::Frontend::DSL::PrecedenceBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/ibex/frontend/dsl.rb,
sig/ibex/frontend/dsl.rbs

Overview

Collects ordered associativity levels.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(grammar) ⇒ PrecedenceBuilder

Returns a new instance of PrecedenceBuilder.

RBS:

  • (Builder grammar) -> void

Parameters:



204
205
206
207
# File 'lib/ibex/frontend/dsl.rb', line 204

def initialize(grammar)
  @grammar = grammar
  @levels = [] #: Array[AST::PrecedenceLevel]
end

Instance Attribute Details

#levelsArray[AST::PrecedenceLevel] (readonly)

Signature:

  • Array[AST::PrecedenceLevel]

Returns:



199
200
201
# File 'lib/ibex/frontend/dsl.rb', line 199

def levels
  @levels
end

Instance Method Details

#add_level(associativity, symbols) ⇒ void

This method returns an undefined value.

RBS:

  • (Symbol associativity, Array[Object] symbols) -> void

Parameters:

  • associativity (Symbol)
  • symbols (Array[Object])


221
222
223
224
# File 'lib/ibex/frontend/dsl.rb', line 221

def add_level(associativity, symbols)
  @levels << AST::PrecedenceLevel.new(associativity: associativity, symbols: symbols.map(&:to_s),
                                      loc: @grammar.next_location)
end

#left(*symbols) ⇒ void

This method returns an undefined value.

RBS:

  • (*Object symbols) -> void

Parameters:

  • symbols (Object)


210
# File 'lib/ibex/frontend/dsl.rb', line 210

def left(*symbols) = add_level(:left, symbols)

#nonassoc(*symbols) ⇒ void

This method returns an undefined value.

RBS:

  • (*Object symbols) -> void

Parameters:

  • symbols (Object)


216
# File 'lib/ibex/frontend/dsl.rb', line 216

def nonassoc(*symbols) = add_level(:nonassoc, symbols)

#right(*symbols) ⇒ void

This method returns an undefined value.

RBS:

  • (*Object symbols) -> void

Parameters:

  • symbols (Object)


213
# File 'lib/ibex/frontend/dsl.rb', line 213

def right(*symbols) = add_level(:right, symbols)