From 734ecff5a5fd95bba1858f2da10578ba825a8fe2 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Fri, 1 Oct 2021 18:23:33 -0500 Subject: parser: refactor loops in yylex() The first character in a symbol or numeric value in a number will not go beyond the end of the token buffer. Knowing this, the loops in yylex() can be rearranged to use while () instead of do...while (). Signed-off-by: Alex Elder Message-Id: <20211001232338.769309-30-elder@linaro.org> Signed-off-by: Bjorn Andersson --- parser.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/parser.c b/parser.c index a684a29..f2ba55f 100644 --- a/parser.c +++ b/parser.c @@ -218,14 +218,14 @@ static struct token yylex() ; if (isalpha(ch)) { - do { + *p++ = ch; + while ((ch = input()) && (isalnum(ch) || ch == '_')) { if (p - buf == sizeof(buf)) { buf[TOKEN_BUF_MIN] = '\0'; yyerror("token too long: \"%s...\"", buf); } *p++ = ch; - ch = input(); - } while (isalnum(ch) || ch == '_'); + } unput(ch); *p = '\0'; @@ -275,14 +275,14 @@ static struct token yylex() base = 10; } - do { + *p++ = ch; + while ((ch = input()) && isvalid(ch)) { if (p - buf == sizeof(buf)) { buf[TOKEN_BUF_MIN] = '\0'; yyerror("number too long: \"%s...\"", buf); } *p++ = ch; - ch = input(); - } while (isvalid(ch)); + } unput(ch); *p = '\0'; -- cgit v1.2.3