From 5a54699f18e3ac52fe18d854f6d57be6795ed8e5 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 10 Apr 2015 16:48:43 +0200 Subject: Replace hand-written parser by one generated by solar itself :D --- src/lex.cpp | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'src/lex.cpp') diff --git a/src/lex.cpp b/src/lex.cpp index 63549c9..c5ae330 100644 --- a/src/lex.cpp +++ b/src/lex.cpp @@ -101,20 +101,21 @@ void lex_t::consume(bool consume_needspace) { needspace = consume_needspace; } -int lex_t::io_error(parser_value_t *value) { - value->error = "I/O error"; +int lex_t::io_error(parse_token_value_t *value) { + //value->error = "I/O error"; + (void)value; return -1; } -int lex_t::syntax_error(parser_value_t *value) { +int lex_t::syntax_error(parse_token_value_t *value) { if (std::ferror(file)) return io_error(value); - value->error = "syntax error"; + //value->error = "syntax error"; return -1; } -int lex_t::consume_comment(parser_value_t *value) { +int lex_t::consume_comment(parse_token_value_t *value) { char prev = 0; while (next(true)) { @@ -130,20 +131,20 @@ int lex_t::consume_comment(parser_value_t *value) { if (std::ferror(file)) return io_error(value); - value->error = "unterminated block comment"; + //value->error = "unterminated block comment"; return -1; } /* -int lex_t::unterminated_string(parser_value_t *value) { +int lex_t::unterminated_string(parse_token_value_t *value) { if (ferror(file)) return io_error(value); - value->error = "unterminated string"; + //value->error = "unterminated string"; return -1; } -int lex_t::lex_string(parser_value_t *value) { +int lex_t::lex_string(parse_token_value_t *value) { char *buf = NULL; size_t len = 1024; size_t pos = 0; @@ -193,7 +194,7 @@ int lex_t::lex_string(parser_value_t *value) { return TOK_STRING; } -int lex_t::lex_number(parser_value_t *value) { +int lex_t::lex_number(parse_token_value_t *value) { if (needspace) return syntax_error(value); @@ -223,7 +224,7 @@ int lex_t::lex_number(parser_value_t *value) { return TOK_UINT; }*/ -int lex_t::lex_keyword(parser_value_t *value) { +int lex_t::lex_keyword(parse_token_value_t *value) { if (needspace) return syntax_error(value); @@ -247,15 +248,15 @@ int lex_t::lex_keyword(parser_value_t *value) { return ret->token; } -int lex_t::unterminated_block(parser_value_t *value) { +int lex_t::unterminated_block(parse_token_value_t *value) { if (ferror(file)) return io_error(value); - value->error = "unterminated code block"; + //value->error = "unterminated code block"; return -1; } -int lex_t::lex_block(parser_value_t *value) { +int lex_t::lex_block(parse_token_value_t *value) { size_t parens = 0; bool line_comment = false; bool block_comment = false; @@ -326,7 +327,7 @@ int lex_t::lex_block(parser_value_t *value) { return TOK_BLOCK; } -int lex_t::lex_symbol(parser_value_t *value) { +int lex_t::lex_symbol(parse_token_value_t *value) { if (needspace) return syntax_error(value); @@ -361,7 +362,7 @@ int lex_t::lex_symbol(parser_value_t *value) { return TOK_SYMBOL; } -int lex_t::lex(parser_value_t *value) { +int lex_t::lex(parse_token_value_t *value) { int token; while (end > start) { @@ -416,7 +417,7 @@ int lex_t::lex(parser_value_t *value) { if (!next(true)) return syntax_error(value); - value->number = current(); + value->c = current(); if (!next(true) || current() != '\'') return syntax_error(value); -- cgit v1.2.3