lkml.org 
[lkml]   [2018]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/27] kconfig: refactor pattern matching in STRING state
    Date
    Here, similar matching patters are duplicated in order to look ahead
    the '\n' character. If the next character is '\n', the lexer returns
    T_WORD_QUOTE because it must be prepared to return T_EOL at the next
    match.

    Use unput('\n') trick to reduce the code duplication.

    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    ---

    scripts/kconfig/zconf.l | 14 +++-----------
    1 file changed, 3 insertions(+), 11 deletions(-)

    diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l
    index 709b774..b7bc164 100644
    --- a/scripts/kconfig/zconf.l
    +++ b/scripts/kconfig/zconf.l
    @@ -182,19 +182,9 @@ n [A-Za-z0-9_-]

    <STRING>{
    "$".* append_expanded_string(yytext);
    - [^$'"\\\n]+/\n {
    - append_string(yytext, yyleng);
    - yylval.string = text;
    - return T_WORD_QUOTE;
    - }
    [^$'"\\\n]+ {
    append_string(yytext, yyleng);
    }
    - \\.?/\n {
    - append_string(yytext + 1, yyleng - 1);
    - yylval.string = text;
    - return T_WORD_QUOTE;
    - }
    \\.? {
    append_string(yytext + 1, yyleng - 1);
    }
    @@ -210,8 +200,10 @@ n [A-Za-z0-9_-]
    fprintf(stderr,
    "%s:%d:warning: multi-line strings not supported\n",
    zconf_curname(), zconf_lineno());
    + unput('\n');
    BEGIN(INITIAL);
    - return T_EOL;
    + yylval.string = text;
    + return T_WORD_QUOTE;
    }
    <<EOF>> {
    BEGIN(INITIAL);
    --
    2.7.4
    \
     
     \ /
      Last update: 2018-12-11 12:04    [W:4.179 / U:1.544 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site