% %(Tree look-mode) % stack: look-pos look-data look-mode monad-type % |string % "xxxx" med beige with double quote in icon %%% ` ´ slanted single quotes (accent marks) x91,x92 %%% slanted double quotes x93,x94 second < |Tree empty "String" *gleantre |Resolve *gleanstr > pop |comment % %xxxxxxx dark grey %%% % comment to end of line %%% // comment to end of line %%% /* comment till */ %%% /% comment till %/ second < |Tree %%% empty "Comment" *gleantre > pop |oper % ^ prefix & concatenate ^ on left of icon & on right on dark yellow "pre/cat " log() third "|" slice !suffix < |OpPre second < |Tree empty "OpPre" *gleantre > pop %%% ^ prefix variable named on stack dark yellow on lower |OpPreVarStk second < |Tree empty "OpPreVarStk" *gleantre > pop %%% ^_xxxx prefix variable brown |OpPreVar second < |Tree _suffix "OpPreVar" *gleantre > pop %%% ^" prefix string beige %%% ^' prefix string beige |OpPreString second < |Tree _suffix "OpPreString" *gleantre > pop %%% ^n prefix copy of nth stack item ^# on dark yellow |OpPreCopy second < |Tree _suffix "OpPreCopy" *gleantre > pop %%% ^n) prefix and consume nth stack item ^#) on dark yellow |OpPreUse second < |Tree _suffix -1 right "OpPreUse" *gleantre > pop |OpCat second < |Tree empty "OpCat" *gleantre > pop %%% & concatenate variable named on stack dark yellow on lower |OpCatVarStk second < |Tree empty "OpCatVarStk" *gleantre > pop %%% &_xxxx concatenate variable brown |OpCatVar second < |Tree _suffix "OpCatVar" *gleantre > pop %%% &" concatenate string beige |OpCatString second < |Tree _suffix "OpCatString" *gleantre > pop %%% &n concatenate copy of nth stack item & on dark yellow |OpCatCopy second < |Tree _suffix "OpCatCopy" *gleantre > pop %%% &n) concatenate and consume nth stack item &) on dark yellow |OpCatUse second < |Tree _suffix -1 right "OpCatUse" *gleantre > pop > not { second < |Tree third "Error" *gleantre > pop } if |call % *xxxxx med magenta third ^"*" < %%% * call exec named on stack |* second < |Tree empty "CallStk" *gleantre > pop %%% *= recurse current exec = entire icon |*= second < |Tree empty "CallSame" *gleantre > pop %%% *+ next execute + entire icon |*+ second < |Tree empty "CallNext" *gleantre > pop %%% *(= execute current again downstream = center of icon ( on right of icon medium green |*(= second < |Tree empty "CallSameDown" *gleantre > pop %%% *(+ next execute downstream + center of icon ( on right of icon medium green |*(+ second < |Tree empty "CallNextDown" *gleantre > pop > not { %%% *xxxx( execute downstream x center of icon ( on right of icon medium green third 1 right "(" eq$ { second < |Tree third -1 right "CallExecDown" *gleantre > pop } { %%% *xxxx execute x entire icon second < |Tree third "CallExec" *gleantre > pop } ifelse } if |increment % +[xxxxx] + on med orange *gleanopu "incr " log() < %%% + increment top stack item dark yellow lower |+ second < |Tree empty "IncrStk" *gleantre > pop %%% +nnnn intrinsic part of numeric (see number) %%% +xxxx increment variable result on stack dark yellow lower, brown |+x second < |Tree third "IncrVarStk" *gleantre > pop %%% +:xxxx increment variable (no result on stack) brown |+:x second < |Tree third -1 left "IncrVar" *gleantre > pop > not { second < |Tree third "Error" *gleantre > pop } if |csv % ,xxxxx |decrement % -[xxxxx] - on med orange *gleanopu "decr " log() < %%% - decrement top stack item dark yellow lower |- second < |Tree empty "DecrStk" *gleantre > pop %%% -nnnn intrinsic part of numeric (see number) %%% -xxxx decrement variable result on stack dark yellow lower, brown |-x second < |Tree third "DecrVarStk" *gleantre > pop %%% -:xxxx decrement variable (no result on stack) brown |-:x second < |Tree third -1 left "DecrVar" *gleantre > pop > not { second < |Tree third "Error" *gleantre > pop } if |period % .xxxxxx %%% .nnn intrinsic part of numeric (see number) %%% ._xxx get current mep's variable _ on left dark yellow, med green upper %%% .!xxx set current mep's variable ! on left on dark yellow, med green upper |name % /xxxx ---- converting to regex |number % nnnnn med orange with # second < |Tree third "Number" *gleantre > pop |lookup % < open or > close ~ noexit med purple on icon left red/green on right second < |Tree third "open" eq$ { "<" "Lookup" *gleantre _newnode !\ _\ !lookup } { _lookup !\ Tree._Parent !\ ">" "Lookup" *gleantre } ifelse |Resolve % % determine special handling for lookup % "Data" \_ "close" eq$ { *gleanrsx "Lookup" *gleanimg } if > pop |break % ? ? bright red-purple entire icon second < |Tree empty "Break" *gleantre > pop |mep % @[xxxxx] upper part of icon green %%% @ set current mep from stack @, ! with dark yellow on left %%% @xxxx set current mep @ second < |Tree empty "Mep" *gleantre > pop |pipe % [ interpret verb suffix through current 'pipe' setting %%% [] dark turquoise second < |Tree third "Pipe" *gleantre > pop |Tree % \[xxxx] cyan %%% \_ get named value of current node _ third 2 1 mid "_" eq$ { second < |Tree empty "GetValue" *gleantre *gleaname > pop } { %%% \! set named value of current node !, dark yellow on lower second < |Tree empty "SetValue" *gleantre *gleaname > pop } ifelse |setvar % ![xxxx] black ! on dark yellow on icon left *gleanopq ^"!" "setvar " log() < %%% ! set variable named on stack dark yellow on lower |! second < |Tree empty "SetVarStk" *gleantre > pop %%% !\ set current node on cyan with \ |!\ second < |Tree empty "SetNode" *gleantre > pop %%% !\\ set current node name on cyan with \\ |!\\ second < |Tree empty "SetNodeName" *gleantre > pop %%% !xxxx set variable on brown |!x second < |Tree empty "SetVar" *gleantre *gleaname > pop %%% !@ set current mep name on green with @ |!@ second < |Tree empty "SetMep" *gleantre > pop > not { second < |Tree third "Error" *gleantre > pop } if |getvar % _[xxxx] black _ on dark yellow on icon left *gleanopq ^"_" "getvar " log() < %%% _ get variable named on stack dark yellow on lower |_ second < |Tree empty "GetVarStk" *gleantre > pop %%% _\ get current node on cyan with \ |_\ second < |Tree empty "GetNode" *gleantre > pop %%% _\\ get current node name on cyan with \\ |_\\ second < |Tree empty "GetNodeName" *gleantre > pop %%% _xxxx get variable on brown |_x second < |Tree empty "GetVar" *gleantre *gleaname > pop %%% _@ get current mep name on green with @ |_@ second < |Tree empty "GetMep" *gleantre > pop > not { second < |Tree third "Error" *gleantre > pop } if |proc % { open } close dark green second < |Tree third "open" eq$ { "{" "Proc" *gleantre _newnode !\ } { Tree._Parent !\ "}" "Proc" *gleantre } ifelse > pop |label % |[xxxx] dark purple %%% | a label with no text invokes 'label exec mode' for dynamic label second < |Tree { _\ 0 le ? "Data" \_ "open" eq$ "Type" \_ "lookup" eq$ and ? Tree._Parent !\ _\ !lookup } loop empty "Label" *gleantre *gleaname _newnode !\ > pop %%% med green centered on dark purple |Verb % xxxxx[.xxxx] %%% xxxx execute 'basis' script black on white %%% xxxx.xxxx execute 'classed' script dark blue on white second < |Tree third "." fifth Str.Found { "ExecClassed" } { "ExecBasis" } ifelse *gleantre |Resolve % % determine special handling for verbs % "Data" \_ "resolve " log() < % % if and ifelse backtrack to the last one or two proc bodies % |if *gleanrsv _\ Tree.Prev( { pop "If" *gleanimg } { _\ exch !\ "Type" \_ "Verb" eq$ "Data" \_ "not" eq$ and { % % eliminate the if and change the not to an ifnot % _\ exch !\ "ifnot" dup "Type" \! dup "Data" \! !\\ "IfNot" *gleanimg dup Mep.Remove - !\ } { !\ "If" *gleanimg } ifelse } ifelse |ifelse *gleanrsw "IfThen" *gleanimg % % loop and for backtrack to the last proc body % |loop *gleanrsv "Loop" *gleanimg |for *gleanrsv "For" *gleanimg > pop > pop