Remove unused tokens

This commit is contained in:
gingerBill
2020-12-06 13:17:48 +00:00
parent 1ac84b09a1
commit 98c8fde098
5 changed files with 105 additions and 129 deletions
+1 -1
View File
@@ -22,7 +22,7 @@ inspect :: proc(node: ^Node, f: proc(^Node) -> bool) {
if f(node) { if f(node) {
return v; return v;
} }
return nil return nil;
}, },
data = rawptr(f), data = rawptr(f),
}; };
+1 -1
View File
@@ -2599,7 +2599,7 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr {
case .Asm: case .Asm:
tok := expect_token(p, .Asm); tok := expect_token(p, .Asm);
param_types: [dynamic]^ast.Expr param_types: [dynamic]^ast.Expr;
return_type: ^ast.Expr; return_type: ^ast.Expr;
if allow_token(p, .Open_Paren) { if allow_token(p, .Open_Paren) {
for p.curr_tok.kind != .Close_Paren && p.curr_tok.kind != .EOF { for p.curr_tok.kind != .Close_Paren && p.curr_tok.kind != .EOF {
+99 -103
View File
@@ -34,122 +34,120 @@ Token_Kind :: enum u32 {
Comment, Comment,
B_Literal_Begin, B_Literal_Begin,
Ident, Ident, // main
Integer, Integer, // 12345
Float, Float, // 123.45
Imag, Imag, // 123.45i
Rune, Rune, // 'a'
String, String, // "abc"
B_Literal_End, B_Literal_End,
B_Operator_Begin, B_Operator_Begin,
Eq, Eq, // =
Not, Not, // !
Hash, Hash, // #
At, At, // @
Dollar, Dollar, // $
Pointer, Pointer, // ^
Question, Question, // ?
Add, Add, // +
Sub, Sub, // -
Mul, Mul, // *
Quo, Quo, // /
Mod, Mod, // %
Mod_Mod, Mod_Mod, // %%
And, And, // &
Or, Or, // |
Xor, Xor, // ~
And_Not, And_Not, // &~
Shl, Shl, // <<
Shr, Shr, // >>
Cmp_And, Cmp_And, // &&
Cmp_Or, Cmp_Or, // ||
B_Assign_Op_Begin, B_Assign_Op_Begin,
Add_Eq, Add_Eq, // +=
Sub_Eq, Sub_Eq, // -=
Mul_Eq, Mul_Eq, // *=
Quo_Eq, Quo_Eq, // /=
Mod_Eq, Mod_Eq, // %=
Mod_Mod_Eq, Mod_Mod_Eq, // %%=
And_Eq, And_Eq, // &=
Or_Eq, Or_Eq, // |=
Xor_Eq, Xor_Eq, // ~=
And_Not_Eq, And_Not_Eq, // &~=
Shl_Eq, Shl_Eq, // <<=
Shr_Eq, Shr_Eq, // >>=
Cmp_And_Eq, Cmp_And_Eq, // &&=
Cmp_Or_Eq, Cmp_Or_Eq, // ||=
B_Assign_Op_End, B_Assign_Op_End,
Arrow_Right, Arrow_Right, // ->
Arrow_Left, Undef, // ---
Double_Arrow_Right,
Undef,
B_Comparison_Begin, B_Comparison_Begin,
Cmp_Eq, Cmp_Eq, // ==
Not_Eq, Not_Eq, // !=
Lt, Lt, // <
Gt, Gt, // >
Lt_Eq, Lt_Eq, // <=
Gt_Eq, Gt_Eq, // >=
B_Comparison_End, B_Comparison_End,
Open_Paren, Open_Paren, // (
Close_Paren, Close_Paren, // )
Open_Bracket, Open_Bracket, // [
Close_Bracket, Close_Bracket, // ]
Open_Brace, Open_Brace, // {
Close_Brace, Close_Brace, // }
Colon, Colon, // :
Semicolon, Semicolon, // ;
Period, Period, // .
Comma, Comma, // ,
Ellipsis, Ellipsis, // ..
Range_Half, Range_Half, // ..<
Back_Slash, Back_Slash, // \
B_Operator_End, B_Operator_End,
B_Keyword_Begin, B_Keyword_Begin,
Import, Import, // import
Foreign, Foreign, // foreign
Package, Package, // package
Typeid, Typeid, // typeid
When, When, // when
Where, Where, // where
If, If, // if
Else, Else, // else
For, For, // for
Switch, Switch, // switch
In, In, // in
Not_In, Not_In, // not_in
Do, Do, // do
Case, Case, // case
Break, Break, // break
Continue, Continue, // continue
Fallthrough, Fallthrough, // fallthrough
Defer, Defer, // defer
Return, Return, // return
Proc, Proc, // proc
Struct, Struct, // struct
Union, Union, // union
Enum, Enum, // enum
Bit_Field, Bit_Field, // bit_field
Bit_Set, Bit_Set, // bit_set
Map, Map, // map
Dynamic, Dynamic, // dynamic
Auto_Cast, Auto_Cast, // auto_cast
Cast, Cast, // cast
Transmute, Transmute, // transmute
Distinct, Distinct, // distinct
Opaque, Opaque, // opaque
Using, Using, // using
Inline, Inline, // inline
No_Inline, No_Inline, // no_inline
Context, Context, // context
Asm, Asm, // asm
B_Keyword_End, B_Keyword_End,
COUNT, COUNT,
@@ -214,8 +212,6 @@ tokens := [Token_Kind.COUNT]string {
"", "",
"->", "->",
"<-",
"=>",
"---", "---",
"", "",
+2 -14
View File
@@ -563,13 +563,7 @@ scan :: proc(t: ^Tokenizer) -> Token {
insert_semicolon = true; insert_semicolon = true;
kind = .String; kind = .String;
lit = scan_raw_string(t); lit = scan_raw_string(t);
case '=': case '=': kind = switch2(t, .Eq, .Cmp_Eq);
if t.ch == '>' {
advance_rune(t);
kind = .Double_Arrow_Right;
} else {
kind = switch2(t, .Eq, .Cmp_Eq);
}
case '!': kind = switch2(t, .Not, .Not_Eq); case '!': kind = switch2(t, .Not, .Not_Eq);
case '#': case '#':
kind = .Hash; kind = .Hash;
@@ -615,13 +609,7 @@ scan :: proc(t: ^Tokenizer) -> Token {
} }
case '|': kind = switch3(t, .Or, .Or_Eq, '|', .Cmp_Or); case '|': kind = switch3(t, .Or, .Or_Eq, '|', .Cmp_Or);
case '~': kind = .Xor; case '~': kind = .Xor;
case '<': case '<': kind = switch4(t, .Lt, .Lt_Eq, '<', .Shl, .Shl_Eq);
if t.ch == '-' {
advance_rune(t);
kind = .Arrow_Left;
} else {
kind = switch4(t, .Lt, .Lt_Eq, '<', .Shl, .Shl_Eq);
}
case '>': kind = switch4(t, .Gt, .Gt_Eq, '>', .Shr,.Shr_Eq); case '>': kind = switch4(t, .Gt, .Gt_Eq, '>', .Shr,.Shr_Eq);
case '.': case '.':
+2 -10
View File
@@ -52,8 +52,6 @@ TOKEN_KIND(Token__AssignOpBegin, ""), \
TOKEN_KIND(Token_CmpOrEq, "||="), \ TOKEN_KIND(Token_CmpOrEq, "||="), \
TOKEN_KIND(Token__AssignOpEnd, ""), \ TOKEN_KIND(Token__AssignOpEnd, ""), \
TOKEN_KIND(Token_ArrowRight, "->"), \ TOKEN_KIND(Token_ArrowRight, "->"), \
TOKEN_KIND(Token_ArrowLeft, "<-"), \
TOKEN_KIND(Token_DoubleArrowRight, "=>"), \
TOKEN_KIND(Token_Undef, "---"), \ TOKEN_KIND(Token_Undef, "---"), \
\ \
TOKEN_KIND(Token__ComparisonBegin, ""), \ TOKEN_KIND(Token__ComparisonBegin, ""), \
@@ -1160,10 +1158,7 @@ void tokenizer_get_token(Tokenizer *t, Token *token) {
break; break;
case '=': case '=':
token->kind = Token_Eq; token->kind = Token_Eq;
if (t->curr_rune == '>') { if (t->curr_rune == '=') {
advance_to_next_rune(t);
token->kind = Token_DoubleArrowRight;
} else if (t->curr_rune == '=') {
advance_to_next_rune(t); advance_to_next_rune(t);
token->kind = Token_CmpEq; token->kind = Token_CmpEq;
} }
@@ -1259,10 +1254,7 @@ void tokenizer_get_token(Tokenizer *t, Token *token) {
case '<': case '<':
token->kind = Token_Lt; token->kind = Token_Lt;
if (t->curr_rune == '-') { if (t->curr_rune == '=') {
advance_to_next_rune(t);
token->kind = Token_ArrowLeft;
} else if (t->curr_rune == '=') {
token->kind = Token_LtEq; token->kind = Token_LtEq;
advance_to_next_rune(t); advance_to_next_rune(t);
} else if (t->curr_rune == '<') { } else if (t->curr_rune == '<') {