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 26/27] kconfig: update current_pos in the second lexer
    Date
    To simplify the generated lexer, let the hand-made lexer update the
    file name and line number for the parser.

    I tested this with DEBUG_PARSE, and confirmed the same file names
    and line numbers were dumped.

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

    scripts/kconfig/zconf.l | 20 +++++++++++++++-----
    1 file changed, 15 insertions(+), 5 deletions(-)

    diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l
    index d462507..f0734abe 100644
    --- a/scripts/kconfig/zconf.l
    +++ b/scripts/kconfig/zconf.l
    @@ -108,8 +108,6 @@ n [A-Za-z0-9_-]
    <COMMAND>{
    {n}+ {
    const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
    - current_pos.file = current_file;
    - current_pos.lineno = yylineno;
    if (id && id->flags & TF_COMMAND) {
    BEGIN(PARAM);
    return id->token;
    @@ -291,9 +289,21 @@ int yylex(void)
    repeat:
    token = yylex1();

    - /* Do not pass unneeded T_EOL to the parser. */
    - if ((prev_token == T_EOL || prev_token == T_HELPTEXT) && token == T_EOL)
    - goto repeat;
    + if (prev_token == T_EOL || prev_token == T_HELPTEXT) {
    + if (token == T_EOL) {
    + /* Do not pass unneeded T_EOL to the parser. */
    + goto repeat;
    + } else {
    + /*
    + * For the parser, update file/lineno at the first token
    + * of each statement. Generally, \n is a statement
    + * terminator in Kconfig, but it is not always true
    + * because \n could be escaped by a backslash.
    + */
    + current_pos.file = current_file;
    + current_pos.lineno = yylineno;
    + }
    + }

    if (prev_prev_token == T_EOL && prev_token == T_WORD &&
    (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL))
    --
    2.7.4
    \
     
     \ /
      Last update: 2018-12-11 12:03    [W:4.017 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site