From 69ffeb209c1c17282da13e1077a5db30cd517408 Mon Sep 17 00:00:00 2001 From: tijani Date: Mon, 23 May 2022 14:18:27 +0000 Subject: [PATCH] Do not show username at interpreter startup. Now Monk not monkey Formatting and code clarity git-svn-id: https://svn.tlawal.org/svn/monkey@9 f6afcba9-9ef1-4bdd-9b72-7484f5705bac --- lexer/lexer.go | 120 ++++++++++++++++++++++++------------------------- main.go | 11 +++-- 2 files changed, 65 insertions(+), 66 deletions(-) diff --git a/lexer/lexer.go b/lexer/lexer.go index 5ac643d..dfe7b8c 100644 --- a/lexer/lexer.go +++ b/lexer/lexer.go @@ -9,128 +9,128 @@ type Lexer struct { current_char byte } -func New(input string) *Lexer { - l := &Lexer{input: input} - l.read_char() - return l -} - func new_token(TokenType token.TokenType, ch byte) token.Token { return token.Token{Type: TokenType, Literal: string(ch)} } -func (lexer *Lexer) read_char() { - if lexer.read_position >= len(lexer.input) { - lexer.current_char = 0 +func (l_lexer *Lexer) read_char() { + if l_lexer.read_position >= len(l_lexer.input) { + l_lexer.current_char = 0 } else { - lexer.current_char = lexer.input[lexer.read_position] + l_lexer.current_char = l_lexer.input[l_lexer.read_position] } - lexer.position = lexer.read_position - lexer.read_position += 1 + l_lexer.position = l_lexer.read_position + l_lexer.read_position += 1 } -func (lexer *Lexer) peek_char() byte { - if lexer.read_position >= len(lexer.input) { +func (l_lexer *Lexer) peek_char() byte { + if l_lexer.read_position >= len(l_lexer.input) { return 0 } else { - return lexer.input[lexer.read_position] + return l_lexer.input[l_lexer.read_position] } } -func (lexer *Lexer) read_identifier() string { - position := lexer.position - for is_letter(lexer.current_char) { - lexer.read_char() +func (l_lexer *Lexer) read_identifier() string { + position := l_lexer.position + for is_letter(l_lexer.current_char) { + l_lexer.read_char() } - return lexer.input[position:lexer.position] + return l_lexer.input[position:l_lexer.position] } func is_letter(ch byte) bool { return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' } -func (lexer *Lexer) skip_whitespace() { - for lexer.current_char == ' ' || lexer.current_char == '\t' || lexer.current_char == '\n' || lexer.current_char == '\r' { - lexer.read_char() +func (l_lexer *Lexer) skip_whitespace() { + for l_lexer.current_char == ' ' || l_lexer.current_char == '\t' || l_lexer.current_char == '\n' || l_lexer.current_char == '\r' { + l_lexer.read_char() } } -func (lexer *Lexer) read_number() string { - position := lexer.position - for is_digit(lexer.current_char) { - lexer.read_char() +func (l_lexer *Lexer) read_number() string { + position := l_lexer.position + for is_digit(l_lexer.current_char) { + l_lexer.read_char() } - return lexer.input[position:lexer.position] + return l_lexer.input[position:l_lexer.position] } func is_digit(ch byte) bool { return '0' <= ch && ch <= '9' } -func (lexer *Lexer) NextToken() token.Token { - var tok token.Token - lexer.skip_whitespace() +func New(input string) *Lexer { + l := &Lexer{input: input} + l.read_char() + return l +} - switch lexer.current_char { +func (l_lexer *Lexer) NextToken() token.Token { + var tok token.Token + l_lexer.skip_whitespace() + + switch l_lexer.current_char { case '=': - if lexer.peek_char() == '=' { - ch := lexer.current_char - lexer.read_char() - literal := string(ch) + string(lexer.current_char) + if l_lexer.peek_char() == '=' { + ch := l_lexer.current_char + l_lexer.read_char() + literal := string(ch) + string(l_lexer.current_char) tok = token.Token{Type: token.EQ, Literal: literal} } else { - tok = new_token(token.ASSIGN, lexer.current_char) + tok = new_token(token.ASSIGN, l_lexer.current_char) } case '!': - if lexer.peek_char() == '=' { - ch := lexer.current_char - lexer.read_char() - literal := string(ch) + string(lexer.current_char) + if l_lexer.peek_char() == '=' { + ch := l_lexer.current_char + l_lexer.read_char() + literal := string(ch) + string(l_lexer.current_char) tok = token.Token{Type: token.NOT_EQ, Literal: literal} } else { - tok = new_token(token.BANG, lexer.current_char) + tok = new_token(token.BANG, l_lexer.current_char) } case ';': - tok = new_token(token.SEMICOLON, lexer.current_char) + tok = new_token(token.SEMICOLON, l_lexer.current_char) case '(': - tok = new_token(token.LPAREN, lexer.current_char) + tok = new_token(token.LPAREN, l_lexer.current_char) case ')': - tok = new_token(token.RPAREN, lexer.current_char) + tok = new_token(token.RPAREN, l_lexer.current_char) case '{': - tok = new_token(token.LBRACE, lexer.current_char) + tok = new_token(token.LBRACE, l_lexer.current_char) case '}': - tok = new_token(token.RBRACE, lexer.current_char) + tok = new_token(token.RBRACE, l_lexer.current_char) case ',': - tok = new_token(token.COMMA, lexer.current_char) + tok = new_token(token.COMMA, l_lexer.current_char) case '+': - tok = new_token(token.PLUS, lexer.current_char) + tok = new_token(token.PLUS, l_lexer.current_char) case '-': - tok = new_token(token.MINUS, lexer.current_char) + tok = new_token(token.MINUS, l_lexer.current_char) case '/': - tok = new_token(token.SLASH, lexer.current_char) + tok = new_token(token.SLASH, l_lexer.current_char) case '*': - tok = new_token(token.ASTERISK, lexer.current_char) + tok = new_token(token.ASTERISK, l_lexer.current_char) case '<': - tok = new_token(token.LT, lexer.current_char) + tok = new_token(token.LT, l_lexer.current_char) case '>': - tok = new_token(token.GT, lexer.current_char) + tok = new_token(token.GT, l_lexer.current_char) case 0: tok.Literal = "" tok.Type = token.EOF default: - if is_letter(lexer.current_char) { - tok.Literal = lexer.read_identifier() + if is_letter(l_lexer.current_char) { + tok.Literal = l_lexer.read_identifier() tok.Type = token.LookupIdentifier(tok.Literal) return tok - } else if is_digit(lexer.current_char) { + } else if is_digit(l_lexer.current_char) { tok.Type = token.INT - tok.Literal = lexer.read_number() + tok.Literal = l_lexer.read_number() return tok } else { - tok = new_token(token.ILLEGAL, lexer.current_char) + tok = new_token(token.ILLEGAL, l_lexer.current_char) } } - lexer.read_char() + l_lexer.read_char() return tok } diff --git a/main.go b/main.go index de81b60..53a02aa 100644 --- a/main.go +++ b/main.go @@ -11,17 +11,16 @@ package main import ( "fmt" "os" - "os/user" "monkey/repl" ) func main() { - user, err := user.Current() - if err != nil { - panic(err) - } + // user, err := user.Current() + // if err != nil { + // panic(err) + // } - fmt.Printf("Hello %s! Welcome to the Monkey programming language!\n", user.Username) + fmt.Printf("Welcome to the Monk programming language!\n") repl.Start(os.Stdin, os.Stdout) }