module Arithmetic
def _nt_additive
def _nt_additive start_index = index cached = node_cache[:additive][index] if cached @index = cached.interval.end return cached end i0 = index i1, s1 = index, [] r2 = _nt_multitive s1 << r2 if r2.success? r3 = _nt_space s1 << r3 if r3.success? r4 = _nt_additive_op s1 << r4 if r4.success? r5 = _nt_space s1 << r5 if r5.success? r6 = _nt_additive s1 << r6 end end end end if s1.last.success? r1 = (BinaryOperation).new(input, i1...index, s1) r1.extend(Additive0) else self.index = i1 r1 = ParseFailure.new(input, i1) end if r1.success? r0 = r1 else r7 = _nt_multitive if r7.success? r0 = r7 else self.index = i0 r0 = ParseFailure.new(input, i0) end end node_cache[:additive][start_index] = r0 return r0 end