Give a better error message when a referenced ptype has not been declared

This commit is contained in:
josh committed 2024-05-09 17:35:27 -04:00
1 parent 985b180f62
commit 0d1ee74ca6
2 files changed
+48

No files matched your search

+12
View File
@@ -51,6 +51,7 @@ class Propane
unless found_default
raise Error.new("No patterns found for default mode")
end
check_ptypes!
# Add EOF token.
@grammar.tokens << Token.new("$EOF", nil, nil)
tokens_by_name = {}
@@ -131,6 +132,17 @@ class Propane
@parser = Parser.new(@grammar, rule_sets, @log)
end
# Check that any referenced ptypes have been defined.
def check_ptypes!
(@grammar.patterns + @grammar.tokens + @grammar.rules).each do |potor|
if potor.ptypename
unless @grammar.ptypes.include?(potor.ptypename)
raise Error.new("Error: Line #{potor.line_number}: ptype #{potor.ptypename} not declared. Declare with `ptype` statement.")
end
end
end
end
# Generate and add rules for any optional components.
def generate_optional_component_rules!(tokens_by_name)
optional_rules_added = Set.new