Class: Lrama::Grammar::Parameterized::Rule

Inherits:
Object
  • Object
show all
Defined in:
lib/lrama/grammar/parameterized/rule.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, parameters, rhs, tag: nil, is_inline: false) ⇒ Rule

Returns a new instance of Rule.



15
16
17
18
19
20
21
22
# File 'lib/lrama/grammar/parameterized/rule.rb', line 15

def initialize(name, parameters, rhs, tag: nil, is_inline: false)
  @name = name
  @parameters = parameters
  @rhs = rhs
  @tag = tag
  @is_inline = is_inline
  @required_parameters_count = parameters.count
end

Instance Attribute Details

#nameObject (readonly)

: String



8
9
10
# File 'lib/lrama/grammar/parameterized/rule.rb', line 8

def name
  @name
end

#parametersObject (readonly)

: Array



9
10
11
# File 'lib/lrama/grammar/parameterized/rule.rb', line 9

def parameters
  @parameters
end

#required_parameters_countObject (readonly)

: Integer



11
12
13
# File 'lib/lrama/grammar/parameterized/rule.rb', line 11

def required_parameters_count
  @required_parameters_count
end

#rhsObject (readonly)

: Array



10
11
12
# File 'lib/lrama/grammar/parameterized/rule.rb', line 10

def rhs
  @rhs
end

#tagObject (readonly)

: Lexer::Token::Tag?



12
13
14
# File 'lib/lrama/grammar/parameterized/rule.rb', line 12

def tag
  @tag
end

Instance Method Details

#inline?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/lrama/grammar/parameterized/rule.rb', line 30

def inline?
  @is_inline
end

#to_sObject



25
26
27
# File 'lib/lrama/grammar/parameterized/rule.rb', line 25

def to_s
  "#{@name}(#{@parameters.map(&:s_value).join(', ')})"
end