Execute rule user code blocks when reducing the rule

This commit is contained in:
josh committed 2022-10-13 04:56:50 -04:00
1 parent 74beaf7ed8
commit 727c8cd1ea
4 files changed
+90 -13

No files matched your search

+27
View File
@@ -19,6 +19,8 @@ describe Propane do
Results = Struct.new(:stdout, :stderr, :status)
def run
stdout, stderr, status = Open3.capture3("spec/run/testparser")
File.binwrite("spec/run/.stderr", stderr)
File.binwrite("spec/run/.stdout", stdout)
Results.new(stdout, stderr, status)
end
@@ -225,4 +227,29 @@ EOF
"pass2",
])
end
it "executes user code associated with a parser rule" do
write_grammar <<EOF
token a;
token b;
Start -> A B <<
writeln("Start!");
>>
A -> a <<
writeln("A!");
>>
B -> b <<
writeln("B!");
>>
EOF
build_parser
compile("spec/test_parser_rule_user_code.d")
results = run
expect(results.status).to eq 0
verify_lines(results.stdout, [
"A!",
"B!",
"Start!",
])
end
end