# HG changeset patch # User Mike Pavone # Date 1245902209 14400 # Node ID 8b2b3f4a2a588d990702a1d3beba1fa0b6a861d3 # Parent 0534bb8ee7ad0ab7eaf425ef4100cb6d92f6e30c Some fixes to parser_old.rhope diff -r 0534bb8ee7ad -r 8b2b3f4a2a58 extendlib.rhope --- 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 + } +} + diff -r 0534bb8ee7ad -r 8b2b3f4a2a58 parser_old.rhope --- 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] } } } } } }