Class: Lrama::Reporter

Inherits:
Object
  • Object
show all
Includes:
Tracer::Duration
Defined in:
lib/lrama/reporter.rb,
lib/lrama/reporter/rules.rb,
lib/lrama/reporter/terms.rb,
lib/lrama/reporter/states.rb,
lib/lrama/reporter/grammar.rb,
lib/lrama/reporter/conflicts.rb,
lib/lrama/reporter/precedences.rb,
lib/lrama/reporter/profile/memory.rb,
lib/lrama/reporter/profile/call_stack.rb

Defined Under Namespace

Modules: Profile Classes: Conflicts, Grammar, Precedences, Rules, States, Terms

Instance Method Summary collapse

Methods included from Tracer::Duration

enable, enabled?, #report_duration

Constructor Details

#initialize(**options) ⇒ Reporter

Returns a new instance of Reporter.



17
18
19
20
21
22
23
24
25
# File 'lib/lrama/reporter.rb', line 17

def initialize(**options)
  @options = options
  @rules = Rules.new(**options)
  @terms = Terms.new(**options)
  @conflicts = Conflicts.new
  @precedences = Precedences.new
  @grammar = Grammar.new(**options)
  @states = States.new(**options)
end

Instance Method Details

#report(io, states) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/lrama/reporter.rb', line 28

def report(io, states)
  report_duration(:report) do
    report_duration(:report_rules) { @rules.report(io, states) }
    report_duration(:report_terms) { @terms.report(io, states) }
    report_duration(:report_conflicts) { @conflicts.report(io, states) }
    report_duration(:report_precedences) { @precedences.report(io, states) }
    report_duration(:report_grammar) { @grammar.report(io, states) }
    report_duration(:report_states) { @states.report(io, states, ielr: states.ielr_defined?) }
  end
end