-rw-r--r-- | scripts/kconfig/zconf.l | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l index 1471630..55517b2 100644 --- a/scripts/kconfig/zconf.l +++ b/scripts/kconfig/zconf.l @@ -87,38 +87,45 @@ n [A-Za-z0-9_] } <COMMAND>{ "mainmenu" BEGIN(PARAM); return T_MAINMENU; "menu" BEGIN(PARAM); return T_MENU; "endmenu" BEGIN(PARAM); return T_ENDMENU; "source" BEGIN(PARAM); return T_SOURCE; "choice" BEGIN(PARAM); return T_CHOICE; "endchoice" BEGIN(PARAM); return T_ENDCHOICE; "comment" BEGIN(PARAM); return T_COMMENT; "config" BEGIN(PARAM); return T_CONFIG; + "menuconfig" BEGIN(PARAM); return T_MENUCONFIG; "help" BEGIN(PARAM); return T_HELP; "if" BEGIN(PARAM); return T_IF; "endif" BEGIN(PARAM); return T_ENDIF; "depends" BEGIN(PARAM); return T_DEPENDS; "requires" BEGIN(PARAM); return T_REQUIRES; "optional" BEGIN(PARAM); return T_OPTIONAL; "default" BEGIN(PARAM); return T_DEFAULT; "prompt" BEGIN(PARAM); return T_PROMPT; "tristate" BEGIN(PARAM); return T_TRISTATE; + "def_tristate" BEGIN(PARAM); return T_DEF_TRISTATE; "bool" BEGIN(PARAM); return T_BOOLEAN; "boolean" BEGIN(PARAM); return T_BOOLEAN; + "def_bool" BEGIN(PARAM); return T_DEF_BOOLEAN; + "def_boolean" BEGIN(PARAM); return T_DEF_BOOLEAN; "int" BEGIN(PARAM); return T_INT; "hex" BEGIN(PARAM); return T_HEX; "string" BEGIN(PARAM); return T_STRING; + "select" BEGIN(PARAM); return T_SELECT; + "enable" BEGIN(PARAM); return T_SELECT; + "range" BEGIN(PARAM); return T_RANGE; {n}+ { alloc_string(yytext, yyleng); zconflval.string = text; return T_WORD; } . \n current_file->lineno++; BEGIN(INITIAL); } <PARAM>{ "&&" return T_AND; "||" return T_OR; @@ -132,53 +139,54 @@ n [A-Za-z0-9_] \"|\' { str = yytext[0]; new_string(); BEGIN(STRING); } \n BEGIN(INITIAL); current_file->lineno++; return T_EOL; --- /* ignore */ ({n}|[-/.])+ { alloc_string(yytext, yyleng); zconflval.string = text; return T_WORD; } + #.* /* comment */ \\\n current_file->lineno++; . <<EOF>> { BEGIN(INITIAL); } } <STRING>{ [^'"\\\n]+/\n { append_string(yytext, yyleng); zconflval.string = text; - return T_STRING; + return T_WORD_QUOTE; } [^'"\\\n]+ { append_string(yytext, yyleng); } \\.?/\n { append_string(yytext + 1, yyleng - 1); zconflval.string = text; - return T_STRING; + return T_WORD_QUOTE; } \\.? { append_string(yytext + 1, yyleng - 1); } \'|\" { if (str == yytext[0]) { BEGIN(PARAM); zconflval.string = text; - return T_STRING; + return T_WORD_QUOTE; } else append_string(yytext, 1); } \n { printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); current_file->lineno++; BEGIN(INITIAL); return T_EOL; } <<EOF>> { BEGIN(INITIAL); } @@ -197,27 +205,26 @@ n [A-Za-z0-9_] if (first_ts) { if (ts < first_ts) { zconf_endhelp(); return T_HELPTEXT; } ts -= first_ts; while (ts > 8) { append_string(" ", 8); ts -= 8; } append_string(" ", ts); } - } - \n/[^ \t\n] { + [ \t]*\n/[^ \t\n] { current_file->lineno++; zconf_endhelp(); return T_HELPTEXT; } [ \t]*\n { current_file->lineno++; append_string("\n", 1); } [^ \t\n].* { append_string(yytext, yyleng); if (!first_ts) first_ts = last_ts; @@ -336,24 +343,24 @@ static struct buffer *zconf_endfile(void) yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer(parent->state); } free(current_buf); current_buf = parent; return parent; } int zconf_lineno(void) { if (current_buf) - return current_file->lineno; + return current_file->lineno - 1; else return 0; } char *zconf_curname(void) { if (current_buf) return current_file->name; else return "<none>"; } |