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

View File

@@ -22,7 +22,7 @@ inspect :: proc(node: ^Node, f: proc(^Node) -> bool) {
if f(node) {
return v;
}
return nil
return nil;
},
data = rawptr(f),
};

View File

@@ -2599,7 +2599,7 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr {
case .Asm:
tok := expect_token(p, .Asm);
param_types: [dynamic]^ast.Expr
param_types: [dynamic]^ast.Expr;
return_type: ^ast.Expr;
if allow_token(p, .Open_Paren) {
for p.curr_tok.kind != .Close_Paren && p.curr_tok.kind != .EOF {

View File

@@ -34,122 +34,120 @@ Token_Kind :: enum u32 {
Comment,
B_Literal_Begin,
Ident,
Integer,
Float,
Imag,
Rune,
String,
Ident, // main
Integer, // 12345
Float, // 123.45
Imag, // 123.45i
Rune, // 'a'
String, // "abc"
B_Literal_End,
B_Operator_Begin,
Eq,
Not,
Hash,
At,
Dollar,
Pointer,
Question,
Add,
Sub,
Mul,
Quo,
Mod,
Mod_Mod,
And,
Or,
Xor,
And_Not,
Shl,
Shr,
Eq, // =
Not, // !
Hash, // #
At, // @
Dollar, // $
Pointer, // ^
Question, // ?
Add, // +
Sub, // -
Mul, // *
Quo, // /
Mod, // %
Mod_Mod, // %%
And, // &
Or, // |
Xor, // ~
And_Not, // &~
Shl, // <<
Shr, // >>
Cmp_And,
Cmp_Or,
Cmp_And, // &&
Cmp_Or, // ||
B_Assign_Op_Begin,
Add_Eq,
Sub_Eq,
Mul_Eq,
Quo_Eq,
Mod_Eq,
Mod_Mod_Eq,
And_Eq,
Or_Eq,
Xor_Eq,
And_Not_Eq,
Shl_Eq,
Shr_Eq,
Cmp_And_Eq,
Cmp_Or_Eq,
Add_Eq, // +=
Sub_Eq, // -=
Mul_Eq, // *=
Quo_Eq, // /=
Mod_Eq, // %=
Mod_Mod_Eq, // %%=
And_Eq, // &=
Or_Eq, // |=
Xor_Eq, // ~=
And_Not_Eq, // &~=
Shl_Eq, // <<=
Shr_Eq, // >>=
Cmp_And_Eq, // &&=
Cmp_Or_Eq, // ||=
B_Assign_Op_End,
Arrow_Right,
Arrow_Left,
Double_Arrow_Right,
Undef,
Arrow_Right, // ->
Undef, // ---
B_Comparison_Begin,
Cmp_Eq,
Not_Eq,
Lt,
Gt,
Lt_Eq,
Gt_Eq,
Cmp_Eq, // ==
Not_Eq, // !=
Lt, // <
Gt, // >
Lt_Eq, // <=
Gt_Eq, // >=
B_Comparison_End,
Open_Paren,
Close_Paren,
Open_Bracket,
Close_Bracket,
Open_Brace,
Close_Brace,
Colon,
Semicolon,
Period,
Comma,
Ellipsis,
Range_Half,
Back_Slash,
Open_Paren, // (
Close_Paren, // )
Open_Bracket, // [
Close_Bracket, // ]
Open_Brace, // {
Close_Brace, // }
Colon, // :
Semicolon, // ;
Period, // .
Comma, // ,
Ellipsis, // ..
Range_Half, // ..<
Back_Slash, // \
B_Operator_End,
B_Keyword_Begin,
Import,
Foreign,
Package,
Typeid,
When,
Where,
If,
Else,
For,
Switch,
In,
Not_In,
Do,
Case,
Break,
Continue,
Fallthrough,
Defer,
Return,
Proc,
Struct,
Union,
Enum,
Bit_Field,
Bit_Set,
Map,
Dynamic,
Auto_Cast,
Cast,
Transmute,
Distinct,
Opaque,
Using,
Inline,
No_Inline,
Context,
Asm,
Import, // import
Foreign, // foreign
Package, // package
Typeid, // typeid
When, // when
Where, // where
If, // if
Else, // else
For, // for
Switch, // switch
In, // in
Not_In, // not_in
Do, // do
Case, // case
Break, // break
Continue, // continue
Fallthrough, // fallthrough
Defer, // defer
Return, // return
Proc, // proc
Struct, // struct
Union, // union
Enum, // enum
Bit_Field, // bit_field
Bit_Set, // bit_set
Map, // map
Dynamic, // dynamic
Auto_Cast, // auto_cast
Cast, // cast
Transmute, // transmute
Distinct, // distinct
Opaque, // opaque
Using, // using
Inline, // inline
No_Inline, // no_inline
Context, // context
Asm, // asm
B_Keyword_End,
COUNT,
@@ -214,8 +212,6 @@ tokens := [Token_Kind.COUNT]string {
"",
"->",
"<-",
"=>",
"---",
"",

View File

@@ -563,13 +563,7 @@ scan :: proc(t: ^Tokenizer) -> Token {
insert_semicolon = true;
kind = .String;
lit = scan_raw_string(t);
case '=':
if t.ch == '>' {
advance_rune(t);
kind = .Double_Arrow_Right;
} else {
kind = switch2(t, .Eq, .Cmp_Eq);
}
case '=': kind = switch2(t, .Eq, .Cmp_Eq);
case '!': kind = switch2(t, .Not, .Not_Eq);
case '#':
kind = .Hash;
@@ -615,13 +609,7 @@ scan :: proc(t: ^Tokenizer) -> Token {
}
case '|': kind = switch3(t, .Or, .Or_Eq, '|', .Cmp_Or);
case '~': kind = .Xor;
case '<':
if t.ch == '-' {
advance_rune(t);
kind = .Arrow_Left;
} else {
kind = switch4(t, .Lt, .Lt_Eq, '<', .Shl, .Shl_Eq);
}
case '<': kind = switch4(t, .Lt, .Lt_Eq, '<', .Shl, .Shl_Eq);
case '>': kind = switch4(t, .Gt, .Gt_Eq, '>', .Shr,.Shr_Eq);
case '.':

View File

@@ -52,8 +52,6 @@ TOKEN_KIND(Token__AssignOpBegin, ""), \
TOKEN_KIND(Token_CmpOrEq, "||="), \
TOKEN_KIND(Token__AssignOpEnd, ""), \
TOKEN_KIND(Token_ArrowRight, "->"), \
TOKEN_KIND(Token_ArrowLeft, "<-"), \
TOKEN_KIND(Token_DoubleArrowRight, "=>"), \
TOKEN_KIND(Token_Undef, "---"), \
\
TOKEN_KIND(Token__ComparisonBegin, ""), \
@@ -1160,10 +1158,7 @@ void tokenizer_get_token(Tokenizer *t, Token *token) {
break;
case '=':
token->kind = Token_Eq;
if (t->curr_rune == '>') {
advance_to_next_rune(t);
token->kind = Token_DoubleArrowRight;
} else if (t->curr_rune == '=') {
if (t->curr_rune == '=') {
advance_to_next_rune(t);
token->kind = Token_CmpEq;
}
@@ -1259,10 +1254,7 @@ void tokenizer_get_token(Tokenizer *t, Token *token) {
case '<':
token->kind = Token_Lt;
if (t->curr_rune == '-') {
advance_to_next_rune(t);
token->kind = Token_ArrowLeft;
} else if (t->curr_rune == '=') {
if (t->curr_rune == '=') {
token->kind = Token_LtEq;
advance_to_next_rune(t);
} else if (t->curr_rune == '<') {