diff options
Diffstat (limited to 'gen/gen_lexer.c')
| -rw-r--r-- | gen/gen_lexer.c | 206 |
1 files changed, 104 insertions, 102 deletions
diff --git a/gen/gen_lexer.c b/gen/gen_lexer.c index afc5c7b..55b19e0 100644 --- a/gen/gen_lexer.c +++ b/gen/gen_lexer.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* SPDX-License-Identifier: copyleft-next-0.3.1 */ #line 2 "gen/gen_lexer.c" @@ -594,8 +594,10 @@ static const flex_int16_t yy_chk[433] = #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "src/lexer.l" +/* SPDX-License-Identifier: copyleft-next-0.3.1 */ +/* Copyright 2023 Kim Kuparinen < kimi.h.kuparinen@gmail.com > */ #define YY_NO_INPUT 1 -#line 3 "src/lexer.l" +#line 6 "src/lexer.l" #define FROM_LEXER #include <ek/parser.h> #include <ek/debug.h> @@ -618,10 +620,10 @@ static void update_yylloc(struct parser *parser, YYLTYPE *lloc, const char *text } #define YY_USER_ACTION update_yylloc(parser, yylloc, yytext); -#line 620 "gen/gen_lexer.c" - #line 622 "gen/gen_lexer.c" +#line 624 "gen/gen_lexer.c" + #define INITIAL 0 #define SC_COMMENT 1 @@ -879,9 +881,9 @@ YY_DECL } { -#line 44 "src/lexer.l" +#line 47 "src/lexer.l" -#line 883 "gen/gen_lexer.c" +#line 885 "gen/gen_lexer.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -940,23 +942,23 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 45 "src/lexer.l" +#line 48 "src/lexer.l" {/* skip line comments */} YY_BREAK case 2: YY_RULE_SETUP -#line 47 "src/lexer.l" +#line 50 "src/lexer.l" {BEGIN(SC_COMMENT);} YY_BREAK case 3: YY_RULE_SETUP -#line 49 "src/lexer.l" +#line 52 "src/lexer.l" {++parser->comment_nesting;} YY_BREAK case 4: YY_RULE_SETUP -#line 50 "src/lexer.l" +#line 53 "src/lexer.l" { if (parser->comment_nesting) --parser->comment_nesting; @@ -966,135 +968,135 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 57 "src/lexer.l" +#line 60 "src/lexer.l" {} YY_BREAK case 6: YY_RULE_SETUP -#line 58 "src/lexer.l" +#line 61 "src/lexer.l" {} YY_BREAK case 7: YY_RULE_SETUP -#line 59 "src/lexer.l" +#line 62 "src/lexer.l" {} YY_BREAK case 8: /* rule 8 can match eol */ YY_RULE_SETUP -#line 60 "src/lexer.l" +#line 63 "src/lexer.l" {} YY_BREAK case 9: YY_RULE_SETUP -#line 63 "src/lexer.l" +#line 66 "src/lexer.l" {return SCOPE;} YY_BREAK case 10: YY_RULE_SETUP -#line 64 "src/lexer.l" +#line 67 "src/lexer.l" {return LPAREN;} YY_BREAK case 11: YY_RULE_SETUP -#line 65 "src/lexer.l" +#line 68 "src/lexer.l" {return RPAREN;} YY_BREAK case 12: YY_RULE_SETUP -#line 66 "src/lexer.l" +#line 69 "src/lexer.l" {return LBRACE;} YY_BREAK case 13: YY_RULE_SETUP -#line 67 "src/lexer.l" +#line 70 "src/lexer.l" {return RBRACE;} YY_BREAK case 14: YY_RULE_SETUP -#line 68 "src/lexer.l" +#line 71 "src/lexer.l" {return LBRACKET;} YY_BREAK case 15: YY_RULE_SETUP -#line 69 "src/lexer.l" +#line 72 "src/lexer.l" {return RBRACKET;} YY_BREAK case 16: YY_RULE_SETUP -#line 70 "src/lexer.l" +#line 73 "src/lexer.l" {return DOT;} YY_BREAK case 17: YY_RULE_SETUP -#line 71 "src/lexer.l" +#line 74 "src/lexer.l" {return COMMA;} YY_BREAK case 18: YY_RULE_SETUP -#line 72 "src/lexer.l" +#line 75 "src/lexer.l" {return SEMICOLON;} YY_BREAK case 19: YY_RULE_SETUP -#line 73 "src/lexer.l" +#line 76 "src/lexer.l" {return COLON;} YY_BREAK case 20: YY_RULE_SETUP -#line 74 "src/lexer.l" +#line 77 "src/lexer.l" {return BANG;} YY_BREAK case 21: YY_RULE_SETUP -#line 75 "src/lexer.l" +#line 78 "src/lexer.l" {return PASTE;} YY_BREAK case 22: YY_RULE_SETUP -#line 76 "src/lexer.l" +#line 79 "src/lexer.l" {return AT;} YY_BREAK case 23: YY_RULE_SETUP -#line 78 "src/lexer.l" +#line 81 "src/lexer.l" {return PLUS;} YY_BREAK case 24: YY_RULE_SETUP -#line 79 "src/lexer.l" +#line 82 "src/lexer.l" {return MINUS;} YY_BREAK case 25: YY_RULE_SETUP -#line 80 "src/lexer.l" +#line 83 "src/lexer.l" {return STAR;} YY_BREAK case 26: YY_RULE_SETUP -#line 81 "src/lexer.l" +#line 84 "src/lexer.l" {return DIV;} YY_BREAK case 27: YY_RULE_SETUP -#line 82 "src/lexer.l" +#line 85 "src/lexer.l" {return REM;} YY_BREAK case 28: YY_RULE_SETUP -#line 83 "src/lexer.l" +#line 86 "src/lexer.l" {return XOR;} YY_BREAK case 29: YY_RULE_SETUP -#line 84 "src/lexer.l" +#line 87 "src/lexer.l" {return POW;} YY_BREAK case 30: /* rule 30 can match eol */ YY_RULE_SETUP -#line 86 "src/lexer.l" +#line 89 "src/lexer.l" { /* regular character constant, 'a' */ yylval->integer = yytext[1]; @@ -1103,7 +1105,7 @@ YY_RULE_SETUP YY_BREAK case 31: YY_RULE_SETUP -#line 92 "src/lexer.l" +#line 95 "src/lexer.l" { /* hex character constant, '\xef' */ /* handling is slightly different from C, here it's more or less just @@ -1114,7 +1116,7 @@ YY_RULE_SETUP YY_BREAK case 32: YY_RULE_SETUP -#line 100 "src/lexer.l" +#line 103 "src/lexer.l" { /* octal character constant, '\033' */ yylval->integer = strtoll(yytext + 2, NULL, 8); @@ -1123,7 +1125,7 @@ YY_RULE_SETUP YY_BREAK case 33: YY_RULE_SETUP -#line 106 "src/lexer.l" +#line 109 "src/lexer.l" { /* binary character constant, '\b101' */ yylval->integer = strtoll(yytext + 3, NULL, 2); @@ -1132,7 +1134,7 @@ YY_RULE_SETUP YY_BREAK case 34: YY_RULE_SETUP -#line 112 "src/lexer.l" +#line 115 "src/lexer.l" { /* escaped character constant */ yylval->integer = match_escape(yytext[2]); @@ -1141,273 +1143,273 @@ YY_RULE_SETUP YY_BREAK case 35: YY_RULE_SETUP -#line 118 "src/lexer.l" +#line 121 "src/lexer.l" {return SQUOTE;} YY_BREAK case 36: YY_RULE_SETUP -#line 120 "src/lexer.l" +#line 123 "src/lexer.l" {return AND;} YY_BREAK case 37: YY_RULE_SETUP -#line 121 "src/lexer.l" +#line 124 "src/lexer.l" {return LAND;} YY_BREAK case 38: YY_RULE_SETUP -#line 122 "src/lexer.l" +#line 125 "src/lexer.l" {return OR;} YY_BREAK case 39: YY_RULE_SETUP -#line 123 "src/lexer.l" +#line 126 "src/lexer.l" {return LOR;} YY_BREAK case 40: YY_RULE_SETUP -#line 125 "src/lexer.l" +#line 128 "src/lexer.l" {return TILDE;} YY_BREAK case 41: YY_RULE_SETUP -#line 126 "src/lexer.l" +#line 129 "src/lexer.l" {return TO;} YY_BREAK case 42: YY_RULE_SETUP -#line 127 "src/lexer.l" +#line 130 "src/lexer.l" {return LT;} YY_BREAK case 43: YY_RULE_SETUP -#line 128 "src/lexer.l" +#line 131 "src/lexer.l" {return GT;} YY_BREAK case 44: YY_RULE_SETUP -#line 129 "src/lexer.l" +#line 132 "src/lexer.l" {return LE;} YY_BREAK case 45: YY_RULE_SETUP -#line 130 "src/lexer.l" +#line 133 "src/lexer.l" {return GE;} YY_BREAK case 46: YY_RULE_SETUP -#line 131 "src/lexer.l" +#line 134 "src/lexer.l" {return NE;} YY_BREAK case 47: YY_RULE_SETUP -#line 132 "src/lexer.l" +#line 135 "src/lexer.l" {return EQ;} YY_BREAK case 48: YY_RULE_SETUP -#line 134 "src/lexer.l" +#line 137 "src/lexer.l" {return FATARROW;} YY_BREAK case 49: YY_RULE_SETUP -#line 136 "src/lexer.l" +#line 139 "src/lexer.l" {return LSHIFT;} YY_BREAK case 50: YY_RULE_SETUP -#line 137 "src/lexer.l" +#line 140 "src/lexer.l" {return RSHIFT;} YY_BREAK case 51: YY_RULE_SETUP -#line 139 "src/lexer.l" +#line 142 "src/lexer.l" {return PLUSSELF;} YY_BREAK case 52: YY_RULE_SETUP -#line 140 "src/lexer.l" +#line 143 "src/lexer.l" {return MINUSSELF;} YY_BREAK case 53: YY_RULE_SETUP -#line 141 "src/lexer.l" +#line 144 "src/lexer.l" {return DIVSELF;} YY_BREAK case 54: YY_RULE_SETUP -#line 142 "src/lexer.l" +#line 145 "src/lexer.l" {return REMSELF;} YY_BREAK case 55: YY_RULE_SETUP -#line 143 "src/lexer.l" +#line 146 "src/lexer.l" {return XORSELF;} YY_BREAK case 56: YY_RULE_SETUP -#line 144 "src/lexer.l" +#line 147 "src/lexer.l" {return POWSELF;} YY_BREAK case 57: YY_RULE_SETUP -#line 145 "src/lexer.l" +#line 148 "src/lexer.l" {return ORSELF;} YY_BREAK case 58: YY_RULE_SETUP -#line 146 "src/lexer.l" +#line 149 "src/lexer.l" {return ORSELF;} YY_BREAK case 59: YY_RULE_SETUP -#line 147 "src/lexer.l" +#line 150 "src/lexer.l" {return LSHIFTSELF;} YY_BREAK case 60: YY_RULE_SETUP -#line 148 "src/lexer.l" +#line 151 "src/lexer.l" {return RSHIFTSELF;} YY_BREAK case 61: YY_RULE_SETUP -#line 149 "src/lexer.l" +#line 152 "src/lexer.l" {return ELLIPSIS;} YY_BREAK case 62: YY_RULE_SETUP -#line 151 "src/lexer.l" +#line 154 "src/lexer.l" {return AS;} YY_BREAK case 63: YY_RULE_SETUP -#line 152 "src/lexer.l" +#line 155 "src/lexer.l" {return PUB;} YY_BREAK case 64: YY_RULE_SETUP -#line 153 "src/lexer.l" +#line 156 "src/lexer.l" {return DEFER;} YY_BREAK case 65: YY_RULE_SETUP -#line 154 "src/lexer.l" +#line 157 "src/lexer.l" {return UNION;} YY_BREAK case 66: YY_RULE_SETUP -#line 155 "src/lexer.l" +#line 158 "src/lexer.l" {return STRUCT;} YY_BREAK case 67: YY_RULE_SETUP -#line 156 "src/lexer.l" +#line 159 "src/lexer.l" {return TYPEDEF;} YY_BREAK case 68: YY_RULE_SETUP -#line 157 "src/lexer.l" +#line 160 "src/lexer.l" {return IMPORT;} YY_BREAK case 69: YY_RULE_SETUP -#line 158 "src/lexer.l" +#line 161 "src/lexer.l" {return TYPEOF;} YY_BREAK case 70: YY_RULE_SETUP -#line 159 "src/lexer.l" +#line 162 "src/lexer.l" {return SIZEOF;} YY_BREAK case 71: YY_RULE_SETUP -#line 160 "src/lexer.l" +#line 163 "src/lexer.l" {return EMBED;} YY_BREAK case 72: YY_RULE_SETUP -#line 161 "src/lexer.l" +#line 164 "src/lexer.l" {return IF;} YY_BREAK case 73: YY_RULE_SETUP -#line 162 "src/lexer.l" +#line 165 "src/lexer.l" {return GOTO;} YY_BREAK case 74: YY_RULE_SETUP -#line 163 "src/lexer.l" +#line 166 "src/lexer.l" {return ELSE;} YY_BREAK case 75: YY_RULE_SETUP -#line 164 "src/lexer.l" +#line 167 "src/lexer.l" {return SWITCH;} YY_BREAK case 76: YY_RULE_SETUP -#line 165 "src/lexer.l" +#line 168 "src/lexer.l" {return CASE;} YY_BREAK case 77: YY_RULE_SETUP -#line 166 "src/lexer.l" +#line 169 "src/lexer.l" {return FOR;} YY_BREAK case 78: YY_RULE_SETUP -#line 167 "src/lexer.l" +#line 170 "src/lexer.l" {return WHILE;} YY_BREAK case 79: YY_RULE_SETUP -#line 168 "src/lexer.l" +#line 171 "src/lexer.l" {return DO;} YY_BREAK case 80: YY_RULE_SETUP -#line 169 "src/lexer.l" +#line 172 "src/lexer.l" {return MUT;} YY_BREAK case 81: YY_RULE_SETUP -#line 170 "src/lexer.l" +#line 173 "src/lexer.l" {return CONST;} YY_BREAK case 82: YY_RULE_SETUP -#line 171 "src/lexer.l" +#line 174 "src/lexer.l" {return RETURN;} YY_BREAK case 83: YY_RULE_SETUP -#line 172 "src/lexer.l" +#line 175 "src/lexer.l" {return EXTERN;} YY_BREAK case 84: YY_RULE_SETUP -#line 173 "src/lexer.l" +#line 176 "src/lexer.l" {return ENUM;} YY_BREAK case 85: YY_RULE_SETUP -#line 174 "src/lexer.l" +#line 177 "src/lexer.l" {return DEFINE;} YY_BREAK case 86: YY_RULE_SETUP -#line 175 "src/lexer.l" +#line 178 "src/lexer.l" {return BREAK;} YY_BREAK case 87: YY_RULE_SETUP -#line 176 "src/lexer.l" +#line 179 "src/lexer.l" {return CONTINUE;} YY_BREAK case 88: /* rule 88 can match eol */ YY_RULE_SETUP -#line 178 "src/lexer.l" +#line 181 "src/lexer.l" { /* seems risky, I know, but letting the parser choose when to allocate a * new string seems to help with syntax error cleanup */ @@ -1417,7 +1419,7 @@ YY_RULE_SETUP YY_BREAK case 89: YY_RULE_SETUP -#line 185 "src/lexer.l" +#line 188 "src/lexer.l" { yylval->integer = strtoll(yytext, 0, 0); return INT; @@ -1425,7 +1427,7 @@ YY_RULE_SETUP YY_BREAK case 90: YY_RULE_SETUP -#line 190 "src/lexer.l" +#line 193 "src/lexer.l" { yylval->dbl = strtod(yytext, 0); return FLOAT; @@ -1433,7 +1435,7 @@ YY_RULE_SETUP YY_BREAK case 91: YY_RULE_SETUP -#line 195 "src/lexer.l" +#line 198 "src/lexer.l" { yylval->str = yytext; return ID; @@ -1442,12 +1444,12 @@ YY_RULE_SETUP case 92: /* rule 92 can match eol */ YY_RULE_SETUP -#line 201 "src/lexer.l" +#line 204 "src/lexer.l" {/* skip whitespace */} YY_BREAK case 93: YY_RULE_SETUP -#line 203 "src/lexer.l" +#line 206 "src/lexer.l" { struct src_issue issue; issue.level = SRC_ERROR; @@ -1461,10 +1463,10 @@ YY_RULE_SETUP YY_BREAK case 94: YY_RULE_SETUP -#line 213 "src/lexer.l" +#line 216 "src/lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1466 "gen/gen_lexer.c" +#line 1468 "gen/gen_lexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(SC_COMMENT): yyterminate(); @@ -2596,6 +2598,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 213 "src/lexer.l" +#line 216 "src/lexer.l" |
