Store parse result; add result_type grammar keyword

This commit is contained in:
josh committed 2022-10-12 20:56:14 -04:00
1 parent 02be6de48e
commit 31970522de
3 files changed
+39 -16

No files matched your search

+10
View File
@@ -8,6 +8,7 @@ class Propane
attr_reader :rules
attr_reader :tokens
attr_reader :code_blocks
attr_reader :result_type
def initialize(input)
@patterns = []
@@ -18,6 +19,7 @@ class Propane
@next_line_number = @line_number
@mode = nil
@input = input.gsub("\r\n", "\n")
@result_type = "void *"
parse_grammar!
end
@@ -35,6 +37,7 @@ class Propane
elsif @mode.nil? && parse_mode_label!
elsif parse_module_statement!
elsif parse_class_statement!
elsif parse_result_type_statement!
elsif parse_pattern_statement!
elsif parse_token_statement!
elsif parse_tokenid_statement!
@@ -83,6 +86,13 @@ class Propane
end
end
def parse_result_type_statement!
if consume!(/result_type\s+/)
md = consume!(/([^;]+);/, "expected result type expression")
@result_type = md[1].strip
end
end
def parse_token_statement!
if consume!(/token\s+/)
md = consume!(/([a-zA-Z_][a-zA-Z_0-9]*)/, "expected token name")