Error if Start rule not found

This commit is contained in:
Josh Holtrop 2021-06-21 22:48:17 -04:00
parent 70118dd019
commit f77218801f
2 changed files with 5 additions and 0 deletions

View File

@ -22,6 +22,9 @@ module Imbecile
rule_names[rule.name] ||= [] rule_names[rule.name] ||= []
rule_names[rule.name] << rule rule_names[rule.name] << rule
end end
unless rule_names["Start"]
raise Error.new("Start rule not found")
end
lexer_dfa = LexerDFA.new(@grammar.tokens) lexer_dfa = LexerDFA.new(@grammar.tokens)
classname = @grammar.classname || output_file.sub(%r{[^a-zA-Z0-9].*}, "").capitalize 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, "<>") erb = ERB.new(File.read(File.join(File.dirname(File.expand_path(__FILE__)), "../../assets/parser.d.erb")), nil, "<>")

View File

@ -3,6 +3,8 @@ module Imbecile
class Rule class Rule
attr_reader :components
def initialize(name, rule, code) def initialize(name, rule, code)
@name = name @name = name
rule_components = rule.split(/\s+/) rule_components = rule.split(/\s+/)