diff --git a/lib/propane/generator.rb b/lib/propane/generator.rb index f6e8d26..ae82334 100644 --- a/lib/propane/generator.rb +++ b/lib/propane/generator.rb @@ -10,7 +10,6 @@ class Propane else @log = StringIO.new end - @classname = @grammar.classname || File.basename(output_file).sub(%r{[^a-zA-Z0-9].*}, "").capitalize @language = if output_file =~ /\.([a-z]+)$/ $1 diff --git a/lib/propane/grammar.rb b/lib/propane/grammar.rb index c971c37..e6d2161 100644 --- a/lib/propane/grammar.rb +++ b/lib/propane/grammar.rb @@ -5,7 +5,6 @@ class Propane # Reserve identifiers beginning with a double-underscore for internal use. IDENTIFIER_REGEX = /(?:[a-zA-Z]|_[a-zA-Z0-9])[a-zA-Z_0-9]*/ - attr_reader :classname attr_reader :modulename attr_reader :patterns attr_reader :rules @@ -49,7 +48,6 @@ class Propane elsif parse_comment_line! elsif @mode.nil? && parse_mode_label! elsif parse_module_statement! - elsif parse_class_statement! elsif parse_ptype_statement! elsif parse_pattern_statement! elsif parse_token_statement! @@ -90,16 +88,6 @@ class Propane end end - def parse_class_statement! - if consume!(/class\s+/) - md = consume!(/([\w.]+)\s*/, "expected class name") - @classname = md[1] - consume!(/;/, "expected `;'") - @mode = nil - true - end - end - def parse_ptype_statement! if consume!(/ptype\s+/) name = "default" diff --git a/spec/propane/grammar_spec.rb b/spec/propane/grammar_spec.rb index 43da1f1..27cb992 100644 --- a/spec/propane/grammar_spec.rb +++ b/spec/propane/grammar_spec.rb @@ -5,7 +5,6 @@ class Propane # Comment line module a.b; -class Foobar; ptype XYZ * ; token while; @@ -30,7 +29,6 @@ B -> << >> EOF grammar = Grammar.new(input) - expect(grammar.classname).to eq "Foobar" expect(grammar.modulename).to eq "a.b" expect(grammar.ptype).to eq "XYZ *" expect(grammar.ptypes).to eq("default" => "XYZ *") @@ -38,44 +36,44 @@ EOF o = grammar.tokens.find {|token| token.name == "while"} expect(o).to_not be_nil - expect(o.line_number).to eq 7 + expect(o.line_number).to eq 6 o = grammar.patterns.find {|pattern| pattern.token == o} expect(o).to_not be_nil expect(o.pattern).to eq "while" - expect(o.line_number).to eq 7 + expect(o.line_number).to eq 6 expect(o.code).to be_nil o = grammar.tokens.find {|token| token.name == "id"} expect(o).to_not be_nil - expect(o.line_number).to eq 10 + expect(o.line_number).to eq 9 o = grammar.patterns.find {|pattern| pattern.token == o} expect(o).to_not be_nil expect(o.pattern).to eq "[a-zA-Z_][a-zA-Z_0-9]*" - expect(o.line_number).to eq 10 + expect(o.line_number).to eq 9 expect(o.code).to be_nil o = grammar.tokens.find {|token| token.name == "token_with_code"} expect(o).to_not be_nil - expect(o.line_number).to eq 12 + expect(o.line_number).to eq 11 o = grammar.patterns.find {|pattern| pattern.token == o} expect(o).to_not be_nil expect(o.pattern).to eq "token_with_code" - expect(o.line_number).to eq 12 + expect(o.line_number).to eq 11 expect(o.code).to eq "Code for the token\n" o = grammar.tokens.find {|token| token.name == "token_with_no_pattern"} expect(o).to_not be_nil - expect(o.line_number).to eq 16 + expect(o.line_number).to eq 15 o = grammar.patterns.find {|pattern| pattern.token == o} expect(o).to be_nil o = grammar.patterns.find {|pattern| pattern.pattern == "\\s+"} expect(o).to_not be_nil - expect(o.line_number).to eq 18 + expect(o.line_number).to eq 17 expect(o.token).to be_nil expect(o.code).to be_nil @@ -84,19 +82,19 @@ EOF o = grammar.rules[0] expect(o.name).to eq "A" expect(o.components).to eq %w[B] - expect(o.line_number).to eq 20 + expect(o.line_number).to eq 19 expect(o.code).to eq " a = 42;\n" o = grammar.rules[1] expect(o.name).to eq "B" expect(o.components).to eq %w[C while id] - expect(o.line_number).to eq 23 + expect(o.line_number).to eq 22 expect(o.code).to be_nil o = grammar.rules[2] expect(o.name).to eq "B" expect(o.components).to eq [] - expect(o.line_number).to eq 24 + expect(o.line_number).to eq 23 expect(o.code).to eq " b = 0;\n" end