From 225a2b13ea4b4ac2a38ff239fd593cfec6b04eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petar=20Kapri=C5=A1?= Date: Wed, 22 Jan 2025 18:55:21 +0100 Subject: [PATCH] Move lexer back into main package with updated go.mod --- pj1-go/ast.go | 6 ++-- pj1-go/gen-ast.go | 12 +++---- pj1-go/go.mod | 11 +++--- pj1-go/go.sum | 10 ++++-- pj1-go/{lexer => }/lexer.go | 2 +- pj1-go/pj1.go | 5 ++- pj1-go/{lexer => }/tokentype_string.go | 50 +++++++++++++------------- 7 files changed, 51 insertions(+), 45 deletions(-) rename pj1-go/{lexer => }/lexer.go (99%) rename pj1-go/{lexer => }/tokentype_string.go (62%) diff --git a/pj1-go/ast.go b/pj1-go/ast.go index bedfeb3..60f7998 100644 --- a/pj1-go/ast.go +++ b/pj1-go/ast.go @@ -1,15 +1,13 @@ // Code generated by tools/gen-ast.go DO NOT EDIT. package main -import "git.bonsai.cool/kayprish/pj1/pj1-go/lexer" - type Expr interface { isExpr() } type Binary struct { left Expr - operator lexer.Token + operator Token right Expr } @@ -28,7 +26,7 @@ type Literal struct { func (x Literal) isExpr() {} type Unary struct { - operator lexer.Token + operator Token right Expr } diff --git a/pj1-go/gen-ast.go b/pj1-go/gen-ast.go index 0c27136..49fb379 100644 --- a/pj1-go/gen-ast.go +++ b/pj1-go/gen-ast.go @@ -14,10 +14,11 @@ import ( "unicode/utf8" ) -var modulePath string - // returns a string which contains the current module path, keep in mind this // program is meant to be run in the root of the module using go generate +// +// This function is no longer useful because the lexer package has been +// deleted, however, it may become useful again soon func getModulePath() string { goModFile, err := os.Open("./go.mod") if err != nil { @@ -44,13 +45,12 @@ func main() { os.Exit(64) } outputDir := os.Args[1] - modulePath = getModulePath() defineAst(outputDir, "Expr", - []string{"Binary : left Expr, operator lexer.Token, right Expr", + []string{"Binary : left Expr, operator Token, right Expr", "Grouping : expression Expr", "Literal : value interface{}", // a literal can be any value that can be printed - "Unary : operator lexer.Token, right Expr"}) + "Unary : operator Token, right Expr"}) } func lowerFirst(s string) string { @@ -74,8 +74,6 @@ func defineAst(outputDir string, baseName string, types []string) { fmt.Fprintln(f, "// Code generated by tools/gen-ast.go DO NOT EDIT.") fmt.Fprintln(f, "package main") fmt.Fprintln(f) - fmt.Fprintln(f, "import \""+modulePath+"/lexer\"") - fmt.Fprintln(f) // Creates a dummy interface just to limit types which can be // considered an "Expr" fmt.Fprintln(f, "type "+baseName+" interface {") diff --git a/pj1-go/go.mod b/pj1-go/go.mod index 52a4ad2..9074e04 100644 --- a/pj1-go/go.mod +++ b/pj1-go/go.mod @@ -1,10 +1,13 @@ module git.bonsai.cool/kayprish/pj1/pj1-go -go 1.18 +go 1.22.0 -require golang.org/x/tools v0.1.13-0.20220917004541-4d18923f060e +toolchain go1.22.2 + +require golang.org/x/tools v0.29.0 require ( - golang.org/x/mod v0.12.0 // indirect - golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.29.0 // indirect ) diff --git a/pj1-go/go.sum b/pj1-go/go.sum index 121af36..7057333 100644 --- a/pj1-go/go.sum +++ b/pj1-go/go.sum @@ -1,8 +1,14 @@ -git.bonsai.cool/kayprish/pj1/pj1-go v0.0.0-20240807135935-04e669c15630 h1:SO1oOi4BAVPmoCkBCeZEcNXiCDZJrM49Y5Fhm/bBuBU= -git.bonsai.cool/kayprish/pj1/pj1-go v0.0.0-20240807135935-04e669c15630/go.mod h1:f4dHsvhBf6lTSjuA+gqssxFOHdkOjPnS4QeufMWvHOM= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/tools v0.1.13-0.20220917004541-4d18923f060e h1:K/LreqAwv7hZaSPyj5LvaiQd2wROouJDabf2r+oBqUw= golang.org/x/tools v0.1.13-0.20220917004541-4d18923f060e/go.mod h1:VsjNM1dMo+Ofkp5d7y7fOdQZD8MTXSQ4w3EPk65AvKU= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= diff --git a/pj1-go/lexer/lexer.go b/pj1-go/lexer.go similarity index 99% rename from pj1-go/lexer/lexer.go rename to pj1-go/lexer.go index a0caf04..1f5c38e 100644 --- a/pj1-go/lexer/lexer.go +++ b/pj1-go/lexer.go @@ -1,4 +1,4 @@ -package lexer +package main import ( "fmt" diff --git a/pj1-go/pj1.go b/pj1-go/pj1.go index 45e320a..0ca7013 100644 --- a/pj1-go/pj1.go +++ b/pj1-go/pj1.go @@ -6,7 +6,6 @@ import ( "io/ioutil" "os" - "git.bonsai.cool/kayprish/pj1/pj1-go/lexer" "git.bonsai.cool/kayprish/pj1/pj1-go/util" ) @@ -53,9 +52,9 @@ func runPrompt() { } func run(source string) { - l := lexer.NewLexer(source) + l := NewLexer(source) l.ScanTokens() - var tokens []lexer.Token = l.Tokens + var tokens []Token = l.Tokens for _, token := range tokens { fmt.Println(token) diff --git a/pj1-go/lexer/tokentype_string.go b/pj1-go/tokentype_string.go similarity index 62% rename from pj1-go/lexer/tokentype_string.go rename to pj1-go/tokentype_string.go index e804fd2..a0d245b 100644 --- a/pj1-go/lexer/tokentype_string.go +++ b/pj1-go/tokentype_string.go @@ -1,6 +1,6 @@ // Code generated by "stringer -type=TokenType"; DO NOT EDIT. -package lexer +package main import "strconv" @@ -29,32 +29,34 @@ func _() { _ = x[SLASH-18] _ = x[SLASH_DOT-19] _ = x[SLASH_UNDERSCORE-20] - _ = x[IDENTIFIER-21] - _ = x[STRING-22] - _ = x[INTEGER-23] - _ = x[FLOAT-24] - _ = x[AND-25] - _ = x[CLASS-26] - _ = x[ELSE-27] - _ = x[FALSE-28] - _ = x[FOR-29] - _ = x[FUN-30] - _ = x[IF-31] - _ = x[NIL-32] - _ = x[OR-33] - _ = x[PRINT-34] - _ = x[RETURN-35] - _ = x[SUPER-36] - _ = x[THIS-37] - _ = x[TRUE-38] - _ = x[VAR-39] - _ = x[WHILE-40] - _ = x[EOF-41] + _ = x[SLASH_MODULO-21] + _ = x[MODULO-22] + _ = x[IDENTIFIER-23] + _ = x[STRING-24] + _ = x[INTEGER-25] + _ = x[FLOAT-26] + _ = x[AND-27] + _ = x[CLASS-28] + _ = x[ELSE-29] + _ = x[FALSE-30] + _ = x[FOR-31] + _ = x[FUN-32] + _ = x[IF-33] + _ = x[NIL-34] + _ = x[OR-35] + _ = x[PRINT-36] + _ = x[RETURN-37] + _ = x[SUPER-38] + _ = x[THIS-39] + _ = x[TRUE-40] + _ = x[VAR-41] + _ = x[WHILE-42] + _ = x[EOF-43] } -const _TokenType_name = "LEFT_PARENRIGHT_PARENLEFT_BRACERIGHT_BRACECOMMADOTMINUSPLUSSEMICOLONSTARBANGBANG_EQUALEQUALEQUAL_EQUALGREATERGREATER_EQUALLESSLESS_EQUALSLASHSLASH_DOTSLASH_UNDERSCOREIDENTIFIERSTRINGINTEGERFLOATANDCLASSELSEFALSEFORFUNIFNILORPRINTRETURNSUPERTHISTRUEVARWHILEEOF" +const _TokenType_name = "LEFT_PARENRIGHT_PARENLEFT_BRACERIGHT_BRACECOMMADOTMINUSPLUSSEMICOLONSTARBANGBANG_EQUALEQUALEQUAL_EQUALGREATERGREATER_EQUALLESSLESS_EQUALSLASHSLASH_DOTSLASH_UNDERSCORESLASH_MODULOMODULOIDENTIFIERSTRINGINTEGERFLOATANDCLASSELSEFALSEFORFUNIFNILORPRINTRETURNSUPERTHISTRUEVARWHILEEOF" -var _TokenType_index = [...]uint16{0, 10, 21, 31, 42, 47, 50, 55, 59, 68, 72, 76, 86, 91, 102, 109, 122, 126, 136, 141, 150, 166, 176, 182, 189, 194, 197, 202, 206, 211, 214, 217, 219, 222, 224, 229, 235, 240, 244, 248, 251, 256, 259} +var _TokenType_index = [...]uint16{0, 10, 21, 31, 42, 47, 50, 55, 59, 68, 72, 76, 86, 91, 102, 109, 122, 126, 136, 141, 150, 166, 178, 184, 194, 200, 207, 212, 215, 220, 224, 229, 232, 235, 237, 240, 242, 247, 253, 258, 262, 266, 269, 274, 277} func (i TokenType) String() string { if i < 0 || i >= TokenType(len(_TokenType_index)-1) {