anchor.diff:      | None -> None
   
   type DelimType =
  +    | Open
       | SCap of string
       | RCap of string
   
  -type CaptureParams = 
  +//type ExpressionParams =
  +//    {   
  +//        Begin: string option
  +//        Delims: DelimType list
  +//        End: string option
  +//        Func: ExprTypes list -> ExprTypes
  +//    }
  +
  +type SubexpressionType = 
       {
  -        Begin: string
  -        Delims: DelimType list
  -        End: string        
  +        Pattern: DelimType list
           Func: ExprTypes list -> ExprTypes
       }
  -
  -type ExpressionParams =
  -    {
  -        Delims: DelimType list
  -        Func: ExprTypes list -> ExprTypes
  -    }
  -
  +    
   open System.Numerics
   
   let whitespace = [| " "; "\r"; "\n"; "\t"; |]
  
positive.code:         if index > 0 then Some (tokenText, remainder) 
          else None
  
  let generateBind = 
      function 
      | h :: SubExpression([Unknown(name)]) :: [] -> Binding (name, h) 
      | list -> failwith (sprintf "Incorrect binding syntax: %A" list)
  
  let generateLambda = 
      function 
      | h :: SubExpression(names) :: SubExpression([]) :: [] ->
          let prms = names |> List.map (function | Unknown n -> n | other -> failwith (sprintf "Unexpected construct in lambda argument list: %A" other))
          Lambda (prms, List.empty, h) 
      | list -> failwith (sprintf "Incorrect lambda binding syntax: %A" list)
  
  let generateIfThenElse =
      function
      | SubExpression(elseexpr) :: SubExpression(thenexpr) :: SubExpression(ifexpr) :: SubExpression([]) :: [] -> IfThenElse (ifexpr, thenexpr, elseexpr)
      | list -> failwith (sprintf "Incorrect if-then-else syntax: %A" list)
  
  let generateNumIterator = 
  
negative.code:         | FreeToken ["."; " "; "("; ")"; ","; "."; "]"; "["; "\r"; "\n"; "\t"] (token, rem) ->
              parseProgramInner rem ((Unknown token) :: result) currentCaptures
          | str -> parseProgramInner (str.Subwindow(1)) result currentCaptures
      let _, res, _ = parseProgramInner (StringWindow(startText, 0)) [] [] in res |> List.rev
  