Add pattern statement
This commit is contained in:
1 parent
04367db0ac
commit
e7e30c4f28
5 files changed
+51
-8
No files matched your search
@@ -32,6 +32,7 @@ class Propane
|
||||
elsif parse_comment_line!
|
||||
elsif parse_module_statement!
|
||||
elsif parse_class_statement!
|
||||
elsif parse_pattern_statement!
|
||||
elsif parse_token_statement!
|
||||
elsif parse_tokenid_statement!
|
||||
elsif parse_drop_statement!
|
||||
@@ -125,6 +126,18 @@ class Propane
|
||||
end
|
||||
end
|
||||
|
||||
def parse_pattern_statement!
|
||||
if pattern = parse_pattern!
|
||||
consume!(/\s+/)
|
||||
unless code = parse_code_block!
|
||||
raise Error.new("Line #{@line_number}: expected code block to follow pattern")
|
||||
end
|
||||
code_id = @code_id
|
||||
@code_id += 1
|
||||
@patterns << Pattern.new(pattern: pattern, line_number: @line_number, code: code, code_id: code_id)
|
||||
end
|
||||
end
|
||||
|
||||
def parse_pattern!
|
||||
if md = consume!(%r{/})
|
||||
pattern = ""
|
||||
|
||||
@@ -19,8 +19,10 @@ class Propane
|
||||
TOKEN_NONE
|
||||
elsif state.accepts.drop?
|
||||
TOKEN_DROP
|
||||
else
|
||||
elsif state.accepts.token
|
||||
state.accepts.token.id
|
||||
else
|
||||
TOKEN_NONE
|
||||
end
|
||||
code_id =
|
||||
if state.accepts && state.accepts.code_id
|
||||
|
||||
Reference in new issue
Block a user