# HG changeset patch # User anatofuz # Date 1589880237 -32400 # Node ID 6bd28d00a4f475fe20c1b71887b5d094d7fa0415 # Parent 595b3e2dc94e559b61bce28425f34acbea966092 ... diff -r 595b3e2dc94e -r 6bd28d00a4f4 lexer/lexer_test.go --- a/lexer/lexer_test.go Fri May 15 10:26:01 2020 +0900 +++ b/lexer/lexer_test.go Tue May 19 18:23:57 2020 +0900 @@ -16,6 +16,12 @@ let result = add(five, ten); !-/*5; 5 < 10 > 5; + + if (5 < 10) { + return true; + } else { + return false; + } ` tests := []struct { @@ -70,6 +76,23 @@ {token.GT, ">"}, {token.INT, "5"}, {token.SEMICOLON, ";"}, + {token.IF, "if"}, + {token.LPAREN, "("}, + {token.INT, "5"}, + {token.LT, "<"}, + {token.INT, "10"}, + {token.RPAREN, ")"}, + {token.LBRACE, "{"}, + {token.RETURN, "return"}, + {token.TRUE, "true"}, + {token.SEMICOLON, ";"}, + {token.RBRACE, "}"}, + {token.ELSE, "else"}, + {token.LBRACE, "{"}, + {token.RETURN, "return"}, + {token.FALSE, "false"}, + {token.SEMICOLON, ";"}, + {token.RBRACE, "}"}, {token.EOF, ""}, } diff -r 595b3e2dc94e -r 6bd28d00a4f4 token/token.go --- a/token/token.go Fri May 15 10:26:01 2020 +0900 +++ b/token/token.go Tue May 19 18:23:57 2020 +0900 @@ -7,9 +7,9 @@ IDENT = "IDENT" INT = "INT" - ASSIGN = "=" - PLUS = "+" - + // Operators + ASSIGN = "=" + PLUS = "+" MINUS = "-" BANG = "!" ASTERISK = "*" @@ -26,8 +26,14 @@ LBRACE = "{" RBRACE = "}" + // Keywords FUNCTION = "FUNCTION" LET = "LET" + TRUE = "TRUE" + FALSE = "FALSE" + IF = "IF" + ELSE = "ELSE" + RETURN = "RETURN" ) type TokenType string @@ -38,8 +44,13 @@ } var keywords = map[string]TokenType{ - "fn": FUNCTION, - "let": LET, + "fn": FUNCTION, + "let": LET, + "true": TRUE, + "false": FALSE, + "if": IF, + "else": ELSE, + "return": RETURN, } //LookupIdent is jugde ident or defined keywords