changeset 24:8b2b3f4a2a58

Some fixes to parser_old.rhope
author Mike Pavone <pavone@retrodev.com>
date Wed, 24 Jun 2009 23:56:49 -0400
parents 0534bb8ee7ad
children 9749109b3198 20d40cb8abf3
files extendlib.rhope parser_old.rhope
diffstat 2 files changed, 77 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/extendlib.rhope	Wed Jun 24 20:05:21 2009 +0000
+++ b/extendlib.rhope	Wed Jun 24 23:56:49 2009 -0400
@@ -642,5 +642,16 @@
 	}
 }
 
+Tail[list,start:out]
+{
+	newlist <- New Like[list]
+	[list]Index[start]
+	{
+		out <- _Fold[list, start, newlist, "Append"]
+	}{
+		out <- newlist
+	}
+}
 
 
+
--- a/parser_old.rhope	Wed Jun 24 20:05:21 2009 +0000
+++ b/parser_old.rhope	Wed Jun 24 23:56:49 2009 -0400
@@ -158,14 +158,18 @@
 	out <- [[[[Build["Worker Node"]]Name <<[name]]Params <<[params]]Assignments <<[New@List[]]]Blocks <<[New@List[]]
 }
 
-Add List Helper[list,worker,program,key,parse worker,refs:out,worker,refs]
+Add List Helper[inlist,worker,program,key,parse worker,refs:out,worker,refs]
 {
-	,nextworker,nextrefs <- [[list]Index[key]]Add to Worker[worker, program, parse worker, refs]
-	{ nextlist <- [list]Set[key, ~] }
-	[list]Next[key]
+	Print[Type Of[inlist]]
+	Print["Add List Helper"]
+	,nextworker,nextrefs <- [[inlist]Index[key]]Add to Worker[worker, program, parse worker, refs]
+	{ nextlist <- [inlist]Set[key, ~] }
+	[inlist]Next[key]
 	{
+		Print["Next!"]
 		list,worker,refs <- Add List Helper[nextlist, nextworker, program, ~, parse worker, nextrefs]
 	}{
+		Print["Done!"]
 		list <- Val[nextlist]
 		worker <- Val[nextworker]
 		refs <- Val[nextrefs]
@@ -174,14 +178,19 @@
 
 Add List to Worker[list,worker,program,parse worker,refs:list,worker,refs]
 {
+	Print["Add List to Worker"]
+	Print[Type Of[list]]
+	{
 	[list]First
 	{
 		list,worker,refs <- Add List Helper[list, worker, program, ~, parse worker, refs]
+		{ Print["Done!!"] }
 	}{
 		list <- list
 		worker <- worker
 		refs <- refs
 	}
+	}
 }
 
 _Add Blocks to Worker[blocks,worker,program,parse worker,key,refs:blocks,worker,refs]
@@ -190,7 +199,7 @@
 	next blocks <- [blocks]Set[key, block]
 	[blocks]Next[key]
 	{
-		blocks,worker,refs <- _Add Blocks to Worker[next blocks, next worker, program, parseworker, ~, nextrefs]
+		blocks,worker,refs <- _Add Blocks to Worker[next blocks, next worker, program, parse worker, ~, nextrefs]
 	}{
 		blocks <- Val[next blocks]
 		worker <- Val[next worker]
@@ -255,7 +264,7 @@
 	out <- Fold[[[["_Add Block Wire"]Set Input[3, blocks]]Set Input[4, parse worker]]Set Input[5, assignments], worker, block nodes]
 }
 
-Assignments Add Wires[worker,assignement,output num,parse worker,start index:worker]
+Assignments Add Wires[worker,assignment,output num,parse worker,start index:worker]
 {
 	[[parse worker]Outputs >>]Find[assignment]
 	{
@@ -265,7 +274,7 @@
 		}
 	}{
 		//Ugly hack alert!
-		If[[asignment]Contains["::"]]
+		If[[assignment]Contains["::"]]
 		{
 			parts <- [assignment]Split["::"]
 			,global index <- [worker]Add Global Set[[parts]Index[0], [parts]Index[1]]
@@ -283,7 +292,7 @@
 	out <- Yes
 }
 
-_Has Block Params[list,key:out]
+_Has Block Params[param list,key:out]
 {
 	param <- [param list]Index[key]
 	out <- [param]Has Block {}
@@ -317,7 +326,7 @@
 {
 	Fold[[["Assignments Add Wires"]Set Input[3, parse worker]]Set Input[4, [node]Index >>], worker, [node]Assignments >>]
 	{ Fold[[[[["Add Block Wire"]Set Input[3, [node]Index >>]]Set Input[4, blocks]]Set Input[5, parse worker]]Set Input[6, assignments], ~, [node]Blocks >>]
-	{ params worker <- Fold[[[[["Add Param Wire"]Set Input[3, [node]Index >>]]Set Input[4, blocks]]Set Input[5, parse worker]]Set Input[6, assignments], ~, [node]Params >>] :{|
+	{ params worker <- Fold[[[[["Add Param Wire"]Set Input[3, [node]Index >>]]Set Input[4, blocks]]Set Input[5, parse worker]]Set Input[6, assignments], ~, [node]Params >>] }}
 	If[Has Block Params[[node]Params >>]]
 	{
 		worker <- Val[params worker]
@@ -627,23 +636,23 @@
 
 _Get Comment DString[string,delims,line comment,begin comment,end comment,prev before:rest,before,delim,nomatch]
 {
-	after,before,delim,nomatch <- [string]Get DString[delims]
+	after,befored,used delim,nomatch <- [string]Get DString[delims]
 	{
-		If[[delim] = [line comment]]
+		If[[used delim] = [line comment]]
 		{
 			after comment <- Line Comment[after]
 		}{
-			If[[delim] = [begin comment]]
+			If[[used delim] = [begin comment]]
 			{
 				after comment <- Block Comment[after, begin comment, end comment, 1]	
 			}{
 				rest <- Val[after]
-				before <- [prev before]Append[before]
-				delim <- Val[delim]
+				before <- [prev before]Append[befored]
+				delim <- Val[used delim]
 			}
 		}
 	} {} {} {
-		before <- [prev before]Append[before]
+		before <- [prev before]Append[befored]
 	}
 	
 	after comment
@@ -685,13 +694,13 @@
 	}
 }
 
-Blueprint[string,params,tree,lines:out]
+PBlueprint[string,params,tree,lines:out]
 {
 	,whitespace name <- [string]Get Comment DString[[params]Block Begin >>, params]
 	{	
 		,no blueprint <- [whitespace name]Slice[ [[params]Blueprint >>]Length ]
 		name <- Trim[no blueprint, "\r\n\t "]
-		name lines <- 0//[Count Substring[left, "\n"]] + [Count Substring[right, "\n"]]
+		name lines <- 0
 		,body <- [~]Get Comment DString[ [params]Block End >>, params]
 		{
 			body lines <- [body]Split["\n"]
@@ -762,14 +771,14 @@
 Parse String[string,params,current:value,after]
 {
 	delims <- [[New@List[]]Append[[params]String End >>]]Append[[params]String Escape >>]
-	after, before, delim <- [string]Get Comment DString[delims, params]
+	afters, before, delim <- [string]Get Comment DString[delims, params]
 	{
 		If[[delim] = [[params]String End >>]]
 		{
 			value <- [current]Append[before]
-			after <- Val[after]
+			after <- Val[afters]
 		}{
-			char,after escape <- Parse Escape[after, params]
+			char,after escape <- Parse Escape[afters, params]
 			value,after <- Parse String[after escape, params, [[current]Append[before]]Append[char]]
 		}
 	}
@@ -884,20 +893,20 @@
 
 Parse Arguments[string,params,arglist:args,after]
 {
-	args <- Comment Left Trim[string, "\r\n\t ", params]
-	If[[args]Starts With[[params]List Delim >>]]
+	targs <- Comment Left Trim[string, "\r\n\t ", params]
+	If[[targs]Starts With[[params]List Delim >>]]
 	{
-		[args]Slice[[[params]List Delim >>]Length] {} 
+		[targs]Slice[[[params]List Delim >>]Length] {} 
 		{
 			final args <- Comment Left Trim[~, "\r\n\t ", params]
 		}
 	}{
-		If[[args]Starts With[[params]Arg End >>]]
+		If[[targs]Starts With[[params]Arg End >>]]
 		{
 			args <- arglist
-			,after <- [args]Slice[[[params]Arg End >>]Length]
+			,after <- [targs]Slice[[[params]Arg End >>]Length]
 		}{
-			final args <- Val[args]
+			final args <- Val[targs]
 		}
 	}
 	arg, after arg <- Parse Expression[final args, params]
@@ -934,15 +943,15 @@
 {
 	args, after args <- Parse Arguments[string, params, New@List[]]
 	delims <- [[[[[("\n")]Append[[params]Arg Begin >>]]Append[[params]Empty Block >>]]Append[[params]Block Begin >>]]Append[[params]Arg End >>]]Append[[params]List Delim >>]
-	after,before,delim <- [after args]Get Comment DString[delims, params]
+	aftere,before,delim <- [after args]Get Comment DString[delims, params]
 	{
 		If[[delim] = [[params]Arg Begin >>]]
 		{
-			expression, after <- Prefix[after, params, Trim[before,"\r\n\t "], args]
+			expression, after <- Prefix[aftere, params, Trim[before,"\r\n\t "], args]
 		}{
 			If[[delim] = [[params]Empty Block >>]]
 			{
-				after expression <- Val[after]
+				after expression <- Val[aftere]
 			}{
 				,after expression <- [after args]Slice[[before]Length]
 			}
@@ -1080,10 +1089,10 @@
 Null[string,params,tree,lines:out]
 {
 	trimmed <- Comment Left Trim[string, " \n\r\t", params]
-	current line <- 0//[lines] + [Count Substring[whitespace, "\n"]]
+	current line <- 0
 	If[[trimmed]Starts With[ [params]Blueprint >> ]]
 	{
-		out <- Blueprint[trimmed, params, tree, current line]
+		out <- PBlueprint[trimmed, params, tree, current line]
 	}{
 		If[[trimmed]Starts With[ [params]Import >> ]]
 		{
@@ -1094,10 +1103,10 @@
 	}
 }
 
-Add Workers[worker,name,program:out]
+Add Workers[workers,name,program:out]
 {
 	prog,worker <- [program]New Worker[name]
-	[worker]Set IO Counts[ [[[worker]Index[name]]Inputs >>]Length, [[[worker]Index[name]]Outputs >>]Length]
+	[worker]Set IO Counts[ [[[workers]Index[name]]Inputs >>]Length, [[[workers]Index[name]]Outputs >>]Length]
 	[workers]Next[name]
 	{
 		out <- Add Workers[workers, ~, prog]
@@ -1138,15 +1147,22 @@
 	after blueprint <- Fold["Add Blueprint", program, [parse tree]Blueprints >>]
 	[[parse tree]Workers >>]First
 	{
+		Print["Adding workers"]
 		prog <- Add Workers[[parse tree]Workers >>, ~, after blueprint]
+		{ Print["Add Workers done"] }
+	}{
+		Print["No workers!"]
 	}
 	Key Value Map[[parse tree]Workers >>, ["Add Contents"]Set Input[2, prog]]
-	out <- prog
+	{ Print["Done Add Contents"] }
+	out <- Val[prog]
 }
 
 Tree to Program[parse tree:out]
 {
+	Print["Tree to Program"]
 	out <- _Tree to Program[parse tree, [New@Program[]]Add Builtins]
+	{ Print["done"] }
 }
 
 Needs Imports[needs import,not imported?,name:out]
@@ -1233,17 +1249,29 @@
 				{ _REPL[params, _Tree to Program[import tree, prog], ~] }
 			}
 		}{
+			Print["Expression"]
 			trees <- Worker Body[[line]Append["}"], params, New@List[]]
+			{ Print["Parse done"] }
 			tree <- [New@Worker Node["Val", [New@List[]]Append[[trees]Index[0]]]]Assignments <<[("__out")]
+			{ Print["Constructed new tree"] }
 			this stores <- [[tree]Gather Stores[params, New@Dictionary[]]]Keys
+			{ Print["Got stores"] }
 			next stores <- Fold["_Init Used Store", stores, this stores]
 			{
-			pworker <- [[New@Parse Worker["__Eval", New@List[], ("__out"), 0]]Trees <<[[New@List[]]Append[tree]]]Uses Stores <<[this stores]
+				Print["Initialized stores"]
+				pworker <- [[New@Parse Worker["__Eval", New@List[], ("__out"), 0]]Trees <<[[New@List[]]Append[tree]]]Uses Stores <<[this stores]
+				{ Print["Constructed parse worker"] }
 			}
 			[[prog]Find Worker["__Eval"]]Clear
-			{ Add Contents[pworker, "__Eval", prog]
-			{ Pretty Print[[[[prog]Find Worker["__Eval"]]Do[New@List[]]]Index[0], ""]
-			{ _REPL[params, prog, next stores] } } }
+			{ 
+				Print["Cleared worker"]
+				Add Contents[pworker, "__Eval", prog]
+				{ 
+					Print["Added Contents"]
+					Pretty Print[[[[prog]Find Worker["__Eval"]]Do[New@List[]]]Index[0], ""]
+					{ 
+						Print["Finished executeion"]
+						_REPL[params, prog, next stores] } } }
 		}
 	}
 }