From 8dc27686aab3a18078c10d4a9df4caede947ba8b Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 12 Nov 2022 13:29:10 -0500 Subject: [PATCH] Rename result_type to ptype, parser result to pvalue --- assets/parser.d.erb | 42 ++++++++++++++++++------------------ lib/propane/generator.rb | 6 +++--- lib/propane/grammar.rb | 12 +++++------ spec/propane/grammar_spec.rb | 4 ++-- spec/propane_spec.rb | 4 ++-- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/assets/parser.d.erb b/assets/parser.d.erb index d397410..51554d7 100644 --- a/assets/parser.d.erb +++ b/assets/parser.d.erb @@ -156,7 +156,7 @@ class <%= @classname %> size_t col; size_t length; uint token; - <%= @grammar.result_type %> result; + <%= @grammar.ptype %> pvalue; } private string m_input; @@ -346,10 +346,10 @@ class <%= @classname %> uint n_reduce_entries; } - private struct StateResult + private struct StateValue { uint state; - <%= @grammar.result_type %> result; + <%= @grammar.ptype %> pvalue; this(uint state) { @@ -378,7 +378,7 @@ class <%= @classname %> private Lexer m_lexer; - private <%= @grammar.result_type %> parse_result; + private <%= @grammar.ptype %> parse_result; this(string input) { @@ -389,9 +389,9 @@ class <%= @classname %> { Lexer.LexedToken lexed_token; uint token = _TOKEN_COUNT; - StateResult[] stateresults = new StateResult[](1); + StateValue[] statevalues = new StateValue[](1); uint reduced_rule_set = 0xFFFFFFFFu; - <%= @grammar.result_type %> reduced_parse_result; + <%= @grammar.ptype %> reduced_parse_result; for (;;) { if (token == _TOKEN_COUNT) @@ -402,46 +402,46 @@ class <%= @classname %> uint shift_state = 0xFFFFFFFFu; if (reduced_rule_set != 0xFFFFFFFFu) { - shift_state = check_shift(stateresults[$-1].state, reduced_rule_set); + shift_state = check_shift(statevalues[$-1].state, reduced_rule_set); } if (shift_state == 0xFFFFFFFFu) { - shift_state = check_shift(stateresults[$-1].state, token); + shift_state = check_shift(statevalues[$-1].state, token); if ((shift_state != 0xFFFFFFFFu) && (token == TOKEN_0EOF)) { /* Successful parse. */ - parse_result = stateresults[$-1].result; + parse_result = statevalues[$-1].pvalue; return true; } } if (shift_state != 0xFFFFFFFFu) { /* We have something to shift. */ - stateresults ~= StateResult(shift_state); + statevalues ~= StateValue(shift_state); if (reduced_rule_set == 0xFFFFFFFFu) { /* We shifted a token, mark it consumed. */ token = _TOKEN_COUNT; - stateresults[$-1].result = lexed_token.result; + statevalues[$-1].pvalue = lexed_token.pvalue; } else { /* We shifted a RuleSet. */ - stateresults[$-1].result = reduced_parse_result; - <%= @grammar.result_type %> new_parse_result; + statevalues[$-1].pvalue = reduced_parse_result; + <%= @grammar.ptype %> new_parse_result; reduced_parse_result = new_parse_result; reduced_rule_set = 0xFFFFFFFFu; } continue; } - uint reduce_index = check_reduce(stateresults[$-1].state, token); + uint reduce_index = check_reduce(statevalues[$-1].state, token); if (reduce_index != 0xFFFFFFFFu) { /* We have something to reduce. */ - reduced_parse_result = user_code(reduces[reduce_index].rule, stateresults, reduces[reduce_index].n_states); + reduced_parse_result = user_code(reduces[reduce_index].rule, statevalues, reduces[reduce_index].n_states); reduced_rule_set = reduces[reduce_index].rule_set; - stateresults.length -= reduces[reduce_index].n_states; + statevalues.length -= reduces[reduce_index].n_states; continue; } @@ -459,7 +459,7 @@ class <%= @classname %> } } - @property <%= @grammar.result_type %> result() + @property <%= @grammar.ptype %> result() { return parse_result; } @@ -515,11 +515,11 @@ class <%= @classname %> * * @param rule The ID of the rule. * - * @return Parse result. + * @return Parse value. */ - private <%= @grammar.result_type %> user_code(uint rule, StateResult[] stateresults, uint n_states) + private <%= @grammar.ptype %> user_code(uint rule, StateValue[] statevalues, uint n_states) { - <%= @grammar.result_type %> _result; + <%= @grammar.ptype %> _pvalue; switch (rule) { @@ -533,7 +533,7 @@ class <%= @classname %> default: break; } - return _result; + return _pvalue; } } } diff --git a/lib/propane/generator.rb b/lib/propane/generator.rb index d23b7a5..297d9cc 100644 --- a/lib/propane/generator.rb +++ b/lib/propane/generator.rb @@ -168,15 +168,15 @@ class Propane end if parser code = code.gsub(/\$\$/) do |match| - "_result" + "_pvalue" end code = code.gsub(/\$(\d+)/) do |match| index = $1.to_i - "stateresults[$-1-n_states+#{index}].result" + "statevalues[$-1-n_states+#{index}].pvalue" end else code = code.gsub(/\$\$/) do |match| - "lt.result" + "lt.pvalue" end code = code.gsub(/\$mode\(([a-zA-Z_][a-zA-Z_0-9]*)\)/) do |match| mode_name = $1 diff --git a/lib/propane/grammar.rb b/lib/propane/grammar.rb index f737bf7..d9f9ade 100644 --- a/lib/propane/grammar.rb +++ b/lib/propane/grammar.rb @@ -8,7 +8,7 @@ class Propane attr_reader :rules attr_reader :tokens attr_reader :code_blocks - attr_reader :result_type + attr_reader :ptype def initialize(input) @patterns = [] @@ -19,7 +19,7 @@ class Propane @next_line_number = @line_number @mode = nil @input = input.gsub("\r\n", "\n") - @result_type = "void *" + @ptype = "void *" parse_grammar! end @@ -37,7 +37,7 @@ class Propane elsif @mode.nil? && parse_mode_label! elsif parse_module_statement! elsif parse_class_statement! - elsif parse_result_type_statement! + elsif parse_ptype_statement! elsif parse_pattern_statement! elsif parse_token_statement! elsif parse_tokenid_statement! @@ -86,10 +86,10 @@ class Propane end end - def parse_result_type_statement! - if consume!(/result_type\s+/) + def parse_ptype_statement! + if consume!(/ptype\s+/) md = consume!(/([^;]+);/, "expected result type expression") - @result_type = md[1].strip + @ptype = md[1].strip end end diff --git a/spec/propane/grammar_spec.rb b/spec/propane/grammar_spec.rb index 2d795b4..285d50e 100644 --- a/spec/propane/grammar_spec.rb +++ b/spec/propane/grammar_spec.rb @@ -6,7 +6,7 @@ class Propane module a.b; class Foobar; -result_type XYZ * ; +ptype XYZ * ; token while; @@ -32,7 +32,7 @@ EOF grammar = Grammar.new(input) expect(grammar.classname).to eq "Foobar" expect(grammar.modulename).to eq "a.b" - expect(grammar.result_type).to eq "XYZ *" + expect(grammar.ptype).to eq "XYZ *" o = grammar.tokens.find {|token| token.name == "while"} expect(o).to_not be_nil diff --git a/spec/propane_spec.rb b/spec/propane_spec.rb index 71914b8..eb968a3 100644 --- a/spec/propane_spec.rb +++ b/spec/propane_spec.rb @@ -263,7 +263,7 @@ EOF it "parses lists" do write_grammar < As << $$ = $1; @@ -320,7 +320,7 @@ EOF it "allows storing a result value for the lexer" do write_grammar <>