lrama 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
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