summaryrefslogtreecommitdiff
path: root/parser
diff options
context:
space:
mode:
Diffstat (limited to 'parser')
-rw-r--r--parser/kind.go52
-rw-r--r--parser/node.go2
-rw-r--r--parser/parse_test.go17
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{