From a5679641aa0eb9e872605b70c263c3e950132647 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Thu, 27 Oct 2022 19:24:57 -0700 Subject: ref(users/fcuny): and just like that ... --- users/fcuny/exp/buckit/.github/workflows/go.yml | 35 ------ users/fcuny/exp/buckit/.gitignore | 1 - users/fcuny/exp/buckit/LICENSE.txt | 20 ---- users/fcuny/exp/buckit/README.org | 57 --------- users/fcuny/exp/buckit/add.go | 16 --- users/fcuny/exp/buckit/delete.go | 27 ----- users/fcuny/exp/buckit/fetch.go | 16 --- users/fcuny/exp/buckit/go.mod | 5 - users/fcuny/exp/buckit/go.sum | 13 -- users/fcuny/exp/buckit/info.go | 16 --- users/fcuny/exp/buckit/list.go | 15 --- users/fcuny/exp/buckit/main.go | 21 ---- users/fcuny/exp/monkey/Makefile | 4 - users/fcuny/exp/monkey/README.org | 3 - users/fcuny/exp/monkey/cmd/repl/main.go | 12 -- users/fcuny/exp/monkey/go.mod | 3 - users/fcuny/exp/monkey/pkg/lexer/lexer.go | 152 ------------------------ users/fcuny/exp/monkey/pkg/lexer/lexer_test.go | 125 ------------------- users/fcuny/exp/monkey/pkg/repl/repl.go | 30 ----- users/fcuny/exp/monkey/pkg/token/token.go | 71 ----------- 20 files changed, 642 deletions(-) delete mode 100644 users/fcuny/exp/buckit/.github/workflows/go.yml delete mode 100644 users/fcuny/exp/buckit/.gitignore delete mode 100644 users/fcuny/exp/buckit/LICENSE.txt delete mode 100644 users/fcuny/exp/buckit/README.org delete mode 100644 users/fcuny/exp/buckit/add.go delete mode 100644 users/fcuny/exp/buckit/delete.go delete mode 100644 users/fcuny/exp/buckit/fetch.go delete mode 100644 users/fcuny/exp/buckit/go.mod delete mode 100644 users/fcuny/exp/buckit/go.sum delete mode 100644 users/fcuny/exp/buckit/info.go delete mode 100644 users/fcuny/exp/buckit/list.go delete mode 100644 users/fcuny/exp/buckit/main.go delete mode 100644 users/fcuny/exp/monkey/Makefile delete mode 100644 users/fcuny/exp/monkey/README.org delete mode 100644 users/fcuny/exp/monkey/cmd/repl/main.go delete mode 100644 users/fcuny/exp/monkey/go.mod delete mode 100644 users/fcuny/exp/monkey/pkg/lexer/lexer.go delete mode 100644 users/fcuny/exp/monkey/pkg/lexer/lexer_test.go delete mode 100644 users/fcuny/exp/monkey/pkg/repl/repl.go delete mode 100644 users/fcuny/exp/monkey/pkg/token/token.go (limited to 'users/fcuny/exp') diff --git a/users/fcuny/exp/buckit/.github/workflows/go.yml b/users/fcuny/exp/buckit/.github/workflows/go.yml deleted file mode 100644 index cda28c1..0000000 --- a/users/fcuny/exp/buckit/.github/workflows/go.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: go - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Set up Go 1.x - uses: actions/setup-go@v2 - with: - go-version: ^1.16 - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v2 - - - name: Go fmt - run: go fmt ./... - - - name: Go vet - run: go vet ./... - - - name: Test - run: go test -race -v ./... - - - name: Build - run: go build -v ./... diff --git a/users/fcuny/exp/buckit/.gitignore b/users/fcuny/exp/buckit/.gitignore deleted file mode 100644 index 9b8d4cd..0000000 --- a/users/fcuny/exp/buckit/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/buckit diff --git a/users/fcuny/exp/buckit/LICENSE.txt b/users/fcuny/exp/buckit/LICENSE.txt deleted file mode 100644 index e614d87..0000000 --- a/users/fcuny/exp/buckit/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2021 Franck Cuny - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/users/fcuny/exp/buckit/README.org b/users/fcuny/exp/buckit/README.org deleted file mode 100644 index 5b8caa1..0000000 --- a/users/fcuny/exp/buckit/README.org +++ /dev/null @@ -1,57 +0,0 @@ -#+TITLE: buckit - -~buckit~ is a tool to add files to a GCS bucket. - -* Store -=buckit= is a CLI to upload files to a GCS bucket. A *package* belongs to a *bucket*. A bucket can have multiple *packages*. Each package can have multiple *versions*. - -When a version of a file is added to a bucket, a record is created in the index. - -A record is composed of the following information: -- the version of the file -- the name of the file -- the checksum of the version -- the path in the GCS bucket -- the user who uploaded the version -- the timestamp of when the uploaded happened -- the state of the file - -GCS' ACLs are used to change the visibility of the object in the bucket. - -The index is a single JSON file stored at the root of the bucket. The keys in the index are the packages. Packages contain a list of versions, in order (the most recent version is the last entry in the list). - -A lock is used for both read and write of the file. -** Life cycle of files -*** Deletion -By default, when a file is uploaded, we mark the state has *present*. - -Versions can be deleted. This is a soft-delete: -- the state is changed to *tombstone* -- the expiration date for blob is set 30 days in the future - -When a file is marked for deletion, it can not be fetched anymore. The state can be changed to be mark as present. In which case the expiration date is removed on the blob. -* CLI -** add -#+begin_src sh -buckit add -#+end_src -** list -#+begin_src sh -buckit list -#+end_src -** fetch -#+begin_src sh -buckit fetch -#+end_src -** info -#+begin_src sh -buckit info -#+end_src -** delete -#+begin_src sh -buckit delete -#+end_src -** undelete -#+begin_src sh -bucket undelete -#+end_src diff --git a/users/fcuny/exp/buckit/add.go b/users/fcuny/exp/buckit/add.go deleted file mode 100644 index c29476e..0000000 --- a/users/fcuny/exp/buckit/add.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var addCmd = &cli.Command{ - Name: "add", - Usage: "Add a package", - Action: addAction, - ArgsUsage: " ", -} - -func addAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/delete.go b/users/fcuny/exp/buckit/delete.go deleted file mode 100644 index 7bd2ab2..0000000 --- a/users/fcuny/exp/buckit/delete.go +++ /dev/null @@ -1,27 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var deleteCmd = &cli.Command{ - Name: "delete", - Usage: "Delete a version of a package", - Action: deleteAction, - ArgsUsage: " ", -} - -var undeleteCmd = &cli.Command{ - Name: "undelete", - Usage: "Un-delete a version of a package", - Action: undeleteAction, - ArgsUsage: " ", -} - -func deleteAction(ctx *cli.Context) error { - return nil -} - -func undeleteAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/fetch.go b/users/fcuny/exp/buckit/fetch.go deleted file mode 100644 index e4204ae..0000000 --- a/users/fcuny/exp/buckit/fetch.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var fetchCmd = &cli.Command{ - Name: "fetch", - Usage: "Fetch a version of a package", - Action: fetchAction, - ArgsUsage: " ", -} - -func fetchAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/go.mod b/users/fcuny/exp/buckit/go.mod deleted file mode 100644 index d0b3c3e..0000000 --- a/users/fcuny/exp/buckit/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/fcuny/buckit - -go 1.16 - -require github.com/urfave/cli/v2 v2.3.0 diff --git a/users/fcuny/exp/buckit/go.sum b/users/fcuny/exp/buckit/go.sum deleted file mode 100644 index f8207d7..0000000 --- a/users/fcuny/exp/buckit/go.sum +++ /dev/null @@ -1,13 +0,0 @@ -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/users/fcuny/exp/buckit/info.go b/users/fcuny/exp/buckit/info.go deleted file mode 100644 index f8ad448..0000000 --- a/users/fcuny/exp/buckit/info.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var infoCmd = &cli.Command{ - Name: "info", - Usage: "Get information about a version of a package", - Action: infoAction, - ArgsUsage: " ", -} - -func infoAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/list.go b/users/fcuny/exp/buckit/list.go deleted file mode 100644 index 1c080ab..0000000 --- a/users/fcuny/exp/buckit/list.go +++ /dev/null @@ -1,15 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var listCmd = &cli.Command{ - Name: "list", - Usage: "List packages", - Action: listAction, -} - -func listAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/main.go b/users/fcuny/exp/buckit/main.go deleted file mode 100644 index 2350264..0000000 --- a/users/fcuny/exp/buckit/main.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "os" - - "github.com/urfave/cli/v2" -) - -func main() { - app := cli.NewApp() - app.Name = "buckit" - app.Commands = []*cli.Command{ - addCmd, - listCmd, - fetchCmd, - infoCmd, - deleteCmd, - undeleteCmd, - } - app.Run(os.Args) -} diff --git a/users/fcuny/exp/monkey/Makefile b/users/fcuny/exp/monkey/Makefile deleted file mode 100644 index 61168f3..0000000 --- a/users/fcuny/exp/monkey/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -test: - go test -v ./... - -.phony: test diff --git a/users/fcuny/exp/monkey/README.org b/users/fcuny/exp/monkey/README.org deleted file mode 100644 index d968f4c..0000000 --- a/users/fcuny/exp/monkey/README.org +++ /dev/null @@ -1,3 +0,0 @@ -#+TITLE: monkey - -Implementation of https://interpreterbook.com/ diff --git a/users/fcuny/exp/monkey/cmd/repl/main.go b/users/fcuny/exp/monkey/cmd/repl/main.go deleted file mode 100644 index 46b865c..0000000 --- a/users/fcuny/exp/monkey/cmd/repl/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import ( - "fmt" - "monkey/pkg/repl" - "os" -) - -func main() { - fmt.Printf("Welcome to monkey's REPL.") - repl.Start(os.Stdin, os.Stdout) -} diff --git a/users/fcuny/exp/monkey/go.mod b/users/fcuny/exp/monkey/go.mod deleted file mode 100644 index 34c713d..0000000 --- a/users/fcuny/exp/monkey/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module monkey - -go 1.12 diff --git a/users/fcuny/exp/monkey/pkg/lexer/lexer.go b/users/fcuny/exp/monkey/pkg/lexer/lexer.go deleted file mode 100644 index 3e98cf0..0000000 --- a/users/fcuny/exp/monkey/pkg/lexer/lexer.go +++ /dev/null @@ -1,152 +0,0 @@ -// Package lexer provides a lexer to the monkey language. -package lexer - -import "monkey/pkg/token" - -// Lexer represents the lexer -type Lexer struct { - input string - // current position in input - position int - // current reading position in input (after a char) - readPosition int - // current character under examination - ch byte -} - -// New returns a new lexer -func New(input string) *Lexer { - l := &Lexer{input: input} - l.readChar() - return l -} - -// Read the current character and advances our position in the input string. -func (l *Lexer) readChar() { - // if we've reached the end of the input, we set the current character to 0, - // which is the ASCII code for NUL. - if l.readPosition >= len(l.input) { - l.ch = 0 - } else { - l.ch = l.input[l.readPosition] - } - l.position = l.readPosition - l.readPosition++ -} - -func (l *Lexer) readIdentifier() string { - position := l.position - for isLetter(l.ch) { - l.readChar() - } - return l.input[position:l.position] -} - -func (l *Lexer) readNumber() string { - position := l.position - for isDigit(l.ch) { - l.readChar() - } - return l.input[position:l.position] -} - -// we don't care about white space characters, we skip them when we find them. -func (l *Lexer) skipWhitespace() { - for l.ch == ' ' || l.ch == '\t' || l.ch == '\n' || l.ch == '\r' { - l.readChar() - } -} - -// peekChar returns the character at position (which is the next charatecter), -// but does not increment `readPosition` and `position`. -// This is needed to read tokens that are composed of two characters (e.g. `==`). -func (l *Lexer) peekChar() byte { - if l.readPosition >= len(l.input) { - return 0 - } - return l.input[l.readPosition] -} - -// NextToken reads the next token from the lexer and returns the current token. -func (l *Lexer) NextToken() token.Token { - var tok token.Token - - l.skipWhitespace() - - switch l.ch { - case '=': - if l.peekChar() == '=' { - ch := l.ch - l.readChar() - literal := string(ch) + string(l.ch) - tok = token.Token{Type: token.EQ, Literal: literal} - } else { - tok = newToken(token.ASSIGN, l.ch) - } - case '+': - tok = newToken(token.PLUS, l.ch) - case '-': - tok = newToken(token.MINUS, l.ch) - case '!': - if l.peekChar() == '=' { - ch := l.ch - l.readChar() - literal := string(ch) + string(l.ch) - tok = token.Token{Type: token.NOT_EQ, Literal: literal} - } else { - tok = newToken(token.BANG, l.ch) - } - case '*': - tok = newToken(token.ASTERISK, l.ch) - case '/': - tok = newToken(token.SLASH, l.ch) - case '<': - tok = newToken(token.LT, l.ch) - case '>': - tok = newToken(token.GT, l.ch) - - case ';': - tok = newToken(token.SEMICOLON, l.ch) - case ',': - tok = newToken(token.COMMA, l.ch) - case '(': - tok = newToken(token.LPAREN, l.ch) - case ')': - tok = newToken(token.RPAREN, l.ch) - case '{': - tok = newToken(token.LBRACE, l.ch) - case '}': - tok = newToken(token.RBRACE, l.ch) - case 0: - tok.Literal = "" - tok.Type = token.EOF - default: - if isLetter(l.ch) { - tok.Literal = l.readIdentifier() - tok.Type = token.LookupIdent(tok.Literal) - return tok - } else if isDigit(l.ch) { - tok.Type = token.INT - tok.Literal = l.readNumber() - return tok - } else { - tok = newToken(token.ILLEGAL, l.ch) - } - - } - - l.readChar() - return tok -} - -func newToken(tokenType token.TokenType, ch byte) token.Token { - return token.Token{Type: tokenType, Literal: string(ch)} -} - -func isLetter(ch byte) bool { - return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' -} - -func isDigit(ch byte) bool { - return '0' <= ch && ch <= '9' -} diff --git a/users/fcuny/exp/monkey/pkg/lexer/lexer_test.go b/users/fcuny/exp/monkey/pkg/lexer/lexer_test.go deleted file mode 100644 index fdea1d3..0000000 --- a/users/fcuny/exp/monkey/pkg/lexer/lexer_test.go +++ /dev/null @@ -1,125 +0,0 @@ -package lexer - -import ( - "monkey/pkg/token" - "testing" -) - -func TestNextToken(t *testing.T) { - input := `let five = 5; -let ten = 10; - -let add = fn(x, y) { - x + y -}; - -let result = add(five, ten); -!-/*5; -10 > 5; - -if (5 < 10) { - return true; -} else { - return false; -} - -10 == 10; -10 != 9; -` - - tests := []struct { - expectedType token.TokenType - expectedLiteral string - }{ - {token.LET, "let"}, - {token.IDENT, "five"}, - {token.ASSIGN, "="}, - {token.INT, "5"}, - {token.SEMICOLON, ";"}, - - {token.LET, "let"}, - {token.IDENT, "ten"}, - {token.ASSIGN, "="}, - {token.INT, "10"}, - {token.SEMICOLON, ";"}, - - {token.LET, "let"}, - {token.IDENT, "add"}, - {token.ASSIGN, "="}, - {token.FUNCTION, "fn"}, - {token.LPAREN, "("}, - {token.IDENT, "x"}, - {token.COMMA, ","}, - {token.IDENT, "y"}, - {token.RPAREN, ")"}, - {token.LBRACE, "{"}, - {token.IDENT, "x"}, - {token.PLUS, "+"}, - {token.IDENT, "y"}, - {token.RBRACE, "}"}, - {token.SEMICOLON, ";"}, - - {token.LET, "let"}, - {token.IDENT, "result"}, - {token.ASSIGN, "="}, - {token.IDENT, "add"}, - {token.LPAREN, "("}, - {token.IDENT, "five"}, - {token.COMMA, ","}, - {token.IDENT, "ten"}, - {token.RPAREN, ")"}, - {token.SEMICOLON, ";"}, - - {token.BANG, "!"}, - {token.MINUS, "-"}, - {token.SLASH, "/"}, - {token.ASTERISK, "*"}, - {token.INT, "5"}, - {token.SEMICOLON, ";"}, - - {token.INT, "10"}, - {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.INT, "10"}, - {token.EQ, "=="}, - {token.INT, "10"}, - {token.SEMICOLON, ";"}, - - {token.INT, "10"}, - {token.NOT_EQ, "!="}, - {token.INT, "9"}, - {token.SEMICOLON, ";"}, - } - - l := New(input) - for i, tt := range tests { - tok := l.NextToken() - if tok.Type != tt.expectedType { - t.Fatalf("tests[%d] - tokentype wrong. expected=%q, got=%q", i, tt.expectedType, tok.Type) - } - - if tok.Literal != tt.expectedLiteral { - t.Fatalf("tests[%d] - tokenliteral wrong. expected=%q, got=%q", i, tt.expectedLiteral, tok.Literal) - } - } -} diff --git a/users/fcuny/exp/monkey/pkg/repl/repl.go b/users/fcuny/exp/monkey/pkg/repl/repl.go deleted file mode 100644 index 5e7b1d1..0000000 --- a/users/fcuny/exp/monkey/pkg/repl/repl.go +++ /dev/null @@ -1,30 +0,0 @@ -// Package repl provides a REPL to the monkey language. -package repl - -import ( - "bufio" - "fmt" - "io" - lexer "monkey/pkg/lexer" - token "monkey/pkg/token" -) - -const PROMPT = ">> " - -func Start(in io.Reader, out io.Writer) { - scanner := bufio.NewScanner(in) - for { - fmt.Print(PROMPT) - scanned := scanner.Scan() - - if !scanned { - return - } - - line := scanner.Text() - l := lexer.New(line) - for tok := l.NextToken(); tok.Type != token.EOF; tok = l.NextToken() { - fmt.Printf("%+v\n", tok) - } - } -} diff --git a/users/fcuny/exp/monkey/pkg/token/token.go b/users/fcuny/exp/monkey/pkg/token/token.go deleted file mode 100644 index 5eadc5e..0000000 --- a/users/fcuny/exp/monkey/pkg/token/token.go +++ /dev/null @@ -1,71 +0,0 @@ -// Package token provides a tokenizer for the monkey language. -package token - -// TokenType represents the type of the token -type TokenType string - -// Token represents a token, with the type and the literal value of the token -type Token struct { - Type TokenType - Literal string -} - -const ( - ILLEGAL = "ILLEGAL" - EOF = "EOF" - - IDENT = "IDENT" - INT = "INT" - - COMMA = "," - SEMICOLON = ";" - - LPAREN = "(" - RPAREN = ")" - LBRACE = "{" - RBRACE = "}" - - // The following tokens are keywords - FUNCTION = "FUNCTION" - LET = "LET" - TRUE = "TRUE" - FALSE = "FALSE" - IF = "IF" - ELSE = "ELSE" - RETURN = "RETURN" - - // The following tokens are for operators - ASSIGN = "=" - PLUS = "+" - MINUS = "-" - BANG = "!" - ASTERISK = "*" - SLASH = "/" - LT = "<" - GT = ">" - - EQ = "==" - NOT_EQ = "!=" -) - -// List of our keywords for the language -var keywords = map[string]TokenType{ - "fn": FUNCTION, - "let": LET, - "true": TRUE, - "false": FALSE, - "if": IF, - "else": ELSE, - "return": RETURN, -} - -// LookupIdent returns the token type for a given identifier. -// First we check if the identifier is a keyword. If it is, we return they -// keyword TokenType constant. If it isn't, we return the token.IDENT which is -// the TokenType for all user-defined identifiers. -func LookupIdent(ident string) TokenType { - if tok, ok := keywords[ident]; ok { - return tok - } - return IDENT -} -- cgit 1.4.1