diff --git a/lib/imbecile/generator.rb b/lib/imbecile/generator.rb index c8bf164..68530be 100644 --- a/lib/imbecile/generator.rb +++ b/lib/imbecile/generator.rb @@ -22,6 +22,9 @@ module Imbecile rule_names[rule.name] ||= [] rule_names[rule.name] << rule end + unless rule_names["Start"] + raise Error.new("Start rule not found") + end lexer_dfa = LexerDFA.new(@grammar.tokens) classname = @grammar.classname || output_file.sub(%r{[^a-zA-Z0-9].*}, "").capitalize erb = ERB.new(File.read(File.join(File.dirname(File.expand_path(__FILE__)), "../../assets/parser.d.erb")), nil, "<>") diff --git a/lib/imbecile/grammar/rule.rb b/lib/imbecile/grammar/rule.rb index 00218bf..31368e0 100644 --- a/lib/imbecile/grammar/rule.rb +++ b/lib/imbecile/grammar/rule.rb @@ -3,6 +3,8 @@ module Imbecile class Rule + attr_reader :components + def initialize(name, rule, code) @name = name rule_components = rule.split(/\s+/)