string lexer::parse_quoted_string(location_ptr &location, char end_quote, bool allow_escapes) { string quoted_string; while (current != end) { char c = next_char(); if (c == '\n') { break; } if (c == end_quote) { return quoted_string; } if (c == '\\' && allow_escapes) { quoted_string += parse_escape_sequence(); } else { if (c & 0x80) { logger.warning(make_location(), boost::format("invalid 7-bit ASCII character '%c'") % c); } quoted_string += c; } } logger.error(location, format("unterminated %s literal") % (end_quote == '\'' ? "character" : "string")); return quoted_string; }
int curses_convert_keys(int key) { int ret = key; if (ret == '\033') { ret = parse_escape_sequence(); } /* Handle arrow keys */ switch (key) { case KEY_LEFT: { if (iflags.num_pad) { ret = '4'; } else { ret = 'h'; } break; } case KEY_RIGHT: { if (iflags.num_pad) { ret = '6'; } else { ret = 'l'; } break; } case KEY_UP: { if (iflags.num_pad) { ret = '8'; } else { ret = 'k'; } break; } case KEY_DOWN: { if (iflags.num_pad) { ret = '2'; } else { ret = 'j'; } break; } #ifdef KEY_A1 case KEY_A1: { if (iflags.num_pad) { ret = '7'; } else { ret = 'y'; } break; } #endif /* KEY_A1 */ #ifdef KEY_A3 case KEY_A3: { if (iflags.num_pad) { ret = '9'; } else { ret = 'u'; } break; } #endif /* KEY_A3 */ #ifdef KEY_C1 case KEY_C1: { if (iflags.num_pad) { ret = '1'; } else { ret = 'b'; } break; } #endif /* KEY_C1 */ #ifdef KEY_C3 case KEY_C3: { if (iflags.num_pad) { ret = '3'; } else { ret = 'n'; } break; } #endif /* KEY_C3 */ #ifdef KEY_B2 case KEY_B2: { if (iflags.num_pad) { ret = '5'; } else { ret = 'g'; } break; } #endif /* KEY_B2 */ } return ret; }