X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=config%2Fzconf.l;h=81c1f40cdee6262a04e6f2e7bbd7301f23cede15;hb=7df515c55fa329c32734a5f93d251170a33f07f5;hp=323fb5524fe54f4c48839d7e238262b31a0a22b9;hpb=cc43c9e39b766069cad56a27764a283e10171d90;p=carl9170fw.git
diff --git a/config/zconf.l b/config/zconf.l
index 323fb55..81c1f40 100644
--- a/config/zconf.l
+++ b/config/zconf.l
@@ -16,6 +16,8 @@
#include "lkc.h"
+#define YY_DECL static int yylex1(void)
+
#define START_STRSIZE 16
static struct {
@@ -23,6 +25,7 @@ static struct {
int lineno;
} current_pos;
+static int prev_token = T_EOL;
static char *text;
static int text_size, text_asize;
@@ -137,6 +140,9 @@ n [A-Za-z0-9_-]
}
{
+ "modules" return T_MODULES;
+ "defconfig_list" return T_DEFCONFIG_LIST;
+ "allnoconfig_y" return T_ALLNOCONFIG_Y;
"&&" return T_AND;
"||" return T_OR;
"(" return T_OPEN_PAREN;
@@ -175,9 +181,6 @@ n [A-Za-z0-9_-]
\\\n ;
[[:blank:]]+
. warn_ignored_character(*yytext);
- <> {
- BEGIN(INITIAL);
- }
}
{
@@ -259,6 +262,12 @@ n [A-Za-z0-9_-]
}
<> {
+ BEGIN(INITIAL);
+
+ if (prev_token != T_EOL && prev_token != T_HELPTEXT)
+ fprintf(stderr, "%s:%d:warning: no new line at end of file\n",
+ current_file->name, yylineno);
+
if (current_file) {
zconf_endfile();
return T_EOL;
@@ -268,6 +277,24 @@ n [A-Za-z0-9_-]
}
%%
+
+/* second stage lexer */
+int yylex(void)
+{
+ int token;
+
+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;
+
+ prev_token = token;
+
+ return token;
+}
+
static char *expand_token(const char *in, size_t n)
{
char *out;