lrama 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitattributes +2 -0
- data/.github/workflows/codespell.yaml +1 -1
- data/.github/workflows/gh-pages.yml +5 -6
- data/.github/workflows/test.yaml +25 -14
- data/Gemfile +4 -3
- data/NEWS.md +370 -35
- data/README.md +7 -88
- data/Rakefile +3 -2
- data/Steepfile +11 -5
- data/doc/Index.md +1 -1
- data/doc/development/compressed_state_table/parser.rb +2 -0
- data/doc/development/profiling.md +44 -0
- data/exe/lrama +1 -1
- data/lib/lrama/bitmap.rb +18 -5
- data/lib/lrama/command.rb +95 -43
- data/lib/lrama/context.rb +22 -24
- data/lib/lrama/counterexamples/derivation.rb +14 -4
- data/lib/lrama/counterexamples/example.rb +47 -22
- data/lib/lrama/counterexamples/node.rb +30 -0
- data/lib/lrama/counterexamples/path.rb +12 -14
- data/lib/lrama/counterexamples/state_item.rb +24 -1
- data/lib/lrama/counterexamples/triple.rb +27 -9
- data/lib/lrama/counterexamples.rb +216 -88
- data/lib/lrama/diagram.rb +77 -0
- data/lib/lrama/digraph.rb +28 -7
- data/lib/lrama/erb.rb +29 -0
- data/lib/lrama/grammar/auxiliary.rb +6 -1
- data/lib/lrama/grammar/binding.rb +37 -25
- data/lib/lrama/grammar/code/destructor_code.rb +11 -0
- data/lib/lrama/grammar/code/initial_action_code.rb +3 -0
- data/lib/lrama/grammar/code/no_reference_code.rb +3 -0
- data/lib/lrama/grammar/code/printer_code.rb +11 -0
- data/lib/lrama/grammar/code/rule_action.rb +17 -0
- data/lib/lrama/grammar/code.rb +16 -1
- data/lib/lrama/grammar/counter.rb +10 -0
- data/lib/lrama/grammar/destructor.rb +14 -1
- data/lib/lrama/grammar/error_token.rb +14 -1
- data/lib/lrama/grammar/inline/resolver.rb +80 -0
- data/lib/lrama/grammar/inline.rb +3 -0
- data/lib/lrama/grammar/{parameterizing_rule → parameterized}/resolver.rb +19 -8
- data/lib/lrama/grammar/{parameterizing_rule → parameterized}/rhs.rb +7 -2
- data/lib/lrama/grammar/parameterized/rule.rb +36 -0
- data/lib/lrama/grammar/parameterized.rb +5 -0
- data/lib/lrama/grammar/percent_code.rb +12 -1
- data/lib/lrama/grammar/precedence.rb +43 -1
- data/lib/lrama/grammar/printer.rb +9 -0
- data/lib/lrama/grammar/reference.rb +13 -0
- data/lib/lrama/grammar/rule.rb +61 -1
- data/lib/lrama/grammar/rule_builder.rb +84 -69
- data/lib/lrama/grammar/stdlib.y +68 -48
- data/lib/lrama/grammar/symbol.rb +63 -19
- data/lib/lrama/grammar/symbols/resolver.rb +64 -3
- data/lib/lrama/grammar/type.rb +13 -1
- data/lib/lrama/grammar/union.rb +12 -1
- data/lib/lrama/grammar.rb +231 -35
- data/lib/lrama/lexer/location.rb +25 -8
- data/lib/lrama/lexer/token/base.rb +73 -0
- data/lib/lrama/lexer/token/char.rb +15 -2
- data/lib/lrama/lexer/token/empty.rb +14 -0
- data/lib/lrama/lexer/token/ident.rb +2 -2
- data/lib/lrama/lexer/token/instantiate_rule.rb +4 -4
- data/lib/lrama/lexer/token/int.rb +14 -0
- data/lib/lrama/lexer/token/str.rb +11 -0
- data/lib/lrama/lexer/token/tag.rb +2 -2
- data/lib/lrama/lexer/token/token.rb +11 -0
- data/lib/lrama/lexer/token/user_code.rb +63 -37
- data/lib/lrama/lexer/token.rb +6 -56
- data/lib/lrama/lexer.rb +51 -23
- data/lib/lrama/logger.rb +12 -2
- data/lib/lrama/option_parser.rb +63 -9
- data/lib/lrama/options.rb +25 -7
- data/lib/lrama/output.rb +4 -11
- data/lib/lrama/parser.rb +854 -723
- data/lib/lrama/reporter/conflicts.rb +44 -0
- data/lib/lrama/reporter/grammar.rb +39 -0
- data/lib/lrama/reporter/precedences.rb +54 -0
- data/lib/lrama/reporter/profile/call_stack.rb +45 -0
- data/lib/lrama/reporter/profile/memory.rb +44 -0
- data/lib/lrama/reporter/profile.rb +4 -0
- data/lib/lrama/reporter/rules.rb +43 -0
- data/lib/lrama/reporter/states.rb +387 -0
- data/lib/lrama/reporter/terms.rb +44 -0
- data/lib/lrama/reporter.rb +39 -0
- data/lib/lrama/state/action/goto.rb +33 -0
- data/lib/lrama/state/action/reduce.rb +71 -0
- data/lib/lrama/state/action/shift.rb +39 -0
- data/lib/lrama/state/action.rb +5 -0
- data/lib/lrama/state/inadequacy_annotation.rb +140 -0
- data/lib/lrama/{states → state}/item.rb +33 -4
- data/lib/lrama/state/reduce_reduce_conflict.rb +14 -1
- data/lib/lrama/state/resolved_conflict.rb +38 -4
- data/lib/lrama/state/shift_reduce_conflict.rb +14 -1
- data/lib/lrama/state.rb +301 -200
- data/lib/lrama/states.rb +447 -175
- data/lib/lrama/tracer/actions.rb +22 -0
- data/lib/lrama/tracer/closure.rb +30 -0
- data/lib/lrama/tracer/duration.rb +38 -0
- data/lib/lrama/tracer/only_explicit_rules.rb +24 -0
- data/lib/lrama/tracer/rules.rb +23 -0
- data/lib/lrama/tracer/state.rb +33 -0
- data/lib/lrama/tracer.rb +51 -0
- data/lib/lrama/version.rb +2 -1
- data/lib/lrama/warnings/conflicts.rb +27 -0
- data/lib/lrama/warnings/implicit_empty.rb +29 -0
- data/lib/lrama/warnings/name_conflicts.rb +63 -0
- data/lib/lrama/warnings/redefined_rules.rb +23 -0
- data/lib/lrama/warnings/required.rb +23 -0
- data/lib/lrama/warnings/useless_precedence.rb +25 -0
- data/lib/lrama/warnings.rb +33 -0
- data/lib/lrama.rb +5 -5
- data/parser.y +495 -404
- data/rbs_collection.lock.yaml +27 -3
- data/rbs_collection.yaml +2 -0
- data/sig/generated/lrama/bitmap.rbs +12 -4
- data/sig/generated/lrama/counterexamples/derivation.rbs +36 -0
- data/sig/generated/lrama/counterexamples/example.rbs +58 -0
- data/sig/generated/lrama/counterexamples/node.rbs +18 -0
- data/sig/generated/lrama/counterexamples/path.rbs +23 -0
- data/sig/generated/lrama/counterexamples/state_item.rbs +19 -0
- data/sig/generated/lrama/counterexamples/triple.rbs +32 -0
- data/sig/generated/lrama/counterexamples.rbs +98 -0
- data/sig/generated/lrama/diagram.rbs +34 -0
- data/sig/generated/lrama/digraph.rbs +26 -6
- data/sig/generated/lrama/erb.rbs +14 -0
- data/sig/generated/lrama/grammar/auxiliary.rbs +16 -0
- data/sig/generated/lrama/grammar/binding.rbs +18 -12
- data/sig/generated/lrama/grammar/code/destructor_code.rbs +26 -0
- data/sig/{lrama → generated/lrama}/grammar/code/initial_action_code.rbs +6 -0
- data/sig/{lrama → generated/lrama}/grammar/code/no_reference_code.rbs +6 -0
- data/sig/generated/lrama/grammar/code/printer_code.rbs +26 -0
- data/sig/generated/lrama/grammar/code/rule_action.rbs +63 -0
- data/sig/generated/lrama/grammar/code.rbs +38 -0
- data/sig/{lrama → generated/lrama}/grammar/counter.rbs +4 -0
- data/sig/generated/lrama/grammar/destructor.rbs +19 -0
- data/sig/generated/lrama/grammar/error_token.rbs +19 -0
- data/sig/generated/lrama/grammar/inline/resolver.rbs +26 -0
- data/sig/generated/lrama/grammar/parameterized/resolver.rbs +42 -0
- data/sig/generated/lrama/grammar/parameterized/rhs.rbs +21 -0
- data/sig/generated/lrama/grammar/parameterized/rule.rbs +28 -0
- data/sig/{lrama → generated/lrama}/grammar/percent_code.rbs +8 -0
- data/sig/generated/lrama/grammar/precedence.rbs +45 -0
- data/sig/{lrama/grammar/error_token.rbs → generated/lrama/grammar/printer.rbs} +8 -3
- data/sig/generated/lrama/grammar/reference.rbs +31 -0
- data/sig/generated/lrama/grammar/rule.rbs +83 -0
- data/sig/generated/lrama/grammar/rule_builder.rbs +91 -0
- data/sig/generated/lrama/grammar/symbol.rbs +89 -0
- data/sig/generated/lrama/grammar/symbols/resolver.rbs +131 -0
- data/sig/generated/lrama/grammar/type.rbs +21 -0
- data/sig/generated/lrama/grammar/union.rbs +17 -0
- data/sig/generated/lrama/grammar.rbs +289 -0
- data/sig/generated/lrama/lexer/location.rbs +12 -3
- data/sig/generated/lrama/lexer/token/base.rbs +53 -0
- data/sig/generated/lrama/lexer/token/char.rbs +9 -2
- data/sig/generated/lrama/lexer/token/empty.rbs +11 -0
- data/sig/generated/lrama/lexer/token/ident.rbs +2 -2
- data/sig/generated/lrama/lexer/token/instantiate_rule.rbs +5 -5
- data/sig/generated/lrama/lexer/token/int.rbs +13 -0
- data/sig/generated/lrama/lexer/token/str.rbs +10 -0
- data/sig/generated/lrama/lexer/token/tag.rbs +2 -2
- data/sig/generated/lrama/lexer/token/token.rbs +10 -0
- data/sig/generated/lrama/lexer/token/user_code.rbs +2 -2
- data/sig/generated/lrama/lexer/token.rbs +1 -39
- data/sig/generated/lrama/lexer.rbs +54 -0
- data/sig/generated/lrama/logger.rbs +6 -0
- data/sig/generated/lrama/option_parser.rbs +52 -0
- data/sig/{lrama → generated/lrama}/options.rbs +27 -3
- data/sig/generated/lrama/reporter/conflicts.rbs +18 -0
- data/sig/generated/lrama/reporter/grammar.rbs +13 -0
- data/sig/generated/lrama/reporter/precedences.rbs +15 -0
- data/sig/generated/lrama/reporter/profile/call_stack.rbs +19 -0
- data/sig/generated/lrama/reporter/profile/memory.rbs +19 -0
- data/sig/generated/lrama/reporter/rules.rbs +13 -0
- data/sig/generated/lrama/reporter/states.rbs +69 -0
- data/sig/generated/lrama/reporter/terms.rbs +13 -0
- data/sig/generated/lrama/reporter.rbs +13 -0
- data/sig/generated/lrama/state/action/goto.rbs +28 -0
- data/sig/generated/lrama/state/action/reduce.rbs +49 -0
- data/sig/generated/lrama/state/action/shift.rbs +33 -0
- data/sig/generated/lrama/state/inadequacy_annotation.rbs +45 -0
- data/sig/generated/lrama/state/item.rbs +75 -0
- data/sig/generated/lrama/state/reduce_reduce_conflict.rbs +19 -0
- data/sig/generated/lrama/state/resolved_conflict.rbs +38 -0
- data/sig/generated/lrama/state/shift_reduce_conflict.rbs +19 -0
- data/sig/generated/lrama/state.rbs +231 -0
- data/sig/generated/lrama/states.rbs +215 -0
- data/sig/generated/lrama/tracer/actions.rbs +13 -0
- data/sig/generated/lrama/tracer/closure.rbs +13 -0
- data/sig/generated/lrama/tracer/duration.rbs +18 -0
- data/sig/generated/lrama/tracer/only_explicit_rules.rbs +13 -0
- data/sig/generated/lrama/tracer/rules.rbs +13 -0
- data/sig/generated/lrama/tracer/state.rbs +16 -0
- data/sig/generated/lrama/tracer.rbs +23 -0
- data/sig/generated/lrama/version.rbs +5 -0
- data/sig/generated/lrama/warnings/conflicts.rbs +13 -0
- data/sig/generated/lrama/warnings/implicit_empty.rbs +17 -0
- data/sig/generated/lrama/warnings/name_conflicts.rbs +31 -0
- data/sig/generated/lrama/warnings/redefined_rules.rbs +13 -0
- data/sig/generated/lrama/warnings/required.rbs +13 -0
- data/sig/generated/lrama/warnings/useless_precedence.rbs +13 -0
- data/sig/generated/lrama/warnings.rbs +11 -0
- data/sig/railroad_diagrams/railroad_diagrams.rbs +16 -0
- data/template/bison/_yacc.h +8 -0
- data/template/diagram/diagram.html +102 -0
- metadata +126 -66
- data/lib/lrama/counterexamples/production_path.rb +0 -19
- data/lib/lrama/counterexamples/start_path.rb +0 -23
- data/lib/lrama/counterexamples/transition_path.rb +0 -19
- data/lib/lrama/diagnostics.rb +0 -36
- data/lib/lrama/grammar/parameterizing_rule/rule.rb +0 -24
- data/lib/lrama/grammar/parameterizing_rule.rb +0 -5
- data/lib/lrama/grammar_validator.rb +0 -37
- data/lib/lrama/report/duration.rb +0 -27
- data/lib/lrama/report/profile.rb +0 -16
- data/lib/lrama/report.rb +0 -4
- data/lib/lrama/state/reduce.rb +0 -37
- data/lib/lrama/state/shift.rb +0 -15
- data/lib/lrama/states_reporter.rb +0 -362
- data/lib/lrama/trace_reporter.rb +0 -45
- data/sig/generated/lrama/trace_reporter.rbs +0 -25
- data/sig/lrama/counterexamples/derivation.rbs +0 -33
- data/sig/lrama/counterexamples/example.rbs +0 -45
- data/sig/lrama/counterexamples/path.rbs +0 -21
- data/sig/lrama/counterexamples/production_path.rbs +0 -11
- data/sig/lrama/counterexamples/start_path.rbs +0 -13
- data/sig/lrama/counterexamples/state_item.rbs +0 -10
- data/sig/lrama/counterexamples/transition_path.rbs +0 -11
- data/sig/lrama/counterexamples/triple.rbs +0 -20
- data/sig/lrama/counterexamples.rbs +0 -29
- data/sig/lrama/grammar/auxiliary.rbs +0 -10
- data/sig/lrama/grammar/code/destructor_code.rbs +0 -14
- data/sig/lrama/grammar/code/printer_code.rbs +0 -14
- data/sig/lrama/grammar/code/rule_action.rbs +0 -19
- data/sig/lrama/grammar/code.rbs +0 -24
- data/sig/lrama/grammar/destructor.rbs +0 -13
- data/sig/lrama/grammar/parameterizing_rule/resolver.rbs +0 -24
- data/sig/lrama/grammar/parameterizing_rule/rhs.rbs +0 -14
- data/sig/lrama/grammar/parameterizing_rule/rule.rbs +0 -16
- data/sig/lrama/grammar/parameterizing_rule.rbs +0 -6
- data/sig/lrama/grammar/precedence.rbs +0 -13
- data/sig/lrama/grammar/printer.rbs +0 -13
- data/sig/lrama/grammar/reference.rbs +0 -22
- data/sig/lrama/grammar/rule.rbs +0 -45
- data/sig/lrama/grammar/rule_builder.rbs +0 -47
- data/sig/lrama/grammar/symbol.rbs +0 -38
- data/sig/lrama/grammar/symbols/resolver.rbs +0 -60
- data/sig/lrama/grammar/type.rbs +0 -11
- data/sig/lrama/grammar/union.rbs +0 -12
- data/sig/lrama/grammar.rbs +0 -108
- data/sig/lrama/report/duration.rbs +0 -11
- data/sig/lrama/report/profile.rbs +0 -7
- data/sig/lrama/state/reduce.rbs +0 -20
- data/sig/lrama/state/reduce_reduce_conflict.rbs +0 -13
- data/sig/lrama/state/resolved_conflict.rbs +0 -14
- data/sig/lrama/state/shift.rbs +0 -14
- data/sig/lrama/state/shift_reduce_conflict.rbs +0 -13
- data/sig/lrama/state.rbs +0 -79
- data/sig/lrama/states/item.rbs +0 -30
- data/sig/lrama/states.rbs +0 -101
- data/sig/lrama/warning.rbs +0 -16
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Generated from lib/lrama/state/resolved_conflict.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class State
|
|
5
|
+
# * state: A state on which the conflct is resolved
|
|
6
|
+
# * symbol: A symbol under discussion
|
|
7
|
+
# * reduce: A reduce under discussion
|
|
8
|
+
# * which: For which a conflict is resolved. :shift, :reduce or :error (for nonassociative)
|
|
9
|
+
# * resolved_by_precedence: If the conflict is resolved by precedence definition or not
|
|
10
|
+
class ResolvedConflict
|
|
11
|
+
type which_enum = :reduce | :shift | :error
|
|
12
|
+
|
|
13
|
+
attr_reader state: State
|
|
14
|
+
|
|
15
|
+
attr_reader symbol: Grammar::Symbol
|
|
16
|
+
|
|
17
|
+
attr_reader reduce: State::Action::Reduce
|
|
18
|
+
|
|
19
|
+
attr_reader which: which_enum
|
|
20
|
+
|
|
21
|
+
attr_reader resolved_by_precedence: bool
|
|
22
|
+
|
|
23
|
+
# @rbs (state: State, symbol: Grammar::Symbol, reduce: State::Action::Reduce, which: which_enum, resolved_by_precedence: bool) -> void
|
|
24
|
+
def initialize: (state: State, symbol: Grammar::Symbol, reduce: State::Action::Reduce, which: which_enum, resolved_by_precedence: bool) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs () -> (::String | bot)
|
|
27
|
+
def report_message: () -> (::String | bot)
|
|
28
|
+
|
|
29
|
+
# @rbs () -> (::String | bot)
|
|
30
|
+
def report_precedences_message: () -> (::String | bot)
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
# @rbs () -> (::String | bot)
|
|
35
|
+
def how_resolved: () -> (::String | bot)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated from lib/lrama/state/shift_reduce_conflict.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class State
|
|
5
|
+
class ShiftReduceConflict
|
|
6
|
+
attr_reader symbols: Array[Grammar::Symbol]
|
|
7
|
+
|
|
8
|
+
attr_reader shift: State::Action::Shift
|
|
9
|
+
|
|
10
|
+
attr_reader reduce: State::Action::Reduce
|
|
11
|
+
|
|
12
|
+
# @rbs (symbols: Array[Grammar::Symbol], shift: State::Action::Shift, reduce: State::Action::Reduce) -> void
|
|
13
|
+
def initialize: (symbols: Array[Grammar::Symbol], shift: State::Action::Shift, reduce: State::Action::Reduce) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs () -> :shift_reduce
|
|
16
|
+
def type: () -> :shift_reduce
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Generated from lib/lrama/state.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class State
|
|
5
|
+
type conflict = State::ShiftReduceConflict | State::ReduceReduceConflict
|
|
6
|
+
|
|
7
|
+
type transition = Action::Shift | Action::Goto
|
|
8
|
+
|
|
9
|
+
type lookahead_set = Hash[Item, Array[Grammar::Symbol]]
|
|
10
|
+
|
|
11
|
+
@id: Integer
|
|
12
|
+
|
|
13
|
+
@accessing_symbol: Grammar::Symbol
|
|
14
|
+
|
|
15
|
+
@kernels: Array[Item]
|
|
16
|
+
|
|
17
|
+
@items: Array[Item]
|
|
18
|
+
|
|
19
|
+
@items_to_state: Hash[Array[Item], State]
|
|
20
|
+
|
|
21
|
+
@conflicts: Array[conflict]
|
|
22
|
+
|
|
23
|
+
@resolved_conflicts: Array[ResolvedConflict]
|
|
24
|
+
|
|
25
|
+
@default_reduction_rule: Grammar::Rule?
|
|
26
|
+
|
|
27
|
+
@closure: Array[Item]
|
|
28
|
+
|
|
29
|
+
@nterm_transitions: Array[Action::Goto]
|
|
30
|
+
|
|
31
|
+
@term_transitions: Array[Action::Shift]
|
|
32
|
+
|
|
33
|
+
@transitions: Array[transition]
|
|
34
|
+
|
|
35
|
+
@internal_dependencies: Hash[Action::Goto, Array[Action::Goto]]
|
|
36
|
+
|
|
37
|
+
@successor_dependencies: Hash[Action::Goto, Array[Action::Goto]]
|
|
38
|
+
|
|
39
|
+
attr_reader id: Integer
|
|
40
|
+
|
|
41
|
+
attr_reader accessing_symbol: Grammar::Symbol
|
|
42
|
+
|
|
43
|
+
attr_reader kernels: Array[Item]
|
|
44
|
+
|
|
45
|
+
attr_reader conflicts: Array[conflict]
|
|
46
|
+
|
|
47
|
+
attr_reader resolved_conflicts: Array[ResolvedConflict]
|
|
48
|
+
|
|
49
|
+
attr_reader default_reduction_rule: Grammar::Rule?
|
|
50
|
+
|
|
51
|
+
attr_reader closure: Array[Item]
|
|
52
|
+
|
|
53
|
+
attr_reader items: Array[Item]
|
|
54
|
+
|
|
55
|
+
attr_reader annotation_list: Array[InadequacyAnnotation]
|
|
56
|
+
|
|
57
|
+
attr_reader predecessors: Array[State]
|
|
58
|
+
|
|
59
|
+
attr_reader items_to_state: Hash[Array[Item], State]
|
|
60
|
+
|
|
61
|
+
attr_reader lane_items: Hash[State, Array[[ Item, Item ]]]
|
|
62
|
+
|
|
63
|
+
attr_accessor _transitions: Array[[ Grammar::Symbol, Array[Item] ]]
|
|
64
|
+
|
|
65
|
+
attr_accessor reduces: Array[Action::Reduce]
|
|
66
|
+
|
|
67
|
+
attr_accessor ielr_isocores: Array[State]
|
|
68
|
+
|
|
69
|
+
attr_accessor lalr_isocore: State
|
|
70
|
+
|
|
71
|
+
attr_accessor lookaheads_recomputed: bool
|
|
72
|
+
|
|
73
|
+
attr_accessor follow_kernel_items: Hash[Action::Goto, Hash[Item, bool]]
|
|
74
|
+
|
|
75
|
+
attr_accessor always_follows: Hash[Action::Goto, Array[Grammar::Symbol]]
|
|
76
|
+
|
|
77
|
+
attr_accessor goto_follows: Hash[Action::Goto, Array[Grammar::Symbol]]
|
|
78
|
+
|
|
79
|
+
# @rbs (Integer id, Grammar::Symbol accessing_symbol, Array[Item] kernels) -> void
|
|
80
|
+
def initialize: (Integer id, Grammar::Symbol accessing_symbol, Array[Item] kernels) -> void
|
|
81
|
+
|
|
82
|
+
# @rbs (State other) -> bool
|
|
83
|
+
def ==: (State other) -> bool
|
|
84
|
+
|
|
85
|
+
# @rbs (Array[Item] closure) -> void
|
|
86
|
+
def closure=: (Array[Item] closure) -> void
|
|
87
|
+
|
|
88
|
+
# @rbs () -> Array[Action::Reduce]
|
|
89
|
+
def non_default_reduces: () -> Array[Action::Reduce]
|
|
90
|
+
|
|
91
|
+
# @rbs () -> void
|
|
92
|
+
def compute_transitions_and_reduces: () -> void
|
|
93
|
+
|
|
94
|
+
# @rbs (Grammar::Symbol next_sym, State next_state) -> void
|
|
95
|
+
def set_lane_items: (Grammar::Symbol next_sym, State next_state) -> void
|
|
96
|
+
|
|
97
|
+
# @rbs (Array[Item] items, State next_state) -> void
|
|
98
|
+
def set_items_to_state: (Array[Item] items, State next_state) -> void
|
|
99
|
+
|
|
100
|
+
# @rbs (Grammar::Rule rule, Array[Grammar::Symbol] look_ahead) -> void
|
|
101
|
+
def set_look_ahead: (Grammar::Rule rule, Array[Grammar::Symbol] look_ahead) -> void
|
|
102
|
+
|
|
103
|
+
# @rbs (Grammar::Rule rule, Hash[Grammar::Symbol, Array[Action::Goto]] sources) -> void
|
|
104
|
+
def set_look_ahead_sources: (Grammar::Rule rule, Hash[Grammar::Symbol, Array[Action::Goto]] sources) -> void
|
|
105
|
+
|
|
106
|
+
# @rbs () -> Array[Action::Goto]
|
|
107
|
+
def nterm_transitions: () -> Array[Action::Goto]
|
|
108
|
+
|
|
109
|
+
# @rbs () -> Array[Action::Shift]
|
|
110
|
+
def term_transitions: () -> Array[Action::Shift]
|
|
111
|
+
|
|
112
|
+
# @rbs () -> Array[transition]
|
|
113
|
+
def transitions: () -> Array[transition]
|
|
114
|
+
|
|
115
|
+
# @rbs (transition transition, State next_state) -> void
|
|
116
|
+
def update_transition: (transition transition, State next_state) -> void
|
|
117
|
+
|
|
118
|
+
# @rbs () -> void
|
|
119
|
+
def update_transitions_caches: () -> void
|
|
120
|
+
|
|
121
|
+
# @rbs () -> Array[Action::Shift]
|
|
122
|
+
def selected_term_transitions: () -> Array[Action::Shift]
|
|
123
|
+
|
|
124
|
+
# Move to next state by sym
|
|
125
|
+
#
|
|
126
|
+
# @rbs (Grammar::Symbol sym) -> State
|
|
127
|
+
def transition: (Grammar::Symbol sym) -> State
|
|
128
|
+
|
|
129
|
+
# @rbs (Item item) -> Action::Reduce
|
|
130
|
+
def find_reduce_by_item!: (Item item) -> Action::Reduce
|
|
131
|
+
|
|
132
|
+
# @rbs (Grammar::Rule default_reduction_rule) -> void
|
|
133
|
+
def default_reduction_rule=: (Grammar::Rule default_reduction_rule) -> void
|
|
134
|
+
|
|
135
|
+
# @rbs () -> bool
|
|
136
|
+
def has_conflicts?: () -> bool
|
|
137
|
+
|
|
138
|
+
# @rbs () -> Array[conflict]
|
|
139
|
+
def sr_conflicts: () -> Array[conflict]
|
|
140
|
+
|
|
141
|
+
# @rbs () -> Array[conflict]
|
|
142
|
+
def rr_conflicts: () -> Array[conflict]
|
|
143
|
+
|
|
144
|
+
# Clear information related to conflicts.
|
|
145
|
+
# IELR computation re-calculates conflicts and default reduction of states
|
|
146
|
+
# after LALR computation.
|
|
147
|
+
# Call this method before IELR computation to avoid duplicated conflicts information
|
|
148
|
+
# is stored.
|
|
149
|
+
#
|
|
150
|
+
# @rbs () -> void
|
|
151
|
+
def clear_conflicts: () -> void
|
|
152
|
+
|
|
153
|
+
# @rbs () -> bool
|
|
154
|
+
def split_state?: () -> bool
|
|
155
|
+
|
|
156
|
+
# Definition 3.40 (propagate_lookaheads)
|
|
157
|
+
#
|
|
158
|
+
# @rbs (State next_state) -> lookahead_set
|
|
159
|
+
def propagate_lookaheads: (State next_state) -> lookahead_set
|
|
160
|
+
|
|
161
|
+
# Definition 3.43 (is_compatible)
|
|
162
|
+
#
|
|
163
|
+
# @rbs (lookahead_set filtered_lookahead) -> bool
|
|
164
|
+
def is_compatible?: (lookahead_set filtered_lookahead) -> bool
|
|
165
|
+
|
|
166
|
+
# Definition 3.38 (lookahead_set_filters)
|
|
167
|
+
#
|
|
168
|
+
# @rbs () -> lookahead_set
|
|
169
|
+
def lookahead_set_filters: () -> lookahead_set
|
|
170
|
+
|
|
171
|
+
# Definition 3.27 (inadequacy_lists)
|
|
172
|
+
#
|
|
173
|
+
# @rbs () -> Hash[Grammar::Symbol, Array[Action::Shift | Action::Reduce]]
|
|
174
|
+
def inadequacy_list: () -> Hash[Grammar::Symbol, Array[Action::Shift | Action::Reduce]]
|
|
175
|
+
|
|
176
|
+
# Definition 3.30 (annotate_manifestation)
|
|
177
|
+
#
|
|
178
|
+
# @rbs () -> void
|
|
179
|
+
def annotate_manifestation: () -> void
|
|
180
|
+
|
|
181
|
+
# Definition 3.32 (annotate_predecessor)
|
|
182
|
+
#
|
|
183
|
+
# @rbs (State predecessor) -> void
|
|
184
|
+
def annotate_predecessor: (State predecessor) -> void
|
|
185
|
+
|
|
186
|
+
# @rbs () -> Array[Item]
|
|
187
|
+
def first_kernels: () -> Array[Item]
|
|
188
|
+
|
|
189
|
+
# @rbs (Array[InadequacyAnnotation] propagating_list) -> void
|
|
190
|
+
def append_annotation_list: (Array[InadequacyAnnotation] propagating_list) -> void
|
|
191
|
+
|
|
192
|
+
# Definition 3.31 (compute_lhs_contributions)
|
|
193
|
+
#
|
|
194
|
+
# @rbs (Grammar::Symbol sym, Grammar::Symbol token) -> (nil | Hash[Item, bool])
|
|
195
|
+
def lhs_contributions: (Grammar::Symbol sym, Grammar::Symbol token) -> (nil | Hash[Item, bool])
|
|
196
|
+
|
|
197
|
+
# Definition 3.26 (item_lookahead_sets)
|
|
198
|
+
#
|
|
199
|
+
# @rbs () -> lookahead_set
|
|
200
|
+
def item_lookahead_set: () -> lookahead_set
|
|
201
|
+
|
|
202
|
+
# @rbs (lookahead_set k) -> void
|
|
203
|
+
def item_lookahead_set=: (lookahead_set k) -> void
|
|
204
|
+
|
|
205
|
+
# @rbs (Item item) -> Array[[State, Item]]
|
|
206
|
+
def predecessors_with_item: (Item item) -> Array[[ State, Item ]]
|
|
207
|
+
|
|
208
|
+
# @rbs (State prev_state) -> void
|
|
209
|
+
def append_predecessor: (State prev_state) -> void
|
|
210
|
+
|
|
211
|
+
# Definition 3.39 (compute_goto_follow_set)
|
|
212
|
+
#
|
|
213
|
+
# @rbs (Grammar::Symbol nterm_token) -> Array[Grammar::Symbol]
|
|
214
|
+
def goto_follow_set: (Grammar::Symbol nterm_token) -> Array[Grammar::Symbol]
|
|
215
|
+
|
|
216
|
+
# Definition 3.8 (Goto Follows Internal Relation)
|
|
217
|
+
#
|
|
218
|
+
# @rbs (Action::Goto goto) -> Array[Action::Goto]
|
|
219
|
+
def internal_dependencies: (Action::Goto goto) -> Array[Action::Goto]
|
|
220
|
+
|
|
221
|
+
# Definition 3.5 (Goto Follows Successor Relation)
|
|
222
|
+
#
|
|
223
|
+
# @rbs (Action::Goto goto) -> Array[Action::Goto]
|
|
224
|
+
def successor_dependencies: (Action::Goto goto) -> Array[Action::Goto]
|
|
225
|
+
|
|
226
|
+
# Definition 3.9 (Goto Follows Predecessor Relation)
|
|
227
|
+
#
|
|
228
|
+
# @rbs (Action::Goto goto) -> Array[Action::Goto]
|
|
229
|
+
def predecessor_dependencies: (Action::Goto goto) -> Array[Action::Goto]
|
|
230
|
+
end
|
|
231
|
+
end
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# Generated from lib/lrama/states.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
# States is passed to a template file
|
|
5
|
+
#
|
|
6
|
+
# "Efficient Computation of LALR(1) Look-Ahead Sets"
|
|
7
|
+
# https://dl.acm.org/doi/pdf/10.1145/69622.357187
|
|
8
|
+
class States
|
|
9
|
+
type state_id = Integer
|
|
10
|
+
|
|
11
|
+
type rule_id = Integer
|
|
12
|
+
|
|
13
|
+
include Grammar::_DelegatedMethods
|
|
14
|
+
|
|
15
|
+
@grammar: Grammar
|
|
16
|
+
|
|
17
|
+
@tracer: Tracer
|
|
18
|
+
|
|
19
|
+
@states: Array[State]
|
|
20
|
+
|
|
21
|
+
@direct_read_sets: Hash[State::Action::Goto, Bitmap::bitmap]
|
|
22
|
+
|
|
23
|
+
@reads_relation: Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
24
|
+
|
|
25
|
+
@read_sets: Hash[State::Action::Goto, Bitmap::bitmap]
|
|
26
|
+
|
|
27
|
+
@includes_relation: Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
28
|
+
|
|
29
|
+
@lookback_relation: Hash[state_id, Hash[rule_id, Array[State::Action::Goto]]]
|
|
30
|
+
|
|
31
|
+
@follow_sets: Hash[State::Action::Goto, Bitmap::bitmap]
|
|
32
|
+
|
|
33
|
+
@la: Hash[state_id, Hash[rule_id, Bitmap::bitmap]]
|
|
34
|
+
|
|
35
|
+
extend Forwardable
|
|
36
|
+
|
|
37
|
+
include Lrama::Tracer::Duration
|
|
38
|
+
|
|
39
|
+
attr_reader states: Array[State]
|
|
40
|
+
|
|
41
|
+
attr_reader reads_relation: Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
42
|
+
|
|
43
|
+
attr_reader includes_relation: Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
44
|
+
|
|
45
|
+
attr_reader lookback_relation: Hash[state_id, Hash[rule_id, Array[State::Action::Goto]]]
|
|
46
|
+
|
|
47
|
+
# @rbs (Grammar grammar, Tracer tracer) -> void
|
|
48
|
+
def initialize: (Grammar grammar, Tracer tracer) -> void
|
|
49
|
+
|
|
50
|
+
# @rbs () -> void
|
|
51
|
+
def compute: () -> void
|
|
52
|
+
|
|
53
|
+
# @rbs () -> void
|
|
54
|
+
def compute_ielr: () -> void
|
|
55
|
+
|
|
56
|
+
# @rbs () -> Integer
|
|
57
|
+
def states_count: () -> Integer
|
|
58
|
+
|
|
59
|
+
# @rbs () -> Hash[State::Action::Goto, Array[Grammar::Symbol]]
|
|
60
|
+
def direct_read_sets: () -> Hash[State::Action::Goto, Array[Grammar::Symbol]]
|
|
61
|
+
|
|
62
|
+
# @rbs () -> Hash[State::Action::Goto, Array[Grammar::Symbol]]
|
|
63
|
+
def read_sets: () -> Hash[State::Action::Goto, Array[Grammar::Symbol]]
|
|
64
|
+
|
|
65
|
+
# @rbs () -> Hash[State::Action::Goto, Array[Grammar::Symbol]]
|
|
66
|
+
def follow_sets: () -> Hash[State::Action::Goto, Array[Grammar::Symbol]]
|
|
67
|
+
|
|
68
|
+
# @rbs () -> Hash[state_id, Hash[rule_id, Array[Grammar::Symbol]]]
|
|
69
|
+
def la: () -> Hash[state_id, Hash[rule_id, Array[Grammar::Symbol]]]
|
|
70
|
+
|
|
71
|
+
# @rbs () -> Integer
|
|
72
|
+
def sr_conflicts_count: () -> Integer
|
|
73
|
+
|
|
74
|
+
# @rbs () -> Integer
|
|
75
|
+
def rr_conflicts_count: () -> Integer
|
|
76
|
+
|
|
77
|
+
# @rbs (Logger logger) -> void
|
|
78
|
+
def validate!: (Logger logger) -> void
|
|
79
|
+
|
|
80
|
+
def compute_la_sources_for_conflicted_states: () -> untyped
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
|
|
84
|
+
# @rbs (Grammar::Symbol accessing_symbol, Array[State::Item] kernels, Hash[Array[State::Item], State] states_created) -> [State, bool]
|
|
85
|
+
def create_state: (Grammar::Symbol accessing_symbol, Array[State::Item] kernels, Hash[Array[State::Item], State] states_created) -> [ State, bool ]
|
|
86
|
+
|
|
87
|
+
# @rbs (State state) -> void
|
|
88
|
+
def setup_state: (State state) -> void
|
|
89
|
+
|
|
90
|
+
# @rbs (Array[State] states, State state) -> void
|
|
91
|
+
def enqueue_state: (Array[State] states, State state) -> void
|
|
92
|
+
|
|
93
|
+
# @rbs () -> void
|
|
94
|
+
def compute_lr0_states: () -> void
|
|
95
|
+
|
|
96
|
+
# @rbs () -> Array[State::Action::Goto]
|
|
97
|
+
def nterm_transitions: () -> Array[State::Action::Goto]
|
|
98
|
+
|
|
99
|
+
# @rbs () -> void
|
|
100
|
+
def compute_look_ahead_sets: () -> void
|
|
101
|
+
|
|
102
|
+
# @rbs () -> void
|
|
103
|
+
def compute_direct_read_sets: () -> void
|
|
104
|
+
|
|
105
|
+
# @rbs () -> void
|
|
106
|
+
def compute_reads_relation: () -> void
|
|
107
|
+
|
|
108
|
+
# @rbs () -> void
|
|
109
|
+
def compute_read_sets: () -> void
|
|
110
|
+
|
|
111
|
+
# Execute transition of state by symbols
|
|
112
|
+
# then return final state.
|
|
113
|
+
#
|
|
114
|
+
# @rbs (State state, Array[Grammar::Symbol] symbols) -> State
|
|
115
|
+
def transition: (State state, Array[Grammar::Symbol] symbols) -> State
|
|
116
|
+
|
|
117
|
+
# @rbs () -> void
|
|
118
|
+
def compute_includes_relation: () -> void
|
|
119
|
+
|
|
120
|
+
# @rbs () -> void
|
|
121
|
+
def compute_lookback_relation: () -> void
|
|
122
|
+
|
|
123
|
+
# @rbs () -> void
|
|
124
|
+
def compute_follow_sets: () -> void
|
|
125
|
+
|
|
126
|
+
# @rbs () -> void
|
|
127
|
+
def compute_la: () -> void
|
|
128
|
+
|
|
129
|
+
# @rbs (Bitmap::bitmap bit) -> Array[Grammar::Symbol]
|
|
130
|
+
def bitmap_to_terms: (Bitmap::bitmap bit) -> Array[Grammar::Symbol]
|
|
131
|
+
|
|
132
|
+
# @rbs () -> void
|
|
133
|
+
def compute_conflicts: () -> void
|
|
134
|
+
|
|
135
|
+
# @rbs () -> void
|
|
136
|
+
def compute_shift_reduce_conflicts: () -> void
|
|
137
|
+
|
|
138
|
+
# @rbs (Grammar::Precedence shift_prec, Grammar::Precedence reduce_prec, State::ResolvedConflict resolved_conflict) -> void
|
|
139
|
+
def mark_precedences_used: (Grammar::Precedence shift_prec, Grammar::Precedence reduce_prec, State::ResolvedConflict resolved_conflict) -> void
|
|
140
|
+
|
|
141
|
+
# @rbs () -> void
|
|
142
|
+
def compute_reduce_reduce_conflicts: () -> void
|
|
143
|
+
|
|
144
|
+
# @rbs () -> void
|
|
145
|
+
def compute_default_reduction: () -> void
|
|
146
|
+
|
|
147
|
+
# @rbs () -> void
|
|
148
|
+
def clear_conflicts: () -> void
|
|
149
|
+
|
|
150
|
+
# Definition 3.15 (Predecessors)
|
|
151
|
+
#
|
|
152
|
+
# @rbs () -> void
|
|
153
|
+
def compute_predecessors: () -> void
|
|
154
|
+
|
|
155
|
+
# Definition 3.16 (follow_kernel_items)
|
|
156
|
+
#
|
|
157
|
+
# @rbs () -> void
|
|
158
|
+
def compute_follow_kernel_items: () -> void
|
|
159
|
+
|
|
160
|
+
# @rbs () -> Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
161
|
+
def compute_goto_internal_relation: () -> Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
162
|
+
|
|
163
|
+
# @rbs () -> Hash[State::Action::Goto, Bitmap::bitmap]
|
|
164
|
+
def compute_goto_bitmaps: () -> Hash[State::Action::Goto, Bitmap::bitmap]
|
|
165
|
+
|
|
166
|
+
# Definition 3.20 (always_follows, one closure)
|
|
167
|
+
#
|
|
168
|
+
# @rbs () -> void
|
|
169
|
+
def compute_always_follows: () -> void
|
|
170
|
+
|
|
171
|
+
# @rbs () -> Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
172
|
+
def compute_goto_successor_or_internal_relation: () -> Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
173
|
+
|
|
174
|
+
# @rbs () -> Hash[State::Action::Goto, Bitmap::bitmap]
|
|
175
|
+
def compute_transition_bitmaps: () -> Hash[State::Action::Goto, Bitmap::bitmap]
|
|
176
|
+
|
|
177
|
+
# Definition 3.24 (goto_follows, via always_follows)
|
|
178
|
+
#
|
|
179
|
+
# @rbs () -> void
|
|
180
|
+
def compute_goto_follows: () -> void
|
|
181
|
+
|
|
182
|
+
# @rbs () -> Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
183
|
+
def compute_goto_internal_or_predecessor_dependencies: () -> Hash[State::Action::Goto, Array[State::Action::Goto]]
|
|
184
|
+
|
|
185
|
+
# @rbs () -> Hash[State::Action::Goto, Bitmap::bitmap]
|
|
186
|
+
def compute_always_follows_bitmaps: () -> Hash[State::Action::Goto, Bitmap::bitmap]
|
|
187
|
+
|
|
188
|
+
# @rbs () -> void
|
|
189
|
+
def split_states: () -> void
|
|
190
|
+
|
|
191
|
+
# @rbs () -> void
|
|
192
|
+
def compute_inadequacy_annotations: () -> void
|
|
193
|
+
|
|
194
|
+
# @rbs (State state, State::lookahead_set filtered_lookaheads) -> void
|
|
195
|
+
def merge_lookaheads: (State state, State::lookahead_set filtered_lookaheads) -> void
|
|
196
|
+
|
|
197
|
+
# @rbs (State state, State::Action::Shift | State::Action::Goto transition, State next_state) -> void
|
|
198
|
+
def compute_state: (State state, State::Action::Shift | State::Action::Goto transition, State next_state) -> void
|
|
199
|
+
|
|
200
|
+
# @rbs (Logger logger) -> void
|
|
201
|
+
def validate_conflicts_within_threshold!: (Logger logger) -> void
|
|
202
|
+
|
|
203
|
+
# @rbs (Logger logger) -> bool
|
|
204
|
+
def conflicts_within_threshold?: (Logger logger) -> bool
|
|
205
|
+
|
|
206
|
+
# @rbs (Logger logger) -> bool
|
|
207
|
+
def sr_conflicts_within_threshold?: (Logger logger) -> bool
|
|
208
|
+
|
|
209
|
+
# @rbs (Logger logger) -> bool
|
|
210
|
+
def rr_conflicts_within_threshold?: (Logger logger) -> bool
|
|
211
|
+
|
|
212
|
+
# @rbs () -> void
|
|
213
|
+
def clear_look_ahead_sets: () -> void
|
|
214
|
+
end
|
|
215
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from lib/lrama/tracer/actions.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Tracer
|
|
5
|
+
class Actions
|
|
6
|
+
# @rbs (IO io, ?actions: bool, **bool options) -> void
|
|
7
|
+
def initialize: (IO io, ?actions: bool, **bool options) -> void
|
|
8
|
+
|
|
9
|
+
# @rbs (Lrama::Grammar grammar) -> void
|
|
10
|
+
def trace: (Lrama::Grammar grammar) -> void
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from lib/lrama/tracer/closure.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Tracer
|
|
5
|
+
class Closure
|
|
6
|
+
# @rbs (IO io, ?automaton: bool, ?closure: bool, **bool) -> void
|
|
7
|
+
def initialize: (IO io, ?automaton: bool, ?closure: bool, **bool) -> void
|
|
8
|
+
|
|
9
|
+
# @rbs (Lrama::State state) -> void
|
|
10
|
+
def trace: (Lrama::State state) -> void
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated from lib/lrama/tracer/duration.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Tracer
|
|
5
|
+
module Duration
|
|
6
|
+
@_report_duration_enabled: bool
|
|
7
|
+
|
|
8
|
+
# @rbs () -> void
|
|
9
|
+
def self.enable: () -> void
|
|
10
|
+
|
|
11
|
+
# @rbs () -> bool
|
|
12
|
+
def self.enabled?: () -> bool
|
|
13
|
+
|
|
14
|
+
# @rbs [T] (_ToS message) { -> T } -> T
|
|
15
|
+
def report_duration: [T] (_ToS message) { () -> T } -> T
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from lib/lrama/tracer/only_explicit_rules.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Tracer
|
|
5
|
+
class OnlyExplicitRules
|
|
6
|
+
# @rbs (IO io, ?only_explicit: bool, **bool) -> void
|
|
7
|
+
def initialize: (IO io, ?only_explicit: bool, **bool) -> void
|
|
8
|
+
|
|
9
|
+
# @rbs (Lrama::Grammar grammar) -> void
|
|
10
|
+
def trace: (Lrama::Grammar grammar) -> void
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from lib/lrama/tracer/rules.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Tracer
|
|
5
|
+
class Rules
|
|
6
|
+
# @rbs (IO io, ?rules: bool, ?only_explicit: bool, **bool) -> void
|
|
7
|
+
def initialize: (IO io, ?rules: bool, ?only_explicit: bool, **bool) -> void
|
|
8
|
+
|
|
9
|
+
# @rbs (Lrama::Grammar grammar) -> void
|
|
10
|
+
def trace: (Lrama::Grammar grammar) -> void
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generated from lib/lrama/tracer/state.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Tracer
|
|
5
|
+
class State
|
|
6
|
+
# @rbs (IO io, ?automaton: bool, ?closure: bool, **bool) -> void
|
|
7
|
+
def initialize: (IO io, ?automaton: bool, ?closure: bool, **bool) -> void
|
|
8
|
+
|
|
9
|
+
# @rbs (Lrama::State state) -> void
|
|
10
|
+
def trace: (Lrama::State state) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (Integer state_count, Lrama::State state) -> void
|
|
13
|
+
def trace_list_append: (Integer state_count, Lrama::State state) -> void
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Generated from lib/lrama/tracer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Tracer
|
|
5
|
+
# @rbs (IO io, **bool options) -> void
|
|
6
|
+
def initialize: (IO io, **bool options) -> void
|
|
7
|
+
|
|
8
|
+
# @rbs (Lrama::Grammar grammar) -> void
|
|
9
|
+
def trace: (Lrama::Grammar grammar) -> void
|
|
10
|
+
|
|
11
|
+
# @rbs (Lrama::State state) -> void
|
|
12
|
+
def trace_closure: (Lrama::State state) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (Lrama::State state) -> void
|
|
15
|
+
def trace_state: (Lrama::State state) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs (Integer state_count, Lrama::State state) -> void
|
|
18
|
+
def trace_state_list_append: (Integer state_count, Lrama::State state) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs () -> void
|
|
21
|
+
def enable_duration: () -> void
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from lib/lrama/warnings/conflicts.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Warnings
|
|
5
|
+
class Conflicts
|
|
6
|
+
# @rbs (Lrama::Logger logger, bool warnings) -> void
|
|
7
|
+
def initialize: (Lrama::Logger logger, bool warnings) -> void
|
|
8
|
+
|
|
9
|
+
# @rbs (Lrama::States states) -> void
|
|
10
|
+
def warn: (Lrama::States states) -> void
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Generated from lib/lrama/warnings/implicit_empty.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Warnings
|
|
5
|
+
# Warning rationale: Empty rules are easily overlooked and ambiguous
|
|
6
|
+
# - Empty alternatives like `rule: | "token";` can be missed during code reading
|
|
7
|
+
# - Difficult to distinguish between intentional empty rules vs. omissions
|
|
8
|
+
# - Explicit marking with %empty directive comment improves clarity
|
|
9
|
+
class ImplicitEmpty
|
|
10
|
+
# @rbs (Lrama::Logger logger, bool warnings) -> void
|
|
11
|
+
def initialize: (Lrama::Logger logger, bool warnings) -> void
|
|
12
|
+
|
|
13
|
+
# @rbs (Lrama::Grammar grammar) -> void
|
|
14
|
+
def warn: (Lrama::Grammar grammar) -> void
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated from lib/lrama/warnings/name_conflicts.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Lrama
|
|
4
|
+
class Warnings
|
|
5
|
+
# Warning rationale: Parameterized rule names conflicting with symbol names
|
|
6
|
+
# - When a %rule name is identical to a terminal or non-terminal symbol name,
|
|
7
|
+
# it reduces grammar readability and may cause unintended behavior
|
|
8
|
+
# - Detecting these conflicts helps improve grammar definition quality
|
|
9
|
+
class NameConflicts
|
|
10
|
+
# @rbs (Lrama::Logger logger, bool warnings) -> void
|
|
11
|
+
def initialize: (Lrama::Logger logger, bool warnings) -> void
|
|
12
|
+
|
|
13
|
+
# @rbs (Lrama::Grammar grammar) -> void
|
|
14
|
+
def warn: (Lrama::Grammar grammar) -> void
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
# @rbs (Lrama::Grammar grammar) -> Set[String]
|
|
19
|
+
def collect_symbol_names: (Lrama::Grammar grammar) -> Set[String]
|
|
20
|
+
|
|
21
|
+
# @rbs (Array[untyped] terms, Set[String] symbol_names) -> void
|
|
22
|
+
def collect_term_names: (Array[untyped] terms, Set[String] symbol_names) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs (Array[untyped] nterms, Set[String] symbol_names) -> void
|
|
25
|
+
def collect_nterm_names: (Array[untyped] nterms, Set[String] symbol_names) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs (Array[untyped] parameterized_rules, Set[String] symbol_names) -> void
|
|
28
|
+
def check_conflicts: (Array[untyped] parameterized_rules, Set[String] symbol_names) -> void
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|