anchor.diff:    setLength(lineNums, 0);
   end;
   
  +function TParser.checkpad(charno: cardinal; inNode: PGmrNode): memostatus;
  +var
  +  i, o: cardinal;
  +begin;
  +  result := unknown;
  +
  +  if length(memopad) > 0 then
  +    for i := 0 to length(memopad)-1 do
  +    begin
  +      if memopad[i].charno = charno then
  +      begin
  +        with memopad[i] do
  +        begin
  +          if length(nodes) > 0 then
  +            for o := 0 to length(nodes)-1 do
  +            begin
  +              if nodes[o].inNode = inNode then
  +              begin
  +                result := nodes[o].status;
  +                exit;
  +              end;
  +            end;
  +        end;
  +      end;
  +    end
  +end;
  +
  +procedure TParser.addmemo(charno: cardinal; inNode: PGmrNode; status: memostatus);
  +var
  +  i, o: cardinal;
  +begin;
  +  if length(memopad) > 0 then
  +    for i := 0 to length(memopad)-1 do
  +    begin
  +      if memopad[i].charno = charno then
  +      begin
  +        with memopad[i] do
  +        begin
  +          if length(nodes) > 0 then
  +            for o := 0 to length(nodes)-1 do
  +            begin
  +              if nodes[o].inNode = inNode then
  +              begin
  +                nodes[o].status := status;
  +                exit;
  +              end;
  +            end;
  +
  +          // No matching memopad
  +          o := length(nodes);
  +          setlength(nodes, o+1);
  +          nodes[o].inNode := inNode;
  +          nodes[o].status := status;
  +          exit;
  +        end;
  +      end;
  +    end;
  +
  +  // Nothing found
  +  i := length(memopad);
  +  setlength(memopad, i+1);
  +  memopad[i].charno := charno;
  +  with memopad[i] do
  +  begin
  +    o := length(nodes);
  +    setlength(nodes, o+1);
  +    nodes[o].inNode := inNode;
  +    nodes[o].status := status;
  +    exit;
  +  end;
  +
  +end;
  +
   procedure TParser.parse(inF: TFile; inG: TGmr);
   var s: TString;
     i: word; Node: PParseNode;
  
positive.code:     function match(regex: TRegExp; var offset: cardinal): boolean;
    end;
  
    TParser = class
      rootNode: PParseNode;
      err: TError;
      lines: cardinal;
      alphanum, numbers, hexs, bins, octs: set of char;
      procedure parse(inF: TFile; inG: TGmr);
      function parseDecent(inS: TString; inG: TGmr; inNode: PGmrNode; out child: PParseNode): word;
    end;
  
negative.code:   child.point := inNode;
    //dumbAtom := innode.RHS;
    o := 1;
    dumbAtom := innode.RHS[0];
    if (dumbAtom.typed = nonTerminal) AND (dumbAtom.data = inNode.name) then
      raise EDraakNoCompile.Create('Infinate recursion on '+inNode.name);
  