diff options
Diffstat (limited to 'tnslc/ast')
| -rw-r--r-- | tnslc/ast/ast.tnsl | 4 | ||||
| -rw-r--r-- | tnslc/ast/node.tnsl | 61 | 
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  |