Beispiel #1
0
	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;
	}
Beispiel #2
0
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;
}