summaryrefslogtreecommitdiff
path: root/parser/kind.go
diff options
context:
space:
mode:
Diffstat (limited to 'parser/kind.go')
-rw-r--r--parser/kind.go52
1 files changed, 52 insertions, 0 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]
+}