@@ -16,28 +16,42 @@ impl Token {
1616#[ allow( dead_code, unused_variables) ]
1717#[ derive( Debug , PartialEq ) ]
1818pub enum Tokenkind {
19+ // Illegal and End of File and identifiers
1920 Illegal ,
2021 Eof ,
2122 Ident ,
23+
24+
25+ // Types
2226 Int ,
2327 Float ,
2428 String ,
25- Assign ,
29+ Char ,
30+
31+ // mathematical Operators
2632 Plus ,
2733 Minus ,
28- Bang ,
2934 Asterisk ,
3035 Slash ,
36+ Pencentage ,
37+
38+ // special Characters
3139 Comma ,
3240 Semicolon ,
3341 Lparen ,
3442 Rparen ,
3543 Lbrace ,
3644 Rbrace ,
45+ Assign ,
46+
47+ // comparison Operators
3748 Eq ,
3849 NotEq ,
3950 Lthan ,
4051 Gthan ,
52+ OR ,
53+ And ,
54+ Bang ,
4155
4256 // Keywords
4357 Function ,
@@ -50,29 +64,45 @@ pub enum Tokenkind {
5064impl Display for Tokenkind {
5165 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
5266 match self {
67+ // Illegal and End of File and identifiers
5368 Tokenkind :: Illegal => write ! ( f, "Illegal" ) ,
5469 Tokenkind :: Eof => write ! ( f, "Eof" ) ,
5570 Tokenkind :: Ident => write ! ( f, "Ident" ) ,
71+
72+
73+ // Types
5674 Tokenkind :: Int => write ! ( f, "Int" ) ,
5775 Tokenkind :: Float => write ! ( f, "Float" ) ,
5876 Tokenkind :: String => write ! ( f, "String" ) ,
59- Tokenkind :: Assign => write ! ( f, "Assign" ) ,
77+ Tokenkind :: Char => write ! ( f, "Char" ) ,
78+
79+
80+
81+ // mathematical Operators
6082 Tokenkind :: Plus => write ! ( f, "Plus" ) ,
6183 Tokenkind :: Minus => write ! ( f, "Minus" ) ,
62- Tokenkind :: Bang => write ! ( f, "Bang" ) ,
6384 Tokenkind :: Asterisk => write ! ( f, "Asterisk" ) ,
6485 Tokenkind :: Slash => write ! ( f, "Slash" ) ,
86+ Tokenkind :: Pencentage => write ! ( f, "Percentage" ) ,
87+
88+ // special Characters
6589 Tokenkind :: Comma => write ! ( f, "Comma" ) ,
6690 Tokenkind :: Semicolon => write ! ( f, "Semicolon" ) ,
6791 Tokenkind :: Lparen => write ! ( f, "Lparen" ) ,
6892 Tokenkind :: Rparen => write ! ( f, "Rparen" ) ,
6993 Tokenkind :: Lbrace => write ! ( f, "Lbrace" ) ,
7094 Tokenkind :: Rbrace => write ! ( f, "Rbrace" ) ,
95+ Tokenkind :: Assign => write ! ( f, "Assign" ) ,
96+
97+ // equality Operators
7198 Tokenkind :: Eq => write ! ( f, "Eq" ) ,
7299 Tokenkind :: NotEq => write ! ( f, "NotEq" ) ,
73100 Tokenkind :: Lthan => write ! ( f, "Lthan" ) ,
74101 Tokenkind :: Gthan => write ! ( f, "Gthan" ) ,
75-
102+ Tokenkind :: OR => write ! ( f, "OR" ) ,
103+ Tokenkind :: And => write ! ( f, "And" ) ,
104+ Tokenkind :: Bang => write ! ( f, "Bang" ) ,
105+
76106 // Keywords
77107 Tokenkind :: Function => write ! ( f, "Function" ) ,
78108 Tokenkind :: Let => write ! ( f, "Let" ) ,
@@ -85,7 +115,7 @@ impl Display for Tokenkind {
85115
86116impl Tokenkind {
87117 pub fn lookup_ident ( ident : & str ) -> Self {
88- match ident as & str {
118+ match ident{
89119 "fn" => Self :: Function ,
90120 "let" => Self :: Let ,
91121 "if" => Self :: If ,
0 commit comments