Browse Source

Remove unused tokens

gingerBill 4 years ago
parent
commit
98c8fde098

+ 1 - 1
core/odin/ast/walk.odin

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

+ 1 - 1
core/odin/parser/parser.odin

@@ -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 {

+ 100 - 104
core/odin/tokenizer/token.odin

@@ -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,
-
-		Cmp_And,
-		Cmp_Or,
+		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,   // ||
 
 	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 {
 	"",
 
 	"->",
-	"<-",
-	"=>",
 	"---",
 
 	"",

+ 2 - 14
core/odin/tokenizer/tokenizer.odin

@@ -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 '.':

+ 2 - 10
src/tokenizer.cpp

@@ -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 == '<') {