module Trenni::Fallback

def self.parse_markup(buffer, delegate, entities)

def self.parse_markup(buffer, delegate, entities)
	data = buffer.read
	encoding = buffer.encoding
	bytes = data.bytes
	
	p = 0
	# Must set pe here or it gets incorrectly set to data.length
	pe = eof = data.bytesize
	stack = []
	
	pcdata = nil
	characters_begin = characters_end = nil
	entity_begin = entity_end = nil
	identifier_begin = identifier_end = nil
	doctype_begin = doctype_end = nil
	comment_begin = comment_end = nil
	instruction_begin = instruction_end = nil
	cdata_begin = cdata_end = nil
	has_entities = has_value = false
	
	
line 459 "markup.rb"
gin
 ||= 0
e ||= data.length
s = markup_start
op = 0
d
line 236 "markup.rl"
	
line 469 "markup.rb"
gin
estEof = false
slen, _trans, _keys, _inds, _acts, _nacts = nil
goto_level = 0
resume = 10
eof_trans = 15
again = 20
test_eof = 30
out = 40
hile true
f _goto_level <= 0
f p == pe
_goto_level = _test_eof
next
nd
f cs == 0
_goto_level = _out
next
nd
nd
f _goto_level <= _resume
keys = cs << 1
inds = _markup_index_offsets[cs]
slen = _markup_key_spans[cs]
wide = ( bytes[p])
trans = if (   _slen > 0 && 
	_markup_trans_keys[_keys] <= _wide && 
	_wide <= _markup_trans_keys[_keys + 1] 
    ) then
	_markup_indicies[ _inds + _wide - _markup_trans_keys[_keys] ] 
 else 
	_markup_indicies[ _inds + _slen ]
 end
s = _markup_trans_targs[_trans]
f _markup_trans_actions[_trans] != 0
ase _markup_trans_actions[_trans]
hen 2 then
line 24 "markup.rl"
begin
identifier_begin = p
	end
hen 9 then
line 28 "markup.rl"
begin
identifier_end = p
	end
hen 17 then
line 37 "markup.rl"
begin
	end
hen 16 then
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 27 then
line 59 "markup.rl"
begin
raise ParseError.new("could not parse entity", buffer, p)
	end
hen 28 then
line 63 "markup.rl"
begin
entity_begin = p
	end
hen 26 then
line 125 "markup.rl"
begin
	end
hen 24 then
line 132 "markup.rl"
begin
raise ParseError.new("could not parse instruction", buffer, p)
	end
hen 6 then
line 145 "markup.rl"
begin
self_closing = true
	end
hen 1 then
line 185 "markup.rl"
begin
raise ParseError.new("could not parse tag", buffer, p)
	end
hen 18 then
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 25 then
line 28 "markup.rl"
begin
identifier_end = p
	end
line 122 "markup.rl"
begin
	end
hen 3 then
line 28 "markup.rl"
begin
identifier_end = p
	end
line 136 "markup.rl"
begin
self_closing = false

delegate.open_tag_begin(data.byteslice(identifier_begin...identifier_end), identifier_begin)
	end
hen 7 then
line 28 "markup.rl"
begin
identifier_end = p
	end
line 162 "markup.rl"
begin
if has_value
	pcdata = MarkupString.raw(pcdata) unless has_entities
	
	value = pcdata
else
	value = true
end

delegate.attribute(data.byteslice(identifier_begin...identifier_end), value)
	end
hen 10 then
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 11 then
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 12 then
line 53 "markup.rl"
begin
characters_end = p

pcdata << data.byteslice(characters_begin...characters_end)
	end
line 37 "markup.rl"
begin
	end
hen 13 then
line 53 "markup.rl"
begin
characters_end = p

pcdata << data.byteslice(characters_begin...characters_end)
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 31 then
line 67 "markup.rl"
begin
entity_end = p

name = data.byteslice(entity_begin...entity_end)

has_entities = true
pcdata << entities[name]
	end
line 8 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
top -= 1
cs = stack[top]
_goto_level = _again
next
nd
end
hen 30 then
line 76 "markup.rl"
begin
entity_end = p

has_entities = true
pcdata << data.byteslice(entity_begin...entity_end).to_i(16)
	end
line 8 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
top -= 1
cs = stack[top]
_goto_level = _again
next
nd
end
hen 29 then
line 83 "markup.rl"
begin
entity_end = p

has_entities = true
pcdata << data.byteslice(entity_begin...entity_end).to_i(10)
	end
line 8 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
top -= 1
cs = stack[top]
_goto_level = _again
next
nd
end
hen 5 then
line 149 "markup.rl"
begin
has_value = false
pcdata = ""
	end
line 24 "markup.rl"
begin
identifier_begin = p
	end
hen 14 then
line 154 "markup.rl"
begin
has_value = true
	end
line 162 "markup.rl"
begin
if has_value
	pcdata = MarkupString.raw(pcdata) unless has_entities
	
	value = pcdata
else
	value = true
end

delegate.attribute(data.byteslice(identifier_begin...identifier_end), value)
	end
hen 19 then
line 158 "markup.rl"
begin
has_value = true
	end
line 162 "markup.rl"
begin
if has_value
	pcdata = MarkupString.raw(pcdata) unless has_entities
	
	value = pcdata
else
	value = true
end

delegate.attribute(data.byteslice(identifier_begin...identifier_end), value)
	end
hen 4 then
line 28 "markup.rl"
begin
identifier_end = p
	end
line 136 "markup.rl"
begin
self_closing = false

delegate.open_tag_begin(data.byteslice(identifier_begin...identifier_end), identifier_begin)
	end
line 145 "markup.rl"
begin
self_closing = true
	end
hen 8 then
line 28 "markup.rl"
begin
identifier_end = p
	end
line 162 "markup.rl"
begin
if has_value
	pcdata = MarkupString.raw(pcdata) unless has_entities
	
	value = pcdata
else
	value = true
end

delegate.attribute(data.byteslice(identifier_begin...identifier_end), value)
	end
line 145 "markup.rl"
begin
self_closing = true
	end
hen 32 then
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 33 then
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 15 then
line 154 "markup.rl"
begin
has_value = true
	end
line 162 "markup.rl"
begin
if has_value
	pcdata = MarkupString.raw(pcdata) unless has_entities
	
	value = pcdata
else
	value = true
end

delegate.attribute(data.byteslice(identifier_begin...identifier_end), value)
	end
line 145 "markup.rl"
begin
self_closing = true
	end
hen 20 then
line 158 "markup.rl"
begin
has_value = true
	end
line 162 "markup.rl"
begin
if has_value
	pcdata = MarkupString.raw(pcdata) unless has_entities
	
	value = pcdata
else
	value = true
end

delegate.attribute(data.byteslice(identifier_begin...identifier_end), value)
	end
line 145 "markup.rl"
begin
self_closing = true
	end
hen 48 then
line 94 "markup.rl"
begin
doctype_end = p

delegate.doctype(data.byteslice(doctype_begin...doctype_end))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 49 then
line 94 "markup.rl"
begin
doctype_end = p

delegate.doctype(data.byteslice(doctype_begin...doctype_end))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 44 then
line 108 "markup.rl"
begin
comment_end = p

delegate.comment(data.byteslice(comment_begin...comment_end))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 45 then
line 108 "markup.rl"
begin
comment_end = p

delegate.comment(data.byteslice(comment_begin...comment_end))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 60 then
line 128 "markup.rl"
begin
delegate.instruction(data.byteslice(instruction_begin, p-instruction_begin))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 61 then
line 128 "markup.rl"
begin
delegate.instruction(data.byteslice(instruction_begin, p-instruction_begin))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 40 then
line 174 "markup.rl"
begin
delegate.open_tag_end(self_closing)
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 41 then
line 174 "markup.rl"
begin
delegate.open_tag_end(self_closing)
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 56 then
line 181 "markup.rl"
begin
delegate.close_tag(data.byteslice(identifier_begin...identifier_end), identifier_begin)
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 57 then
line 181 "markup.rl"
begin
delegate.close_tag(data.byteslice(identifier_begin...identifier_end), identifier_begin)
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 52 then
line 193 "markup.rl"
begin
cdata_end = p

delegate.cdata(data.byteslice(cdata_begin...cdata_end))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 49 "markup.rl"
begin
characters_begin = p
	end
hen 53 then
line 193 "markup.rl"
begin
cdata_end = p

delegate.cdata(data.byteslice(cdata_begin...cdata_end))
	end
line 40 "markup.rl"
begin
	end
line 32 "markup.rl"
begin
pcdata = ""
has_entities = false
	end
line 10 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/entities.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 42
_goto_level = _again
next
nd
end
hen 34 then
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 50 then
line 94 "markup.rl"
begin
doctype_end = p

delegate.doctype(data.byteslice(doctype_begin...doctype_end))
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 46 then
line 108 "markup.rl"
begin
comment_end = p

delegate.comment(data.byteslice(comment_begin...comment_end))
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 62 then
line 128 "markup.rl"
begin
delegate.instruction(data.byteslice(instruction_begin, p-instruction_begin))
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 42 then
line 174 "markup.rl"
begin
delegate.open_tag_end(self_closing)
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 58 then
line 181 "markup.rl"
begin
delegate.close_tag(data.byteslice(identifier_begin...identifier_end), identifier_begin)
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 54 then
line 193 "markup.rl"
begin
cdata_end = p

delegate.cdata(data.byteslice(cdata_begin...cdata_end))
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 38 then
line 37 "markup.rl"
begin
	end
line 43 "markup.rl"
begin
pcdata = MarkupString.raw(pcdata) unless has_entities

delegate.text(pcdata)
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
hen 36 then
line 53 "markup.rl"
begin
characters_end = p

pcdata << data.byteslice(characters_begin...characters_end)
	end
line 37 "markup.rl"
begin
	end
line 43 "markup.rl"
begin
pcdata = MarkupString.raw(pcdata) unless has_entities

delegate.text(pcdata)
	end
line 142 "markup.rl"
begin
	end
line 178 "markup.rl"
begin
	end
line 118 "markup.rl"
begin
instruction_begin = p
	end
line 104 "markup.rl"
begin
comment_begin = p
	end
line 90 "markup.rl"
begin
doctype_begin = p
	end
line 189 "markup.rl"
begin
cdata_begin = p
	end
line 1529 "markup.rb"
nd
nd
nd
f _goto_level <= _again
f cs == 0
_goto_level = _out
next
nd
 += 1
f p != pe
_goto_level = _resume
next
nd
nd
f _goto_level <= _test_eof
f p == eof
 case _markup_eof_actions[cs]
hen 27 then
line 59 "markup.rl"
begin
raise ParseError.new("could not parse entity", buffer, p)
	end
hen 47 then
line 94 "markup.rl"
begin
doctype_end = p

delegate.doctype(data.byteslice(doctype_begin...doctype_end))
	end
hen 22 then
line 100 "markup.rl"
begin
raise ParseError.new("could not parse doctype", buffer, p)
	end
hen 43 then
line 108 "markup.rl"
begin
comment_end = p

delegate.comment(data.byteslice(comment_begin...comment_end))
	end
hen 21 then
line 114 "markup.rl"
begin
raise ParseError.new("could not parse comment", buffer, p)
	end
hen 59 then
line 128 "markup.rl"
begin
delegate.instruction(data.byteslice(instruction_begin, p-instruction_begin))
	end
hen 24 then
line 132 "markup.rl"
begin
raise ParseError.new("could not parse instruction", buffer, p)
	end
hen 39 then
line 174 "markup.rl"
begin
delegate.open_tag_end(self_closing)
	end
hen 55 then
line 181 "markup.rl"
begin
delegate.close_tag(data.byteslice(identifier_begin...identifier_end), identifier_begin)
	end
hen 1 then
line 185 "markup.rl"
begin
raise ParseError.new("could not parse tag", buffer, p)
	end
hen 51 then
line 193 "markup.rl"
begin
cdata_end = p

delegate.cdata(data.byteslice(cdata_begin...cdata_end))
	end
hen 23 then
line 199 "markup.rl"
begin
raise ParseError.new("could not parse cdata", buffer, p)
	end
hen 37 then
line 37 "markup.rl"
begin
	end
line 43 "markup.rl"
begin
pcdata = MarkupString.raw(pcdata) unless has_entities

delegate.text(pcdata)
	end
hen 35 then
line 53 "markup.rl"
begin
characters_end = p

pcdata << data.byteslice(characters_begin...characters_end)
	end
line 37 "markup.rl"
begin
	end
line 43 "markup.rl"
begin
pcdata = MarkupString.raw(pcdata) unless has_entities

delegate.text(pcdata)
	end
line 1656 "markup.rb"
 end
nd
nd
f _goto_level <= _out
break
nd
d
nd
line 237 "markup.rl"
	
	if p != eof
		raise ParseError.new("could not consume all input", buffer, p)
	end
	
	return nil
end

def self.parse_query(buffer, delegate)

def self.parse_query(buffer, delegate)
	data = buffer.read
	bytes = data.bytes
	
	p = 0
	pe = eof = data.bytesize
	stack = []
	
	string_begin = string_end = nil
	integer_begin = integer_end = nil
	value_begin = value_end = nil
	encoded = false
	
	
line 262 "query.rb"
gin
 ||= 0
e ||= data.length
s = query_start
d
line 96 "query.rl"
	
line 271 "query.rb"
gin
estEof = false
slen, _trans, _keys, _inds, _acts, _nacts = nil
goto_level = 0
resume = 10
eof_trans = 15
again = 20
test_eof = 30
out = 40
hile true
f _goto_level <= 0
f p == pe
_goto_level = _test_eof
next
nd
f cs == 0
_goto_level = _out
next
nd
nd
f _goto_level <= _resume
keys = cs << 1
inds = _query_index_offsets[cs]
slen = _query_key_spans[cs]
wide = ( bytes[p])
trans = if (   _slen > 0 && 
	_query_trans_keys[_keys] <= _wide && 
	_wide <= _query_trans_keys[_keys + 1] 
    ) then
	_query_indicies[ _inds + _wide - _query_trans_keys[_keys] ] 
 else 
	_query_indicies[ _inds + _slen ]
 end
s = _query_trans_targs[_trans]
f _query_trans_actions[_trans] != 0
ase _query_trans_actions[_trans]
hen 1 then
line 24 "query.rl"
begin
string_begin = p
	end
hen 6 then
line 28 "query.rl"
begin
string_end = p

delegate.string(data.byteslice(string_begin...string_end), encoded)

encoded = false
	end
hen 7 then
line 40 "query.rl"
begin
integer_end = p

delegate.integer(data.byteslice(integer_begin...integer_end))
	end
hen 15 then
line 46 "query.rl"
begin
delegate.append
	end
hen 10 then
line 50 "query.rl"
begin
value_begin = p
	end
hen 13 then
line 62 "query.rl"
begin
delegate.pair
	end
hen 4 then
line 66 "query.rl"
begin
encoded = 1;
	end
hen 3 then
line 24 "query.rl"
begin
string_begin = p
	end
line 36 "query.rl"
begin
integer_begin = p
	end
hen 2 then
line 24 "query.rl"
begin
string_begin = p
	end
line 66 "query.rl"
begin
encoded = 1;
	end
hen 8 then
line 28 "query.rl"
begin
string_end = p

delegate.string(data.byteslice(string_begin...string_end), encoded)

encoded = false
	end
line 62 "query.rl"
begin
delegate.pair
	end
hen 5 then
line 36 "query.rl"
begin
integer_begin = p
	end
line 24 "query.rl"
begin
string_begin = p
	end
hen 14 then
line 46 "query.rl"
begin
delegate.append
	end
line 62 "query.rl"
begin
delegate.pair
	end
hen 11 then
line 50 "query.rl"
begin
value_begin = p
	end
line 66 "query.rl"
begin
encoded = 1;
	end
hen 12 then
line 54 "query.rl"
begin
value_end = p

delegate.assign(data.byteslice(value_begin...value_end), encoded)

encoded = false
	end
line 62 "query.rl"
begin
delegate.pair
	end
hen 9 then
line 50 "query.rl"
begin
value_begin = p
	end
line 54 "query.rl"
begin
value_end = p

delegate.assign(data.byteslice(value_begin...value_end), encoded)

encoded = false
	end
line 62 "query.rl"
begin
delegate.pair
	end
line 461 "query.rb"
nd
nd
nd
f _goto_level <= _again
f cs == 0
_goto_level = _out
next
nd
 += 1
f p != pe
_goto_level = _resume
next
nd
nd
f _goto_level <= _test_eof
f p == eof
 case _query_eof_actions[cs]
hen 13 then
line 62 "query.rl"
begin
delegate.pair
	end
hen 8 then
line 28 "query.rl"
begin
string_end = p

delegate.string(data.byteslice(string_begin...string_end), encoded)

encoded = false
	end
line 62 "query.rl"
begin
delegate.pair
	end
hen 14 then
line 46 "query.rl"
begin
delegate.append
	end
line 62 "query.rl"
begin
delegate.pair
	end
hen 12 then
line 54 "query.rl"
begin
value_end = p

delegate.assign(data.byteslice(value_begin...value_end), encoded)

encoded = false
	end
line 62 "query.rl"
begin
delegate.pair
	end
hen 9 then
line 50 "query.rl"
begin
value_begin = p
	end
line 54 "query.rl"
begin
value_end = p

delegate.assign(data.byteslice(value_begin...value_end), encoded)

encoded = false
	end
line 62 "query.rl"
begin
delegate.pair
	end
line 546 "query.rb"
 end
nd
nd
f _goto_level <= _out
break
nd
d
nd
line 97 "query.rl"
	
	if p != eof
		raise ParseError.new("could not consume all input", buffer, p)
	end
	
	return nil
end

def self.parse_template(buffer, delegate)

def self.parse_template(buffer, delegate)
	data = buffer.read
	bytes = data.bytes
	
	p = 0
	pe = eof = data.bytesize
	stack = []
	
	expression_begin = expression_end = nil
	instruction_begin = instruction_end = nil
	
	
line 522 "template.rb"
gin
 ||= 0
e ||= data.length
s = template_start
op = 0
s = nil
e = nil
ct = 0
d
line 88 "template.rl"
	
line 535 "template.rb"
gin
estEof = false
slen, _trans, _keys, _inds, _acts, _nacts = nil
goto_level = 0
resume = 10
eof_trans = 15
again = 20
test_eof = 30
out = 40
hile true
f _goto_level <= 0
f p == pe
_goto_level = _test_eof
next
nd
f cs == 0
_goto_level = _out
next
nd
nd
f _goto_level <= _resume
ase _template_from_state_actions[cs] 
hen 19 then
line 1 "NONE"
begin
 = p
end
line 563 "template.rb"
nd
keys = cs << 1
inds = _template_index_offsets[cs]
slen = _template_key_spans[cs]
wide = ( bytes[p])
trans = if (   _slen > 0 && 
	_template_trans_keys[_keys] <= _wide && 
	_wide <= _template_trans_keys[_keys + 1] 
    ) then
	_template_indicies[ _inds + _wide - _template_trans_keys[_keys] ] 
 else 
	_template_indicies[ _inds + _slen ]
 end
nd
f _goto_level <= _eof_trans
s = _template_trans_targs[_trans]
f _template_trans_actions[_trans] != 0
ase _template_trans_actions[_trans]
hen 5 then
line 24 "template.rl"
begin
instruction_begin = p
	end
hen 6 then
line 28 "template.rl"
begin
instruction_end = p
	end
hen 9 then
line 40 "template.rl"
begin
raise ParseError.new("failed to parse instruction", buffer, p)
	end
hen 16 then
line 13 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/template.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 21
_goto_level = _again
next
nd
end
hen 13 then
line 17 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/template.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 21
_goto_level = _again
next
nd
end
hen 14 then
line 20 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/template.rl"
begin
egin
top -= 1
cs = stack[top]
_goto_level = _again
next
nd
end
hen 2 then
line 1 "NONE"
begin
 = p+1
end
hen 8 then
line 36 "template.rl"
begin
 = p+1
egin 
delegate.instruction(data.byteslice(instruction_begin...instruction_end), "\n")
end
end
hen 10 then
line 60 "template.rl"
begin
 = p+1
egin 
delegate.text(data.byteslice(ts...te))
end
end
hen 22 then
line 60 "template.rl"
begin
 = p
= p - 1; begin 
delegate.text(data.byteslice(ts...te))
end
end
hen 24 then
line 32 "template.rl"
begin
 = p
= p - 1; begin 
delegate.instruction(data.byteslice(instruction_begin...instruction_end))
end
end
hen 21 then
line 60 "template.rl"
begin
 = p
= p - 1; begin 
delegate.text(data.byteslice(ts...te))
end
end
hen 1 then
line 60 "template.rl"
begin
egin p = ((te))-1; end
egin 
delegate.text(data.byteslice(ts...te))
end
end
hen 3 then
line 60 "template.rl"
begin
egin p = ((te))-1; end
egin 
delegate.text(data.byteslice(ts...te))
end
end
hen 7 then
line 1 "NONE"
begin
ase act
hen 3 then
egin begin p = ((te))-1; end
delegate.instruction(data.byteslice(instruction_begin...instruction_end))
nd
hen 6 then
egin begin p = ((te))-1; end
delegate.text(data.byteslice(ts...te))
nd
d 
	end
hen 4 then
line 40 "template.rl"
begin
raise ParseError.new("failed to parse instruction", buffer, p)
	end
line 60 "template.rl"
begin
egin p = ((te))-1; end
egin 
delegate.text(data.byteslice(ts...te))
end
end
hen 23 then
line 44 "template.rl"
begin
expression_begin = p
	end
line 53 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/template.rl"
begin
 = p
= p - 1; begin cs = 32; end
end
hen 15 then
line 13 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/template.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 21
_goto_level = _again
next
nd
end
line 17 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/template.rl"
begin
egin
stack[top] = cs
top+= 1
cs = 21
_goto_level = _again
next
nd
end
hen 11 then
line 1 "NONE"
begin
 = p+1
end
line 32 "template.rl"
begin
t = 3;		end
hen 20 then
line 1 "NONE"
begin
 = p+1
end
line 60 "template.rl"
begin
t = 6;		end
hen 18 then
line 48 "template.rl"
begin
expression_end = p
	end
line 52 "template.rl"
begin
delegate.expression(data.byteslice(expression_begin...expression_end))
	end
line 21 "/home/samuel/Documents/ioquatix/trenni/parsers/trenni/template.rl"
begin
 = 43;		end
line 784 "template.rb"
nd
nd
nd
f _goto_level <= _again
ase _template_to_state_actions[cs] 
hen 12 then
line 1 "NONE"
begin
 = nil;		end
line 794 "template.rb"
nd
f cs == 0
_goto_level = _out
next
nd
 += 1
f p != pe
_goto_level = _resume
next
nd
nd
f _goto_level <= _test_eof
f p == eof
f _template_eof_trans[cs] > 0
_trans = _template_eof_trans[cs] - 1;
_goto_level = _eof_trans
next;
nd
 case _template_eof_actions[cs]
hen 9 then
line 40 "template.rl"
begin
raise ParseError.new("failed to parse instruction", buffer, p)
	end
hen 17 then
line 56 "template.rl"
begin
raise ParseError.new("failed to parse expression", buffer, p)
	end
line 827 "template.rb"
 end
nd
nd
f _goto_level <= _out
break
nd
d
nd
line 89 "template.rl"
	
	if p != eof
		raise ParseError.new("could not consume all input", buffer, p)
	end
	
	return nil
end