From f77218801f478b652cbf2d99cfc2fef0caa9bf0f Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 21 Jun 2021 22:48:17 -0400 Subject: [PATCH] Error if Start rule not found --- lib/imbecile/generator.rb | 3 +++ lib/imbecile/grammar/rule.rb | 2 ++ 2 files changed, 5 insertions(+) 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+/)