From 459eca16816023fb0afdd6e0948e5406d84e5bc5 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Fri, 1 Sep 2023 11:42:55 +0200 Subject: parser: skip comment modes Refctor node kind names by concatenating category and instance, to allow better sorting. Comments are now parsed and skipped during generation of AST. --- lang/golang/go.go | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) (limited to 'lang/golang') diff --git a/lang/golang/go.go b/lang/golang/go.go index 2ab1781..5075329 100644 --- a/lang/golang/go.go +++ b/lang/golang/go.go @@ -43,24 +43,36 @@ var GoScanner = &scanner.Scanner{ "`": "`", "//": "\n", }, + BlockProp: map[string]uint{ + "(": scanner.CharBlock, + "{": scanner.CharBlock, + "[": scanner.CharBlock, + `"`: scanner.CharStr | scanner.StrEsc | scanner.StrNonl, + "`": scanner.CharStr, + "'": scanner.CharStr | scanner.StrEsc, + "/*": scanner.CharStr, + "//": scanner.CharStr | scanner.ExcludeEnd | scanner.EosValidEnd, + }, } var GoParser = &parser.Parser{ Scanner: GoScanner, Spec: map[string]parser.NodeSpec{ - ".": {Kind: parser.DotOp, Flags: parser.Call, Order: 3}, - "*": {Kind: parser.MulOp, Order: 4}, - "+": {Kind: parser.AddOp, Order: 5}, - "-": {Kind: parser.SubOp, Order: 5}, - "<": {Kind: parser.InfOp, Order: 6}, - ":=": {Kind: parser.DefOp, Order: 7}, - "=": {Kind: parser.AssignOp, Order: 7}, - "if": {Kind: parser.IfStmt, Flags: parser.Stmt | parser.ExprSep}, - "func": {Kind: parser.FuncDecl, Flags: parser.Decl | parser.Call}, - "return": {Kind: parser.ReturnStmt, Flags: parser.Stmt}, - "{..}": {Kind: parser.StmtBloc, Flags: parser.ExprSep}, - "(..)": {Kind: parser.ParBloc, Flags: parser.Call}, - `".."`: {Kind: parser.StringLit}, + ".": {Kind: parser.OpDot, Flags: parser.Call, Order: 3}, + "*": {Kind: parser.OpMultiply, Order: 4}, + "+": {Kind: parser.OpAdd, Order: 5}, + "-": {Kind: parser.OpSubtract, Order: 5}, + "<": {Kind: parser.OpInferior, Order: 6}, + ":=": {Kind: parser.OpDefine, Order: 7}, + "=": {Kind: parser.OpAssign, Order: 7}, + "if": {Kind: parser.StmtIf, Flags: parser.Stmt | parser.ExprSep}, + "func": {Kind: parser.DeclFunc, Flags: parser.Decl | parser.Call}, + "return": {Kind: parser.StmtReturn, Flags: parser.Stmt}, + "{..}": {Kind: parser.BlockStmt, Flags: parser.ExprSep}, + "(..)": {Kind: parser.BlockParen, Flags: parser.Call}, + `".."`: {Kind: parser.LiteralString}, + "//..": {Kind: parser.Comment}, + "/*..": {Kind: parser.Comment}, }, } -- cgit v1.2.3