summaryrefslogtreecommitdiff
path: root/tnslc/ast
diff options
context:
space:
mode:
Diffstat (limited to 'tnslc/ast')
-rw-r--r--tnslc/ast/ast.tnsl4
-rw-r--r--tnslc/ast/node.tnsl61
2 files changed, 3 insertions, 62 deletions
diff --git a/tnslc/ast/ast.tnsl b/tnslc/ast/ast.tnsl
index 405a94a..466fe08 100644
--- a/tnslc/ast/ast.tnsl
+++ b/tnslc/ast/ast.tnsl
@@ -15,5 +15,5 @@
#/
/; export module ast
- :import "node.tnsl"
-;/ \ No newline at end of file
+ :include "ast/node.tnsl"
+;/
diff --git a/tnslc/ast/node.tnsl b/tnslc/ast/node.tnsl
index 5eeac91..d1db325 100644
--- a/tnslc/ast/node.tnsl
+++ b/tnslc/ast/node.tnsl
@@ -18,68 +18,9 @@
;struct Node {
tnslc.parse.Token
# associated token to the node
- data,
+ tok,
~{}Node
# sub-nodes
sub
}
-
-# AST node (block)
-;struct BlockNode extends Node {
- super,
-
- ~{}Node
- # block inputs and outputs
- blockIn,
- blockOut,
-
- ~{}tnslc.parse.Token
- # block qualifiers
- blockQs
-}
-
-# Node methods
-/; method Node
-
- /; operator delete
- ;delete this.data, this.sub
- ;/
-
- /; push_sub (Node node) [uint]
- ;uint len = this.sub.length
- ;alloc this.sub, len + 1
- ;this.sub{len} = node
- ;return len + 1
- ;/
-;/
-
-# Extended block node methods
-/; method BlockNode
-
- /; operator delete
- ;super()
- ;delete this.blockQs, this.blockIn, this.blockOut
- ;/
-
- /; push_blockQ (tnslc.parse.Token token) [uint]
- ;uint len = this.blockQs.length
- ;alloc this.blockQs, len + 1
- ;this.blockQs{len} = token
- ;return len + 1
- ;/
-
- /; push_blockIn (Node node) [uint]
- ;uint len = this.blockIn.length
- ;alloc this.blockIn, len + 1
- ;this.blockIn{len} = node
- ;return len + 1
- ;/
-
- /; push_blockOut (Node node) [uint]
- ;uint len = this.blockOut.length
- ;alloc this.blockOut, len + 1
- ;this.blockOut{len} = node
- ;return len + 1
- ;/
-;/ \ No newline at end of file