From 1bff92c52b27b9a516599e172fe9852c3d99be38 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Tue, 2 Apr 2024 11:27:13 +0200 Subject: chore: add linters and some lint fixes (#8) * chore: add linters and some lint fixes Configure some golangci-lint linters to get the code quality right. Apply the first fixes. Next step will be to add github actions to run lint and tests in github CI. * chore: more lint, fixed comments and variable names. no semantic change. * chore: add Makefile This makefile is intended to be used as a local substitute to github actions. --- lang/golang/go.go | 122 +++++++++++++++++++++++++++--------------------------- 1 file changed, 62 insertions(+), 60 deletions(-) (limited to 'lang/golang/go.go') diff --git a/lang/golang/go.go b/lang/golang/go.go index 5b0ffa6..47baee2 100644 --- a/lang/golang/go.go +++ b/lang/golang/go.go @@ -1,7 +1,9 @@ +// Package golang provides the lexical specification of Go language. package golang import "github.com/mvertes/parscan/lang" +// GoSpec contains the lexical specification of Go. var GoSpec = &lang.Spec{ CharProp: [lang.ASCIILen]uint{ '\t': lang.CharSep, @@ -53,73 +55,73 @@ var GoSpec = &lang.Spec{ }, TokenProps: map[string]lang.TokenProp{ // Block tokens (can be nested) - "{..}": {TokenId: lang.BraceBlock}, - "[..]": {TokenId: lang.BracketBlock}, - "(..)": {TokenId: lang.ParenBlock}, + "{..}": {Token: lang.BraceBlock}, + "[..]": {Token: lang.BracketBlock}, + "(..)": {Token: lang.ParenBlock}, // String tokens (not nested) - "//..": {TokenId: lang.Comment}, - "/*..": {TokenId: lang.Comment}, - `".."`: {TokenId: lang.String}, - "`..`": {TokenId: lang.String}, + "//..": {Token: lang.Comment}, + "/*..": {Token: lang.Comment}, + `".."`: {Token: lang.String}, + "`..`": {Token: lang.String}, // Separators - ",": {TokenId: lang.Comma}, - ";": {TokenId: lang.Semicolon}, - ".": {TokenId: lang.Period}, - ":": {TokenId: lang.Colon}, + ",": {Token: lang.Comma}, + ";": {Token: lang.Semicolon}, + ".": {Token: lang.Period}, + ":": {Token: lang.Colon}, // Operators - "&": {TokenId: lang.And, Precedence: 1}, - "*": {TokenId: lang.Mul, Precedence: 1}, - "/": {TokenId: lang.Quo, Precedence: 1}, - "%": {TokenId: lang.Rem, Precedence: 1}, - "<<": {TokenId: lang.Shl, Precedence: 1}, - ">>": {TokenId: lang.Shr, Precedence: 1}, - "+": {TokenId: lang.Add, Precedence: 2}, - "-": {TokenId: lang.Sub, Precedence: 2}, - "=": {TokenId: lang.Assign, Precedence: 6}, - "+=": {TokenId: lang.AddAssign, Precedence: 6}, - "<": {TokenId: lang.Less, Precedence: 3}, - ">": {TokenId: lang.Greater, Precedence: 3}, - "^": {TokenId: lang.Xor, Precedence: 2}, - "~": {TokenId: lang.Tilde}, - "&&": {TokenId: lang.Land, Precedence: 4}, - "||": {TokenId: lang.Lor, Precedence: 5}, - ":=": {TokenId: lang.Define, Precedence: 6}, - "==": {TokenId: lang.Equal, Precedence: 3}, - "<=": {TokenId: lang.LessEqual, Precedence: 3}, - ">=": {TokenId: lang.GreaterEqual, Precedence: 3}, - "->": {TokenId: lang.Arrow}, - "!": {TokenId: lang.Not}, - "++": {TokenId: lang.Inc, SkipSemi: true}, - "--": {TokenId: lang.Dec, SkipSemi: true}, + "&": {Token: lang.And, Precedence: 1}, + "*": {Token: lang.Mul, Precedence: 1}, + "/": {Token: lang.Quo, Precedence: 1}, + "%": {Token: lang.Rem, Precedence: 1}, + "<<": {Token: lang.Shl, Precedence: 1}, + ">>": {Token: lang.Shr, Precedence: 1}, + "+": {Token: lang.Add, Precedence: 2}, + "-": {Token: lang.Sub, Precedence: 2}, + "=": {Token: lang.Assign, Precedence: 6}, + "+=": {Token: lang.AddAssign, Precedence: 6}, + "<": {Token: lang.Less, Precedence: 3}, + ">": {Token: lang.Greater, Precedence: 3}, + "^": {Token: lang.Xor, Precedence: 2}, + "~": {Token: lang.Tilde}, + "&&": {Token: lang.Land, Precedence: 4}, + "||": {Token: lang.Lor, Precedence: 5}, + ":=": {Token: lang.Define, Precedence: 6}, + "==": {Token: lang.Equal, Precedence: 3}, + "<=": {Token: lang.LessEqual, Precedence: 3}, + ">=": {Token: lang.GreaterEqual, Precedence: 3}, + "->": {Token: lang.Arrow}, + "!": {Token: lang.Not}, + "++": {Token: lang.Inc, SkipSemi: true}, + "--": {Token: lang.Dec, SkipSemi: true}, // Reserved keywords - "break": {TokenId: lang.Break}, - "case": {TokenId: lang.Case, SkipSemi: true}, - "chan": {TokenId: lang.Chan, SkipSemi: true}, - "const": {TokenId: lang.Const, SkipSemi: true}, - "continue": {TokenId: lang.Continue}, - "default": {TokenId: lang.Case, SkipSemi: true}, - "defer": {TokenId: lang.Defer, SkipSemi: true}, - "else": {TokenId: lang.Else, SkipSemi: true}, - "fallthrough": {TokenId: lang.Fallthrough}, - "for": {TokenId: lang.For, SkipSemi: true}, - "func": {TokenId: lang.Func, SkipSemi: true}, - "go": {TokenId: lang.Go, SkipSemi: true}, - "goto": {TokenId: lang.Goto, SkipSemi: true}, - "if": {TokenId: lang.If, SkipSemi: true}, - "import": {TokenId: lang.Import, SkipSemi: true}, - "interface": {TokenId: lang.Interface, SkipSemi: true}, - "map": {TokenId: lang.Map, SkipSemi: true}, - "package": {TokenId: lang.Package, SkipSemi: true}, - "range": {TokenId: lang.Range, SkipSemi: true}, - "return": {TokenId: lang.Return}, - "select": {TokenId: lang.Select, SkipSemi: true}, - "struct": {TokenId: lang.Struct, SkipSemi: true}, - "switch": {TokenId: lang.Switch, SkipSemi: true}, - "type": {TokenId: lang.Type, SkipSemi: true}, - "var": {TokenId: lang.Var, SkipSemi: true}, + "break": {Token: lang.Break}, + "case": {Token: lang.Case, SkipSemi: true}, + "chan": {Token: lang.Chan, SkipSemi: true}, + "const": {Token: lang.Const, SkipSemi: true}, + "continue": {Token: lang.Continue}, + "default": {Token: lang.Case, SkipSemi: true}, + "defer": {Token: lang.Defer, SkipSemi: true}, + "else": {Token: lang.Else, SkipSemi: true}, + "fallthrough": {Token: lang.Fallthrough}, + "for": {Token: lang.For, SkipSemi: true}, + "func": {Token: lang.Func, SkipSemi: true}, + "go": {Token: lang.Go, SkipSemi: true}, + "goto": {Token: lang.Goto, SkipSemi: true}, + "if": {Token: lang.If, SkipSemi: true}, + "import": {Token: lang.Import, SkipSemi: true}, + "interface": {Token: lang.Interface, SkipSemi: true}, + "map": {Token: lang.Map, SkipSemi: true}, + "package": {Token: lang.Package, SkipSemi: true}, + "range": {Token: lang.Range, SkipSemi: true}, + "return": {Token: lang.Return}, + "select": {Token: lang.Select, SkipSemi: true}, + "struct": {Token: lang.Struct, SkipSemi: true}, + "switch": {Token: lang.Switch, SkipSemi: true}, + "type": {Token: lang.Type, SkipSemi: true}, + "var": {Token: lang.Var, SkipSemi: true}, }, } -- cgit v1.2.3