ww: hare-feature batch (_, const, [_]T, ..., size/offset, assert, for-else)
This commit is contained in:
@@ -444,10 +444,18 @@ fn lexident(l: *lex, start: *pos, out: *tok) void = {
|
||||
};
|
||||
let n: u64 = l.lpos - begin;
|
||||
let p: *u8 = l.src + begin;
|
||||
let k: i32 = kwlookup(p, n: i32);
|
||||
out.file = start.file;
|
||||
out.line = start.line;
|
||||
out.col = start.col;
|
||||
// Bare '_' is the discard marker. `_x`, `_1` are normal idents.
|
||||
if (n == 1u64) {
|
||||
if (p[0] == 95u8) {
|
||||
out.kind = TK_UNDER;
|
||||
out.text = astrndup(l.a, p, n);
|
||||
return;
|
||||
};
|
||||
};
|
||||
let k: i32 = kwlookup(p, n: i32);
|
||||
if (k != TK_NONE) {
|
||||
out.kind = k;
|
||||
} else {
|
||||
|
||||
@@ -48,62 +48,64 @@ def TK_FALSE: i32 = 28;
|
||||
def TK_AS: i32 = 29;
|
||||
def TK_STATIC: i32 = 30;
|
||||
def TK_MATCH: i32 = 31;
|
||||
def TK_CONST: i32 = 32;
|
||||
def TK_UNDER: i32 = 33;
|
||||
|
||||
def TK_LPAREN: i32 = 32;
|
||||
def TK_RPAREN: i32 = 33;
|
||||
def TK_LBRACE: i32 = 34;
|
||||
def TK_RBRACE: i32 = 35;
|
||||
def TK_LBRACK: i32 = 36;
|
||||
def TK_RBRACK: i32 = 37;
|
||||
def TK_COMMA: i32 = 38;
|
||||
def TK_SEMI: i32 = 39;
|
||||
def TK_COLON: i32 = 40;
|
||||
def TK_DOT: i32 = 41;
|
||||
def TK_ELLIPSIS: i32 = 42;
|
||||
def TK_DOTDOT: i32 = 43;
|
||||
def TK_AT: i32 = 44;
|
||||
def TK_QUESTION: i32 = 45;
|
||||
def TK_LPAREN: i32 = 34;
|
||||
def TK_RPAREN: i32 = 35;
|
||||
def TK_LBRACE: i32 = 36;
|
||||
def TK_RBRACE: i32 = 37;
|
||||
def TK_LBRACK: i32 = 38;
|
||||
def TK_RBRACK: i32 = 39;
|
||||
def TK_COMMA: i32 = 40;
|
||||
def TK_SEMI: i32 = 41;
|
||||
def TK_COLON: i32 = 42;
|
||||
def TK_DOT: i32 = 43;
|
||||
def TK_ELLIPSIS: i32 = 44;
|
||||
def TK_DOTDOT: i32 = 45;
|
||||
def TK_AT: i32 = 46;
|
||||
def TK_QUESTION: i32 = 47;
|
||||
|
||||
def TK_ASSIGN: i32 = 46;
|
||||
def TK_PLUSEQ: i32 = 47;
|
||||
def TK_MINUSEQ: i32 = 48;
|
||||
def TK_STAREQ: i32 = 49;
|
||||
def TK_SLASHEQ: i32 = 50;
|
||||
def TK_PERCENTEQ: i32 = 51;
|
||||
def TK_AMPEQ: i32 = 52;
|
||||
def TK_PIPEEQ: i32 = 53;
|
||||
def TK_CARETEQ: i32 = 54;
|
||||
def TK_LSHIFTEQ: i32 = 55;
|
||||
def TK_RSHIFTEQ: i32 = 56;
|
||||
def TK_ASSIGN: i32 = 48;
|
||||
def TK_PLUSEQ: i32 = 49;
|
||||
def TK_MINUSEQ: i32 = 50;
|
||||
def TK_STAREQ: i32 = 51;
|
||||
def TK_SLASHEQ: i32 = 52;
|
||||
def TK_PERCENTEQ: i32 = 53;
|
||||
def TK_AMPEQ: i32 = 54;
|
||||
def TK_PIPEEQ: i32 = 55;
|
||||
def TK_CARETEQ: i32 = 56;
|
||||
def TK_LSHIFTEQ: i32 = 57;
|
||||
def TK_RSHIFTEQ: i32 = 58;
|
||||
|
||||
def TK_PLUS: i32 = 57;
|
||||
def TK_MINUS: i32 = 58;
|
||||
def TK_STAR: i32 = 59;
|
||||
def TK_SLASH: i32 = 60;
|
||||
def TK_PERCENT: i32 = 61;
|
||||
def TK_AMP: i32 = 62;
|
||||
def TK_PIPE: i32 = 63;
|
||||
def TK_CARET: i32 = 64;
|
||||
def TK_TILDE: i32 = 65;
|
||||
def TK_LSHIFT: i32 = 66;
|
||||
def TK_RSHIFT: i32 = 67;
|
||||
def TK_PLUS: i32 = 59;
|
||||
def TK_MINUS: i32 = 60;
|
||||
def TK_STAR: i32 = 61;
|
||||
def TK_SLASH: i32 = 62;
|
||||
def TK_PERCENT: i32 = 63;
|
||||
def TK_AMP: i32 = 64;
|
||||
def TK_PIPE: i32 = 65;
|
||||
def TK_CARET: i32 = 66;
|
||||
def TK_TILDE: i32 = 67;
|
||||
def TK_LSHIFT: i32 = 68;
|
||||
def TK_RSHIFT: i32 = 69;
|
||||
|
||||
def TK_EQ: i32 = 68;
|
||||
def TK_NEQ: i32 = 69;
|
||||
def TK_LT: i32 = 70;
|
||||
def TK_LE: i32 = 71;
|
||||
def TK_GT: i32 = 72;
|
||||
def TK_GE: i32 = 73;
|
||||
def TK_EQ: i32 = 70;
|
||||
def TK_NEQ: i32 = 71;
|
||||
def TK_LT: i32 = 72;
|
||||
def TK_LE: i32 = 73;
|
||||
def TK_GT: i32 = 74;
|
||||
def TK_GE: i32 = 75;
|
||||
|
||||
def TK_AND: i32 = 74;
|
||||
def TK_OR: i32 = 75;
|
||||
def TK_NOT: i32 = 76;
|
||||
def TK_AND: i32 = 76;
|
||||
def TK_OR: i32 = 77;
|
||||
def TK_NOT: i32 = 78;
|
||||
|
||||
def TK_LARROW: i32 = 77;
|
||||
def TK_ARROW: i32 = 78;
|
||||
def TK_FATARROW: i32 = 79;
|
||||
def TK_LARROW: i32 = 79;
|
||||
def TK_ARROW: i32 = 80;
|
||||
def TK_FATARROW: i32 = 81;
|
||||
|
||||
def TK_LAST: i32 = 80;
|
||||
def TK_LAST: i32 = 82;
|
||||
|
||||
// ---- Pos / Tok --------------------------------------------------------
|
||||
//
|
||||
@@ -152,6 +154,7 @@ export fn kwlookup(p: *u8, n: i32) i32 = {
|
||||
if (streqn(p, "break", n)) { return TK_BREAK; };
|
||||
if (streqn(p, "case", n)) { return TK_CASE; };
|
||||
if (streqn(p, "chan", n)) { return TK_CHAN; };
|
||||
if (streqn(p, "const", n)) { return TK_CONST; };
|
||||
if (streqn(p, "continue", n)) { return TK_CONTINUE; };
|
||||
if (streqn(p, "def", n)) { return TK_DEF; };
|
||||
if (streqn(p, "defer", n)) { return TK_DEFER; };
|
||||
@@ -214,6 +217,8 @@ export fn tokname(k: i32) str = {
|
||||
if (k == TK_AS) { return "as"; };
|
||||
if (k == TK_STATIC) { return "static"; };
|
||||
if (k == TK_MATCH) { return "match"; };
|
||||
if (k == TK_CONST) { return "const"; };
|
||||
if (k == TK_UNDER) { return "_"; };
|
||||
|
||||
if (k == TK_LPAREN) { return "("; };
|
||||
if (k == TK_RPAREN) { return ")"; };
|
||||
|
||||
Reference in New Issue
Block a user