Module: Ibex::Configuration::AnalysisGrammar

Defined in:
lib/ibex/configuration/analysis_grammar.rb,
sig/ibex/configuration/analysis_grammar.rbs

Overview

Produces an immutable Grammar IR view suitable for an explicitly noncanonical analysis algorithm. The source-owned contract remains the authority; callers must report the override through Configuration::Value.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.for_algorithm(grammar, algorithm) ⇒ Object

RBS:

  • (IR::Grammar grammar, Symbol algorithm) -> IR::Grammar



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ibex/configuration/analysis_grammar.rb', line 13

def for_algorithm(grammar, algorithm)
  contract = grammar.parser_contract
  return grammar unless contract&.algorithm&.explicit
  return grammar if contract.algorithm.value == algorithm

  analysis_contract = IR::ParserContract.new(
    algorithm: IR::ParserContract::Entry.new(:algorithm),
    entries: contract.entries, cst_trivia: contract.cst_trivia
  )
  IR::Grammar.new(
    class_name: grammar.class_name, superclass: grammar.superclass, start: grammar.start,
    expect: grammar.expect, options: grammar.options, symbols: grammar.symbols,
    productions: grammar.productions, user_code: grammar.user_code, conversions: grammar.conversions,
    warnings: grammar.warnings, expect_rr: grammar.expect_rr, user_code_chunks: grammar.user_code_chunks,
    source_provenance: grammar.source_provenance,
    parser_parameters: grammar.parser_parameters, value_printers: grammar.value_printers,
    grammar_tests: grammar.grammar_tests, recovery: grammar.recovery, lexer: grammar.lexer,
    mode: grammar.mode, starts: grammar.starts, parser_contract: analysis_contract
  )
end

Instance Method Details

#self?.for_algorithmIR::Grammar

RBS:

  • (IR::Grammar grammar, Symbol algorithm) -> IR::Grammar

Parameters:

Returns:



10
# File 'sig/ibex/configuration/analysis_grammar.rbs', line 10

def self?.for_algorithm: (IR::Grammar grammar, Symbol algorithm) -> IR::Grammar