aboutsummaryrefslogtreecommitdiffstats
path: root/tool/lrama/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb
diff options
context:
space:
mode:
authoryui-knk <spiketeika@gmail.com>2023-11-18 17:46:38 +0900
committerYuichiro Kaneko <spiketeika@gmail.com>2023-11-18 19:38:55 +0900
commitc56dd94db0001b900a2dab3ee350a182d6bb42af (patch)
tree7a4f5236452ae721f67fe6602f3dcbc68a085ac1 /tool/lrama/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb
parentf479e629ab497f325091096819fa5bf60c0d03b2 (diff)
downloadruby-c56dd94db0001b900a2dab3ee350a182d6bb42af.tar.gz
Lrama v0.5.10
Diffstat (limited to 'tool/lrama/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb')
-rw-r--r--tool/lrama/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/tool/lrama/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb b/tool/lrama/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb
new file mode 100644
index 0000000000..142d6c156b
--- /dev/null
+++ b/tool/lrama/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb
@@ -0,0 +1,20 @@
+module Lrama
+ class Grammar
+ class ParameterizingRules
+ class Builder
+ class NonemptyList < Base
+ def build
+ validate_argument_number!
+
+ rules = []
+ nonempty_list_token = Lrama::Lexer::Token::Ident.new(s_value: "nonempty_list_#{@token.s_value}")
+ rules << Rule.new(id: @rule_counter.increment, _lhs: @lhs, _rhs: [nonempty_list_token], token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
+ rules << Rule.new(id: @rule_counter.increment, _lhs: nonempty_list_token, _rhs: [@token], token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
+ rules << Rule.new(id: @rule_counter.increment, _lhs: nonempty_list_token, _rhs: [nonempty_list_token, @token], token_code: @user_code, precedence_sym: @precedence_sym, lineno: @line)
+ rules
+ end
+ end
+ end
+ end
+ end
+end