|
# Autogenerated from a Treetop grammar. Edits may be lost. |
|
|
|
|
|
module Europa |
|
include Treetop::Runtime |
|
|
|
def root |
|
@root ||= :exp |
|
end |
|
|
|
def _nt_exp |
|
start_index = index |
|
if node_cache[:exp].has_key?(index) |
|
cached = node_cache[:exp][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0 = index |
|
r1 = _nt_message |
|
if r1 |
|
r0 = r1 |
|
else |
|
r2 = _nt_terminator |
|
if r2 |
|
r0 = r2 |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
end |
|
|
|
node_cache[:exp][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
module Message0 |
|
def symbol |
|
elements[0] |
|
end |
|
|
|
end |
|
|
|
def _nt_message |
|
start_index = index |
|
if node_cache[:message].has_key?(index) |
|
cached = node_cache[:message][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0, s0 = index, [] |
|
r1 = _nt_symbol |
|
s0 << r1 |
|
if r1 |
|
if has_terminal?('\G[arguments]', true, index) |
|
r2 = true |
|
@index += 1 |
|
else |
|
r2 = nil |
|
end |
|
s0 << r2 |
|
end |
|
if s0.last |
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0) |
|
r0.extend(Message0) |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
|
|
node_cache[:message][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_symbol |
|
start_index = index |
|
if node_cache[:symbol].has_key?(index) |
|
cached = node_cache[:symbol][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0 = index |
|
r1 = _nt_identifier |
|
if r1 |
|
r0 = r1 |
|
else |
|
r2 = _nt_literal |
|
if r2 |
|
r0 = r2 |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
end |
|
|
|
node_cache[:symbol][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
module Identifier0 |
|
def alphabetic_char |
|
elements[0] |
|
end |
|
|
|
end |
|
|
|
def _nt_identifier |
|
start_index = index |
|
if node_cache[:identifier].has_key?(index) |
|
cached = node_cache[:identifier][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0, s0 = index, [] |
|
r1 = _nt_alphabetic_char |
|
s0 << r1 |
|
if r1 |
|
s2, i2 = [], index |
|
loop do |
|
r3 = _nt_alphanumeric_char |
|
if r3 |
|
s2 << r3 |
|
else |
|
break |
|
end |
|
end |
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2) |
|
s0 << r2 |
|
end |
|
if s0.last |
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0) |
|
r0.extend(Identifier0) |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
|
|
node_cache[:identifier][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_literal |
|
start_index = index |
|
if node_cache[:literal].has_key?(index) |
|
cached = node_cache[:literal][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0 = index |
|
r1 = _nt_string |
|
if r1 |
|
r0 = r1 |
|
else |
|
r2 = _nt_number |
|
if r2 |
|
r0 = r2 |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
end |
|
|
|
node_cache[:literal][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
module String0 |
|
end |
|
|
|
module String1 |
|
end |
|
|
|
def _nt_string |
|
start_index = index |
|
if node_cache[:string].has_key?(index) |
|
cached = node_cache[:string][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0, s0 = index, [] |
|
if has_terminal?('"', false, index) |
|
r1 = instantiate_node(SyntaxNode,input, index...(index + 1)) |
|
@index += 1 |
|
else |
|
terminal_parse_failure('"') |
|
r1 = nil |
|
end |
|
s0 << r1 |
|
if r1 |
|
s2, i2 = [], index |
|
loop do |
|
i3 = index |
|
i4, s4 = index, [] |
|
i5 = index |
|
if has_terminal?('"', false, index) |
|
r6 = instantiate_node(SyntaxNode,input, index...(index + 1)) |
|
@index += 1 |
|
else |
|
terminal_parse_failure('"') |
|
r6 = nil |
|
end |
|
if r6 |
|
r5 = nil |
|
else |
|
@index = i5 |
|
r5 = instantiate_node(SyntaxNode,input, index...index) |
|
end |
|
s4 << r5 |
|
if r5 |
|
if index < input_length |
|
r7 = instantiate_node(SyntaxNode,input, index...(index + 1)) |
|
@index += 1 |
|
else |
|
terminal_parse_failure("any character") |
|
r7 = nil |
|
end |
|
s4 << r7 |
|
end |
|
if s4.last |
|
r4 = instantiate_node(SyntaxNode,input, i4...index, s4) |
|
r4.extend(String0) |
|
else |
|
@index = i4 |
|
r4 = nil |
|
end |
|
if r4 |
|
r3 = r4 |
|
else |
|
if has_terminal?('\"', false, index) |
|
r8 = instantiate_node(SyntaxNode,input, index...(index + 2)) |
|
@index += 2 |
|
else |
|
terminal_parse_failure('\"') |
|
r8 = nil |
|
end |
|
if r8 |
|
r3 = r8 |
|
else |
|
@index = i3 |
|
r3 = nil |
|
end |
|
end |
|
if r3 |
|
s2 << r3 |
|
else |
|
break |
|
end |
|
end |
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2) |
|
s0 << r2 |
|
if r2 |
|
if has_terminal?('"', false, index) |
|
r9 = instantiate_node(SyntaxNode,input, index...(index + 1)) |
|
@index += 1 |
|
else |
|
terminal_parse_failure('"') |
|
r9 = nil |
|
end |
|
s0 << r9 |
|
end |
|
end |
|
if s0.last |
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0) |
|
r0.extend(String1) |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
|
|
node_cache[:string][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
module Number0 |
|
end |
|
|
|
module Number1 |
|
end |
|
|
|
def _nt_number |
|
start_index = index |
|
if node_cache[:number].has_key?(index) |
|
cached = node_cache[:number][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0, s0 = index, [] |
|
s1, i1 = [], index |
|
loop do |
|
if has_terminal?('\G[0-9]', true, index) |
|
r2 = true |
|
@index += 1 |
|
else |
|
r2 = nil |
|
end |
|
if r2 |
|
s1 << r2 |
|
else |
|
break |
|
end |
|
end |
|
if s1.empty? |
|
@index = i1 |
|
r1 = nil |
|
else |
|
r1 = instantiate_node(SyntaxNode,input, i1...index, s1) |
|
end |
|
s0 << r1 |
|
if r1 |
|
s3, i3 = [], index |
|
loop do |
|
i4, s4 = index, [] |
|
if has_terminal?('.', false, index) |
|
r5 = instantiate_node(SyntaxNode,input, index...(index + 1)) |
|
@index += 1 |
|
else |
|
terminal_parse_failure('.') |
|
r5 = nil |
|
end |
|
s4 << r5 |
|
if r5 |
|
if has_terminal?('\G[0-9]', true, index) |
|
r6 = true |
|
@index += 1 |
|
else |
|
r6 = nil |
|
end |
|
s4 << r6 |
|
end |
|
if s4.last |
|
r4 = instantiate_node(SyntaxNode,input, i4...index, s4) |
|
r4.extend(Number0) |
|
else |
|
@index = i4 |
|
r4 = nil |
|
end |
|
if r4 |
|
s3 << r4 |
|
else |
|
break |
|
end |
|
end |
|
r3 = instantiate_node(SyntaxNode,input, i3...index, s3) |
|
s0 << r3 |
|
end |
|
if s0.last |
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0) |
|
r0.extend(Number1) |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
|
|
node_cache[:number][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_alphabetic_char |
|
start_index = index |
|
if node_cache[:alphabetic_char].has_key?(index) |
|
cached = node_cache[:alphabetic_char][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
if has_terminal?('\G[A-Za-z_]', true, index) |
|
r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) |
|
@index += 1 |
|
else |
|
r0 = nil |
|
end |
|
|
|
node_cache[:alphabetic_char][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_alphanumeric_char |
|
start_index = index |
|
if node_cache[:alphanumeric_char].has_key?(index) |
|
cached = node_cache[:alphanumeric_char][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0 = index |
|
r1 = _nt_alphabetic_char |
|
if r1 |
|
r0 = r1 |
|
else |
|
if has_terminal?('\G[0-9]', true, index) |
|
r2 = true |
|
@index += 1 |
|
else |
|
r2 = nil |
|
end |
|
if r2 |
|
r0 = r2 |
|
else |
|
@index = i0 |
|
r0 = nil |
|
end |
|
end |
|
|
|
node_cache[:alphanumeric_char][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_whitespace_char |
|
start_index = index |
|
if node_cache[:whitespace_char].has_key?(index) |
|
cached = node_cache[:whitespace_char][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
if has_terminal?('\G[ \\t\\n\\r]', true, index) |
|
r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) |
|
@index += 1 |
|
else |
|
r0 = nil |
|
end |
|
|
|
node_cache[:whitespace_char][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_non_whitespace_char |
|
start_index = index |
|
if node_cache[:non_whitespace_char].has_key?(index) |
|
cached = node_cache[:non_whitespace_char][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0 = index |
|
r1 = _nt_whitespace_char |
|
if r1 |
|
r0 = nil |
|
else |
|
@index = i0 |
|
r0 = instantiate_node(SyntaxNode,input, index...index) |
|
end |
|
|
|
node_cache[:non_whitespace_char][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_whitespace |
|
start_index = index |
|
if node_cache[:whitespace].has_key?(index) |
|
cached = node_cache[:whitespace][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
s0, i0 = [], index |
|
loop do |
|
r1 = _nt_whitespace_char |
|
if r1 |
|
s0 << r1 |
|
else |
|
break |
|
end |
|
end |
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0) |
|
|
|
node_cache[:whitespace][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
def _nt_non_whitespace |
|
start_index = index |
|
if node_cache[:non_whitespace].has_key?(index) |
|
cached = node_cache[:non_whitespace][index] |
|
if cached |
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true |
|
@index = cached.interval.end |
|
end |
|
return cached |
|
end |
|
|
|
i0 = index |
|
r1 = _nt_whitespace |
|
if r1 |
|
r0 = nil |
|
else |
|
@index = i0 |
|
r0 = instantiate_node(SyntaxNode,input, index...index) |
|
end |
|
|
|
node_cache[:non_whitespace][start_index] = r0 |
|
|
|
r0 |
|
end |
|
|
|
end |
|
|
|
class EuropaParser < Treetop::Runtime::CompiledParser |
|
include Europa |
|
end |
|
|