diff options
Diffstat (limited to 'parser')
| -rw-r--r-- | parser/kind.go | 52 | ||||
| -rw-r--r-- | parser/node.go | 2 | ||||
| -rw-r--r-- | parser/parse_test.go | 17 |
3 files changed, 52 insertions, 19 deletions
diff --git a/parser/kind.go b/parser/kind.go new file mode 100644 index 0000000..d570358 --- /dev/null +++ b/parser/kind.go @@ -0,0 +1,52 @@ +package parser + +import "fmt" + +type Kind int + +const ( + Undefined = Kind(iota) + FuncDecl + CallExpr + IfStmt + StmtBloc + ReturnStmt + Ident + StringLit + NumberLit + ParBloc + DotOp + MulOp + AddOp + SubOp + AssignOp + DefOp + InfOp +) + +var kindString = [...]string{ + Undefined: "Undefined", + FuncDecl: "FuncDecl", + CallExpr: "CallExpr", + IfStmt: "IfStmt", + StmtBloc: "StmtBloc", + ReturnStmt: "ReturnStmt", + Ident: "Ident", + StringLit: "StringLit", + NumberLit: "NumberLit", + ParBloc: "ParBloc", + DotOp: "DotOp", + MulOp: "MulOp", + AddOp: "AddOP", + SubOp: "SubOp", + AssignOp: "AssignOp", + DefOp: "DefOp", + InfOp: "InfOp", +} + +func (k Kind) String() string { + if int(k) < 0 || int(k) > len(kindString) { + return fmt.Sprintf("unknown kind %d", k) + } + return kindString[k] +} diff --git a/parser/node.go b/parser/node.go index 6ebc2a7..f81285a 100644 --- a/parser/node.go +++ b/parser/node.go @@ -2,8 +2,6 @@ package parser import "github.com/gnolang/parscan/scanner" -type Kind int - type Node struct { Child []*Node // sub-tree nodes scanner.Token // token at origin of the node diff --git a/parser/parse_test.go b/parser/parse_test.go index dc363cb..3bf6955 100644 --- a/parser/parse_test.go +++ b/parser/parse_test.go @@ -47,23 +47,6 @@ var GoScanner = &scanner.Scanner{ }, } -const ( - Undefined = Kind(iota) - FuncDecl - CallExpr - IfStmt - StmtBloc - ReturnStmt - ParBloc - MulOp - AddOp - SubOp - DotOp - AssignOp - DefOp - InfOp -) - var GoParser = &Parser{ Scanner: GoScanner, Spec: map[string]NodeSpec{ |
