Skip to content

Commit

Permalink
Fix steep check error
Browse files Browse the repository at this point in the history
  • Loading branch information
ydah committed Mar 21, 2024
1 parent 3bbff02 commit fd4f102
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 5 deletions.
1 change: 1 addition & 0 deletions Steepfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ target :lib do
check "lib/lrama/grammar/counter.rb"
check "lib/lrama/grammar/error_token.rb"
check "lib/lrama/grammar/parameterizing_rule"
check "lib/lrama/grammar/inline"
check "lib/lrama/grammar/parameterizing_rules"
check "lib/lrama/grammar/symbols"
check "lib/lrama/grammar/percent_code.rb"
Expand Down
8 changes: 5 additions & 3 deletions lib/lrama/grammar/rule_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ def build_rules
position_in_original_rule_rhs: @position_in_original_rule_rhs, precedence_sym: precedence_sym, lineno: line
)
@rules = [rule]
@midrule_action_rules.each do |r|
r.original_rule = rule
end
end
@parameterizing_rules = @rule_builders_for_parameterizing_rules.map do |rule_builder|
rule_builder.rules
Expand All @@ -95,9 +98,6 @@ def build_rules
@midrule_action_rules = @rule_builders_for_derived_rules.map do |rule_builder|
rule_builder.rules
end.flatten
@midrule_action_rules.each do |r|
r.original_rule = rule
end
end

# rhs is a mixture of variety type of tokens like `Ident`, `InstantiateRule`, `UserCode` and so on.
Expand Down Expand Up @@ -196,6 +196,8 @@ def resolve_inline_rhs(rule_builder, inline_rhs, index)

def replace_inline_user_code(inline_rhs, index)
return user_code if inline_rhs.user_code.nil?
return user_code if user_code.nil?

code = user_code.s_value.gsub(/\$#{index + 1}/, inline_rhs.user_code.s_value)
Lrama::Lexer::Token::UserCode.new(s_value: code, location: user_code.location)
end
Expand Down
13 changes: 13 additions & 0 deletions sig/lrama/grammar/inline/resolver.rbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module Lrama
class Grammar
class Inline
class Resolver
attr_accessor rules: Array[Grammar::Inline::Rule]

def initialize: () -> void
def add_inline_rule: (Grammar::Inline::Rule rule) -> void
def find: (Lexer::Token token) -> Grammar::Inline::Rule?
end
end
end
end
13 changes: 13 additions & 0 deletions sig/lrama/grammar/inline/rhs.rbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module Lrama
class Grammar
class Inline
class Rhs
attr_reader symbols: Array[untyped]
attr_reader user_code: Lexer::Token::UserCode?
attr_reader precedence_sym: Lexer::Token?

def initialize: () -> void
end
end
end
end
12 changes: 12 additions & 0 deletions sig/lrama/grammar/inline/rule.rbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module Lrama
class Grammar
class Inline
class Rule
attr_reader name: String
attr_reader rhs_list: Array[Grammar::Inline::Rhs]

def initialize: (String name, Array[Grammar::Inline::Rhs] rhs_list) -> void
end
end
end
end
7 changes: 5 additions & 2 deletions sig/lrama/grammar/rule_builder.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,19 @@ module Lrama
def user_code=: (Lexer::Token::UserCode? user_code) -> void
def precedence_sym=: (Lexer::Token? precedence_sym) -> void
def complete_input: () -> void
def setup_rules: (Grammar::ParameterizingRule::Resolver parameterizing_rule_resolver) -> void
def setup_rules: (Grammar::ParameterizingRule::Resolver parameterizing_rule_resolver, Grammar::Inline::Resolver inline_resolver) -> void
def rules: () -> Array[Rule]

private

def freeze_rhs: () -> void
def preprocess_references: () -> void
def build_rules: () -> void
def process_rhs: (Grammar::ParameterizingRule::Resolver parameterizing_rule_resolver) -> void
def process_rhs: (Grammar::ParameterizingRule::Resolver parameterizing_rule_resolver, Grammar::Inline::Resolver inline_resolver) -> void
def lhs_s_value: (Lexer::Token::InstantiateRule token, Grammar::Binding bindings) -> String
def resolve_inline: (Grammar::ParameterizingRule::Resolver parameterizing_rule_resolver, Grammar::Inline::Resolver inline_resolver) -> void
def resolve_inline_rhs: (RuleBuilder rule_builder, Grammar::Inline::Rhs inline_rhs, Integer index) -> void
def replace_inline_user_code: (Grammar::Inline::Rhs inline_rhs, Integer index) -> Lexer::Token::UserCode?
def numberize_references: () -> void
def flush_user_code: () -> void
end
Expand Down

0 comments on commit fd4f102

Please sign in to comment.