Skip to content

Commit 95ab3e9

Browse files
authored
Merge pull request #399 from ydah/fix-error-when-use-own-stack
Fix an error for using parameterizing rules with own stack in semantic action
2 parents 3b1ade0 + 6e36867 commit 95ab3e9

File tree

3 files changed

+4
-1
lines changed

3 files changed

+4
-1
lines changed

lib/lrama/grammar/rule_builder.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def process_rhs(parameterizing_rule_resolver)
130130
@replaced_rhs << lhs_token
131131
parameterizing_rule_resolver.created_lhs_list << lhs_token
132132
parameterizing_rule.rhs_list.each do |r|
133-
rule_builder = RuleBuilder.new(@rule_counter, @midrule_action_counter, lhs_tag: token.lhs_tag, skip_preprocess_references: true)
133+
rule_builder = RuleBuilder.new(@rule_counter, @midrule_action_counter, lhs_tag: token.lhs_tag)
134134
rule_builder.lhs = lhs_token
135135
r.symbols.each { |sym| rule_builder.add_rhs(bindings.resolve_symbol(sym)) }
136136
rule_builder.line = line

spec/fixtures/integration/user_defined_parameterizing_rules.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ static int yyerror(YYLTYPE *loc, const char *str);
2525
{
2626
$$ = $1 + $2;
2727
printf("(%d, %d)\n", $1, $2);
28+
printf("(%d, %d)\n", $:1, $:2);
2829
}
2930
;
3031

spec/lrama/integration_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,10 @@ def generate_object(grammar_file_path, c_path, obj_path, command_args: [])
9898
it "prints messages corresponding to rules" do
9999
expected = <<~STR
100100
(2, 3)
101+
(-2, -1)
101102
pair even odd: 5
102103
(1, 0)
104+
(-2, -1)
103105
pair odd even: 1
104106
STR
105107
test_parser("user_defined_parameterizing_rules", "2 3 ; 1 0", expected)

0 commit comments

Comments
 (0)