anchor.diff:    Node: PParseNode;
     partial: boolean;
     matched: boolean;
  +  done:    boolean;
     tempS: TString;
   begin
     err.newNode(inNode.name + '"' + inS.copy(0, 10) + '"');
  
positive.code:     property st: string read buff;
      property max: Cardinal read getMax;
      property char: Cardinal read start;
      constructor create(inF: TFile; startChar: cardinal; inB: string; inMax: PCardinal);
      destructor destroy; override;
      function getNew(startChar: cardinal): TString;
      function len: cardinal;
  
negative.code:     dumbAtom := innode.RHS[atomI];
  
      matched := false;
      done    := false;
  
      while done = false do
      begin
        case dumbAtom.typed of
         terminal:
          begin
            matched := inS.match(dumbAtom.re, o);
            if matched then
            begin
              err.addNode('-> '+dumbAtom.data);
              partial := true;
            end;
          end;
         Matching:
          begin
            matched := inS.match(dumbAtom.re, o);
            if matched then
            begin
              err.addNode('~> '+dumbAtom.data);
              partial := true;
              Node := new(PParseNode);
              Node.point := inNode;
              setLength(Node.data, dumbAtom.re.captureLength);
              for i := 0 to length(Node.data)-1 do
                Node.data[i] := dumbAtom.re.capture[i].captured;
              setLength(Node.children, 0);
            end;
          end;
         nonterminal:
          begin
            count := 0;
            tempNode := inG.getHashNode(dumbAtom.data);
            if length(tempNode) = 0 then
            begin
              err.err('No such Non-terminal: ' + dumbAtom.data);
              exit;
            end;
            nodeI := 0;
            while nodeI < length(tempNode) do
            begin
              tempS := inS.getNew(o);
              i := parseDecent(tempS, inG, tempNode[nodeI], Node);
              tempS.Free;
              if i > 0 then
              begin {That option was a winner}
                o := o + i;
                break;
  
                {
                if dumbAtom.star = true then
                begin
                  setLength(child^.children, length(child^.children)+1);
                  child^.children[length(child^.children)-1] := Node;
                  count := 0;
                  matched := true;
                  nodeI := 0;
                  //tempNode := inG.getHashNode(dumbAtom.data);
                  continue;
                end;
                }
              end;
              nodeI := nodeI+1;
            end;
          end;
        end;
  
        done := true;
        if matched = true then with child^ do
        begin
          setLength(children, length(children)+1);
          children[length(children)-1] := Node;
          Node := nil;
          child.line := inS.lineFind(inS.char+o);
        end;
  
        if dumbAtom.optional = true then
          done := true;
        if dumbAtom.star = true then
        begin
          if matched = true then
            done := false
          else
            done := true;
        end;
      end;
      if (dumbAtom.typed <> terminal) {AND (Node <> nil)} then with child^ do
      begin
      end;
      //dumbAtom := dumbAtom.next;
    end;
  