lrama 0.6.1 → 0.6.2

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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yaml +7 -2
  3. data/NEWS.md +9 -0
  4. data/lib/lrama/command.rb +10 -2
  5. data/lib/lrama/context.rb +2 -2
  6. data/lib/lrama/counterexamples/example.rb +2 -2
  7. data/lib/lrama/grammar/code.rb +1 -1
  8. data/lib/lrama/grammar/parameterizing_rule/resolver.rb +17 -9
  9. data/lib/lrama/grammar/rule.rb +2 -2
  10. data/lib/lrama/grammar/rule_builder.rb +31 -36
  11. data/lib/lrama/grammar/stdlib.y +80 -0
  12. data/lib/lrama/grammar.rb +11 -2
  13. data/lib/lrama/lexer.rb +1 -0
  14. data/lib/lrama/parser.rb +474 -451
  15. data/lib/lrama/states/item.rb +17 -13
  16. data/lib/lrama/states_reporter.rb +8 -10
  17. data/lib/lrama/version.rb +1 -1
  18. data/parser.y +4 -5
  19. data/sig/lrama/grammar/parameterizing_rule/resolver.rbs +1 -0
  20. metadata +3 -16
  21. data/lib/lrama/grammar/parameterizing_rules/builder/base.rb +0 -36
  22. data/lib/lrama/grammar/parameterizing_rules/builder/list.rb +0 -28
  23. data/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb +0 -28
  24. data/lib/lrama/grammar/parameterizing_rules/builder/option.rb +0 -28
  25. data/lib/lrama/grammar/parameterizing_rules/builder/separated_list.rb +0 -39
  26. data/lib/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rb +0 -34
  27. data/lib/lrama/grammar/parameterizing_rules/builder.rb +0 -60
  28. data/sig/lrama/grammar/parameterizing_rules/builder/base.rbs +0 -28
  29. data/sig/lrama/grammar/parameterizing_rules/builder/list.rbs +0 -10
  30. data/sig/lrama/grammar/parameterizing_rules/builder/nonempty_list.rbs +0 -10
  31. data/sig/lrama/grammar/parameterizing_rules/builder/option.rbs +0 -10
  32. data/sig/lrama/grammar/parameterizing_rules/builder/separated_list.rbs +0 -13
  33. data/sig/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rbs +0 -13
  34. data/sig/lrama/grammar/parameterizing_rules/builder.rbs +0 -24
@@ -5,7 +5,7 @@ module Lrama
5
5
  class Item < Struct.new(:rule, :position, keyword_init: true)
6
6
  # Optimization for States#setup_state
7
7
  def hash
8
- [rule.id, position].hash
8
+ [rule_id, position].hash
9
9
  end
10
10
 
11
11
  def rule_id
@@ -17,27 +17,31 @@ module Lrama
17
17
  end
18
18
 
19
19
  def number_of_rest_symbols
20
- rule.rhs.count - position
20
+ rhs.count - position
21
21
  end
22
22
 
23
23
  def lhs
24
24
  rule.lhs
25
25
  end
26
26
 
27
+ def rhs
28
+ rule.rhs
29
+ end
30
+
27
31
  def next_sym
28
- rule.rhs[position]
32
+ rhs[position]
29
33
  end
30
34
 
31
35
  def next_next_sym
32
- rule.rhs[position + 1]
36
+ rhs[position + 1]
33
37
  end
34
38
 
35
39
  def previous_sym
36
- rule.rhs[position - 1]
40
+ rhs[position - 1]
37
41
  end
38
42
 
39
43
  def end_of_rule?
40
- rule.rhs.count == position
44
+ rhs.count == position
41
45
  end
42
46
 
43
47
  def beginning_of_rule?
@@ -45,7 +49,7 @@ module Lrama
45
49
  end
46
50
 
47
51
  def start_item?
48
- rule.id == 0 && position == 0
52
+ rule.initial_rule? && beginning_of_rule?
49
53
  end
50
54
 
51
55
  def new_by_next_position
@@ -53,11 +57,11 @@ module Lrama
53
57
  end
54
58
 
55
59
  def symbols_before_dot
56
- rule.rhs[0...position]
60
+ rhs[0...position]
57
61
  end
58
62
 
59
63
  def symbols_after_dot
60
- rule.rhs[position..-1]
64
+ rhs[position..-1]
61
65
  end
62
66
 
63
67
  def to_s
@@ -65,14 +69,14 @@ module Lrama
65
69
  end
66
70
 
67
71
  def display_name
68
- r = rule.rhs.map(&:display_name).insert(position, "•").join(" ")
69
- "#{r} (rule #{rule.id})"
72
+ r = rhs.map(&:display_name).insert(position, "•").join(" ")
73
+ "#{r} (rule #{rule_id})"
70
74
  end
71
75
 
72
76
  # Right after position
73
77
  def display_rest
74
- r = rule.rhs[position..-1].map(&:display_name).join(" ")
75
- ". #{r} (rule #{rule.id})"
78
+ r = rhs[position..-1].map(&:display_name).join(" ")
79
+ ". #{r} (rule #{rule_id})"
76
80
  end
77
81
  end
78
82
  end
@@ -53,7 +53,7 @@ module Lrama
53
53
  last_lhs = nil
54
54
 
55
55
  @states.rules.each do |rule|
56
- if rule.rhs.empty?
56
+ if rule.empty_rule?
57
57
  r = "ε"
58
58
  else
59
59
  r = rule.rhs.map(&:display_name).join(" ")
@@ -84,17 +84,15 @@ module Lrama
84
84
  last_lhs = nil
85
85
  list = itemsets ? state.items : state.kernels
86
86
  list.sort_by {|i| [i.rule_id, i.position] }.each do |item|
87
- rule = item.rule
88
- position = item.position
89
- if rule.rhs.empty?
87
+ if item.empty_rule?
90
88
  r = "ε •"
91
89
  else
92
- r = rule.rhs.map(&:display_name).insert(position, "•").join(" ")
90
+ r = item.rhs.map(&:display_name).insert(item.position, "•").join(" ")
93
91
  end
94
- if rule.lhs == last_lhs
95
- l = " " * rule.lhs.id.s_value.length + "|"
92
+ if item.lhs == last_lhs
93
+ l = " " * item.lhs.id.s_value.length + "|"
96
94
  else
97
- l = rule.lhs.id.s_value + ":"
95
+ l = item.lhs.id.s_value + ":"
98
96
  end
99
97
  la = ""
100
98
  if lookaheads && item.end_of_rule?
@@ -104,9 +102,9 @@ module Lrama
104
102
  la = " [#{look_ahead.map(&:display_name).join(", ")}]"
105
103
  end
106
104
  end
107
- last_lhs = rule.lhs
105
+ last_lhs = item.lhs
108
106
 
109
- io << sprintf("%5i %s %s%s\n", rule.id, l, r, la)
107
+ io << sprintf("%5i %s %s%s\n", item.rule_id, l, r, la)
110
108
  end
111
109
  io << "\n"
112
110
 
data/lib/lrama/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lrama
2
- VERSION = "0.6.1".freeze
2
+ VERSION = "0.6.2".freeze
3
3
  end
data/parser.y CHANGED
@@ -69,6 +69,7 @@ rule
69
69
  {
70
70
  @grammar.initial_action = Grammar::Code::InitialActionCode.new(type: :initial_action, token_code: val[3])
71
71
  }
72
+ | "%no-stdlib" { @grammar.no_stdlib = true }
72
73
  | ";"
73
74
 
74
75
  grammar_declaration: "%union" "{"
@@ -451,9 +452,9 @@ rule
451
452
  result = builder
452
453
  }
453
454
 
454
- parameterizing_suffix: "?"
455
- | "+"
456
- | "*"
455
+ parameterizing_suffix: "?" { result = "option" }
456
+ | "+" { result = "nonempty_list" }
457
+ | "*" { result = "list" }
457
458
 
458
459
  parameterizing_args: symbol { result = [val[0]] }
459
460
  | parameterizing_args ',' symbol { result = val[0].append(val[2]) }
@@ -514,8 +515,6 @@ def parse
514
515
  @precedence_number = 0
515
516
  reset_precs
516
517
  do_parse
517
- @grammar.prepare
518
- @grammar.validate!
519
518
  @grammar
520
519
  end
521
520
  end
@@ -15,6 +15,7 @@ module Lrama
15
15
  private
16
16
 
17
17
  def select_rules: (Lexer::Token::InstantiateRule token) -> Array[Grammar::ParameterizingRule::Rule]
18
+ def select_rules_by_name: (String rule_name) -> Array[Grammar::ParameterizingRule::Rule]
18
19
  end
19
20
  end
20
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lrama
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuichiro Kaneko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-13 00:00:00.000000000 Z
11
+ date: 2024-01-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: LALR (1) parser generator written by Ruby
14
14
  email:
@@ -60,19 +60,13 @@ files:
60
60
  - lib/lrama/grammar/parameterizing_rule/resolver.rb
61
61
  - lib/lrama/grammar/parameterizing_rule/rhs.rb
62
62
  - lib/lrama/grammar/parameterizing_rule/rule.rb
63
- - lib/lrama/grammar/parameterizing_rules/builder.rb
64
- - lib/lrama/grammar/parameterizing_rules/builder/base.rb
65
- - lib/lrama/grammar/parameterizing_rules/builder/list.rb
66
- - lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb
67
- - lib/lrama/grammar/parameterizing_rules/builder/option.rb
68
- - lib/lrama/grammar/parameterizing_rules/builder/separated_list.rb
69
- - lib/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rb
70
63
  - lib/lrama/grammar/percent_code.rb
71
64
  - lib/lrama/grammar/precedence.rb
72
65
  - lib/lrama/grammar/printer.rb
73
66
  - lib/lrama/grammar/reference.rb
74
67
  - lib/lrama/grammar/rule.rb
75
68
  - lib/lrama/grammar/rule_builder.rb
69
+ - lib/lrama/grammar/stdlib.y
76
70
  - lib/lrama/grammar/symbol.rb
77
71
  - lib/lrama/grammar/type.rb
78
72
  - lib/lrama/grammar/union.rb
@@ -122,13 +116,6 @@ files:
122
116
  - sig/lrama/grammar/parameterizing_rule/resolver.rbs
123
117
  - sig/lrama/grammar/parameterizing_rule/rhs.rbs
124
118
  - sig/lrama/grammar/parameterizing_rule/rule.rbs
125
- - sig/lrama/grammar/parameterizing_rules/builder.rbs
126
- - sig/lrama/grammar/parameterizing_rules/builder/base.rbs
127
- - sig/lrama/grammar/parameterizing_rules/builder/list.rbs
128
- - sig/lrama/grammar/parameterizing_rules/builder/nonempty_list.rbs
129
- - sig/lrama/grammar/parameterizing_rules/builder/option.rbs
130
- - sig/lrama/grammar/parameterizing_rules/builder/separated_list.rbs
131
- - sig/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rbs
132
119
  - sig/lrama/grammar/percent_code.rbs
133
120
  - sig/lrama/grammar/precedence.rbs
134
121
  - sig/lrama/grammar/printer.rbs
@@ -1,36 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- # Base class for parameterizing rules builder
6
- class Base
7
- attr_reader :build_token
8
-
9
- def initialize(token, rule_counter, lhs_tag, user_code, precedence_sym, line)
10
- @args = token.args
11
- @token = @args.first
12
- @rule_counter = rule_counter
13
- @lhs_tag = lhs_tag
14
- @user_code = user_code
15
- @precedence_sym = precedence_sym
16
- @line = line
17
- @expected_argument_num = 1
18
- @build_token = nil
19
- end
20
-
21
- def build
22
- raise NotImplementedError
23
- end
24
-
25
- private
26
-
27
- def validate_argument_number!
28
- unless @args.count == @expected_argument_num
29
- raise "Invalid number of arguments. expect: #{@expected_argument_num} actual: #{@args.count}"
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,28 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- # Builder for list of general parameterizing rules
6
- class List < Base
7
-
8
- # program: list(number)
9
- #
10
- # =>
11
- #
12
- # program: list_number
13
- # list_number: ε
14
- # list_number: list_number number
15
- def build
16
- validate_argument_number!
17
-
18
- rules = []
19
- @build_token = Lrama::Lexer::Token::Ident.new(s_value: "list_#{@token.s_value}")
20
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
21
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [@build_token, @token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
22
- rules
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- # Builder for nonempty list of general parameterizing rules
6
- class NonemptyList < Base
7
-
8
- # program: nonempty_list(number)
9
- #
10
- # =>
11
- #
12
- # program: nonempty_list_number
13
- # nonempty_list_number: number
14
- # nonempty_list_number: nonempty_list_number number
15
- def build
16
- validate_argument_number!
17
-
18
- rules = []
19
- @build_token = Lrama::Lexer::Token::Ident.new(s_value: "nonempty_list_#{@token.s_value}")
20
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [@token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
21
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [@build_token, @token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
22
- rules
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- # Builder for option of general parameterizing rules
6
- class Option < Base
7
-
8
- # program: option(number)
9
- #
10
- # =>
11
- #
12
- # program: option_number
13
- # option_number: ε
14
- # option_number: number
15
- def build
16
- validate_argument_number!
17
-
18
- rules = []
19
- @build_token = Lrama::Lexer::Token::Ident.new(s_value: "option_#{@token.s_value}")
20
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
21
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [@token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
22
- rules
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,39 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- # Builder for separated list of general parameterizing rules
6
- class SeparatedList < Base
7
- def initialize(token, rule_counter, lhs_tag, user_code, precedence_sym, line)
8
- super
9
- @separator = @args[0]
10
- @token = @args[1]
11
- @expected_argument_num = 2
12
- end
13
-
14
- # program: separated_list(',', number)
15
- #
16
- # =>
17
- #
18
- # program: separated_list_number
19
- # separated_list_number: ε
20
- # separated_list_number: separated_nonempty_list_number
21
- # separated_nonempty_list_number: number
22
- # separated_nonempty_list_number: separated_nonempty_list_number ',' number
23
- def build
24
- validate_argument_number!
25
-
26
- rules = []
27
- @build_token = Lrama::Lexer::Token::Ident.new(s_value: "separated_list_#{@token.s_value}")
28
- separated_nonempty_list_token = Lrama::Lexer::Token::Ident.new(s_value: "separated_nonempty_list_#{@token.s_value}")
29
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
30
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [separated_nonempty_list_token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
31
- rules << Rule.new(id: @rule_counter.increment, _lhs: separated_nonempty_list_token, _rhs: [@token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
32
- rules << Rule.new(id: @rule_counter.increment, _lhs: separated_nonempty_list_token, _rhs: [separated_nonempty_list_token, @separator, @token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
33
- rules
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,34 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- # Builder for separated nonempty list of general parameterizing rules
6
- class SeparatedNonemptyList < Base
7
- def initialize(token, rule_counter, lhs_tag, user_code, precedence_sym, line)
8
- super
9
- @separator = @args[0]
10
- @token = @args[1]
11
- @expected_argument_num = 2
12
- end
13
-
14
- # program: separated_nonempty_list(',', number)
15
- #
16
- # =>
17
- #
18
- # program: separated_nonempty_list_number
19
- # separated_nonempty_list_number: number
20
- # separated_nonempty_list_number: separated_nonempty_list_number ',' number
21
- def build
22
- validate_argument_number!
23
-
24
- rules = []
25
- @build_token = Lrama::Lexer::Token::Ident.new(s_value: "separated_nonempty_list_#{@token.s_value}")
26
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [@token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
27
- rules << Rule.new(id: @rule_counter.increment, _lhs: @build_token, _rhs: [@build_token, @separator, @token], lhs_tag: @lhs_tag, token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
28
- rules
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,60 +0,0 @@
1
- require 'lrama/grammar/parameterizing_rules/builder/base'
2
- require 'lrama/grammar/parameterizing_rules/builder/list'
3
- require 'lrama/grammar/parameterizing_rules/builder/nonempty_list'
4
- require 'lrama/grammar/parameterizing_rules/builder/option'
5
- require 'lrama/grammar/parameterizing_rules/builder/separated_nonempty_list'
6
- require 'lrama/grammar/parameterizing_rules/builder/separated_list'
7
-
8
- module Lrama
9
- class Grammar
10
- class ParameterizingRules
11
- # Builder for parameterizing rules
12
- class Builder
13
- RULES = {
14
- option: Lrama::Grammar::ParameterizingRules::Builder::Option,
15
- "?": Lrama::Grammar::ParameterizingRules::Builder::Option,
16
- nonempty_list: Lrama::Grammar::ParameterizingRules::Builder::NonemptyList,
17
- "+": Lrama::Grammar::ParameterizingRules::Builder::NonemptyList,
18
- list: Lrama::Grammar::ParameterizingRules::Builder::List,
19
- "*": Lrama::Grammar::ParameterizingRules::Builder::List,
20
- separated_nonempty_list: Lrama::Grammar::ParameterizingRules::Builder::SeparatedNonemptyList,
21
- separated_list: Lrama::Grammar::ParameterizingRules::Builder::SeparatedList,
22
- }
23
-
24
- def initialize(token, rule_counter, lhs_tag, user_code, precedence_sym, line)
25
- @token = token
26
- @key = token.s_value.to_sym
27
- @rule_counter = rule_counter
28
- @lhs_tag = lhs_tag
29
- @user_code = user_code
30
- @precedence_sym = precedence_sym
31
- @line = line
32
- @builder = nil
33
- end
34
-
35
- def build
36
- create_builder
37
- @builder.build
38
- end
39
-
40
- def build_token
41
- create_builder
42
- @builder.build_token
43
- end
44
-
45
- private
46
-
47
- def create_builder
48
- unless @builder
49
- validate_key!
50
- @builder = RULES[@key].new(@token, @rule_counter, @lhs_tag, @user_code, @precedence_sym, @line)
51
- end
52
- end
53
-
54
- def validate_key!
55
- raise "Parameterizing rule does not exist. `#{@key}`" unless RULES.key?(@key)
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,28 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- class Base
6
- attr_reader build_token: Lexer::Token::Ident
7
-
8
- def initialize: (Lexer::Token::InstantiateRule token, Counter rule_counter, untyped lhs_tag, Lexer::Token::UserCode? user_code, Lexer::Token? precedence_sym, Integer? line) -> void
9
- def build: () -> Array[Rule]
10
-
11
- @args: Array[Lexer::Token]
12
- @token: Lexer::Token::InstantiateRule
13
- @key: Symbol
14
- @rule_counter: Counter
15
- @lhs_tag: untyped
16
- @user_code: Lexer::Token::UserCode?
17
- @precedence_sym: Lexer::Token?
18
- @line: Integer?
19
- @expected_argument_num: Integer
20
-
21
- private
22
-
23
- def validate_argument_number!: () -> void
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,10 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- class List < Base
6
- end
7
- end
8
- end
9
- end
10
- end
@@ -1,10 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- class NonemptyList < Base
6
- end
7
- end
8
- end
9
- end
10
- end
@@ -1,10 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- class Option < Base
6
- end
7
- end
8
- end
9
- end
10
- end
@@ -1,13 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- class SeparatedList < Base
6
- @separator: Lexer::Token
7
-
8
- def initialize: (Lexer::Token token, Counter rule_counter, untyped lhs_tag, Lexer::Token::UserCode? user_code, Lexer::Token? precedence_sym, Integer? line) -> void
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- class SeparatedNonemptyList < Base
6
- @separator: Lexer::Token
7
-
8
- def initialize: (Lexer::Token token, Counter rule_counter, untyped lhs_tag, Lexer::Token::UserCode? user_code, Lexer::Token? precedence_sym, Integer? line) -> void
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,24 +0,0 @@
1
- module Lrama
2
- class Grammar
3
- class ParameterizingRules
4
- class Builder
5
- RULES: Hash[Symbol, singleton(Base)]
6
-
7
- @token: Lexer::Token::InstantiateRule
8
- @key: Symbol
9
- @rule_counter: Counter
10
- @lhs_tag: untyped
11
- @user_code: Lexer::Token::UserCode?
12
- @precedence_sym: Lexer::Token?
13
- @line: Integer?
14
- @builder: Grammar::ParameterizingRules::Builder::Base
15
-
16
- def initialize: (Lexer::Token token, Counter rule_counter, untyped lhs_tag, Lexer::Token::UserCode? user_code, Lexer::Token? precedence_sym, Integer? line) -> void
17
- def build: () -> Array[Rule]
18
- def build_token: () -> Lexer::Token
19
- def create_builder: () -> void
20
- def validate_key!: () -> void
21
- end
22
- end
23
- end
24
- end