From b4e38d7ea765422bf301980634b7b948fe989ae1 Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周三, 19 6月 2013 23:10:02 +0800 Subject: [PATCH] Convert parameter handling to new lexer --- libscpi/src/lexer.c | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/libscpi/src/lexer.c b/libscpi/src/lexer.c index 1507eed..0b3bf09 100644 --- a/libscpi/src/lexer.c +++ b/libscpi/src/lexer.c @@ -437,8 +437,9 @@ } else { token->type = TokUnknown; state->pos = token->ptr; + token->len = 0; } - return token->len; + return token->len > 0 ? token->len + 2 : 0; } @@ -510,7 +511,7 @@ token->len = 0; } - return token->len; + return token->len > 0 ? token->len + 2 : 0; } /* 7.7.6 <ARBITRARY BLOCK PROGRAM DATA> */ @@ -521,7 +522,7 @@ int SCPI_LexArbitraryBlockProgramData(lex_state_t * state, token_t * token) { int i; int j = 0; - + const char * ptr = state->pos; token->ptr = state->pos; if (skipChr(state, '#')) { @@ -542,11 +543,11 @@ if(i == 0) { state->pos += j; - if (!iseos(state)) { + if ((state->buffer + state->len) < (state->pos)) { + token->len = 0; + } else { token->ptr = state->pos - j; token->len = j; - } else { - token->len = 0; } } else { token->len = 0; @@ -564,7 +565,7 @@ token->len = 0; } - return token->len; + return token->len + (token->ptr - ptr); } /* 7.7.7 <EXPRESSION PROGRAM DATA> */ -- Gitblit v1.9.1