Add EOF token to Start rule patterns
This commit is contained in:
parent
6026bf1514
commit
ceb7e9ee32
@ -3,9 +3,11 @@ class Imbecile
|
|||||||
class Parser
|
class Parser
|
||||||
|
|
||||||
def initialize(tokens, rules)
|
def initialize(tokens, rules)
|
||||||
|
token_eof = Token.new("$", nil, TOKEN_EOF)
|
||||||
@item_sets = []
|
@item_sets = []
|
||||||
item_sets_set = Set.new
|
item_sets_set = Set.new
|
||||||
start_items = rules["Start"].patterns.map do |pattern|
|
start_items = rules["Start"].patterns.map do |pattern|
|
||||||
|
pattern.components << token_eof
|
||||||
Item.new(pattern, 0)
|
Item.new(pattern, 0)
|
||||||
end
|
end
|
||||||
start_item_set = ItemSet.new(start_items)
|
start_item_set = ItemSet.new(start_items)
|
||||||
|
@ -22,9 +22,11 @@ class Imbecile
|
|||||||
@name = name
|
@name = name
|
||||||
@pattern = pattern
|
@pattern = pattern
|
||||||
@id = id
|
@id = id
|
||||||
regex = Regex.new(pattern)
|
unless pattern.nil?
|
||||||
regex.nfa.end_state.accepts = self
|
regex = Regex.new(pattern)
|
||||||
@nfa = regex.nfa
|
regex.nfa.end_state.accepts = self
|
||||||
|
@nfa = regex.nfa
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def c_name
|
def c_name
|
||||||
|
Loading…
x
Reference in New Issue
Block a user