diff options
-rw-r--r-- | ragel/rubyflat.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/ragel/rubyflat.cpp b/ragel/rubyflat.cpp index 6cf7e457..827084d2 100644 --- a/ragel/rubyflat.cpp +++ b/ragel/rubyflat.cpp @@ -279,16 +279,17 @@ void RubyFlatCodeGen::LOCATE_TRANS() " _keys = " << vCS() << " << 1\n" " _inds = " << IO() << "[" << vCS() << "]\n" " _slen = " << SP() << "[" << vCS() << "]\n" + " _wide = " << GET_WIDE_KEY() << "\n" " _trans = if ( _slen > 0 && \n" - " " << K() << "[_keys] <= " << GET_WIDE_KEY() << " && \n" - " " << GET_WIDE_KEY() << " <= " << K() << "[_keys + 1] \n" + " " << K() << "[_keys] <= _wide && \n" + " " << "_wide <= " << K() << "[_keys + 1] \n" " ) then\n" - " " << I() << "[ _inds + " << GET_WIDE_KEY() << " - " << K() << "[_keys] ] \n" + " " << I() << "[ _inds + _wide - " << K() << "[_keys] ] \n" " else \n" " " << I() << "[ _inds + _slen ]\n" " end\n" ""; - + } std::ostream &RubyFlatCodeGen::COND_INDEX_OFFSET() @@ -308,16 +309,17 @@ std::ostream &RubyFlatCodeGen::COND_INDEX_OFFSET() void RubyFlatCodeGen::COND_TRANSLATE() { - out << + out << " _widec = " << GET_KEY() << "\n" " _keys = " << vCS() << " << 1\n" " _conds = " << CO() << "[" << vCS() << "]\n" " _slen = " << CSP() << "[" << vCS() << "]\n" - " _cond = if ( _slen > 0 && \n" - " " << CK() << "[_keys] <= " << GET_WIDE_KEY() << " &&\n" - " " << GET_WIDE_KEY() << " <= " << CK() << "[_keys + 1]\n" + " _wide = " << GET_WIDE_KEY() << "\n" + " _cond = if ( _slen > 0 && \n" + " " << CK() << "[_keys] <= _wide &&\n" + " " << "_wide <= " << CK() << "[_keys + 1]\n" " ) then \n" - " " << C() << "[ _conds + " << GET_WIDE_KEY() << " - " << CK() << "[_keys]" << " ]\n" + " " << C() << "[ _conds + _wide - " << CK() << "[_keys]" << " ]\n" " else\n" " 0\n" " end\n"; |