mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 16:59:45 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
type
 | 
						|
  trtabrec=record
 | 
						|
    name : string[12];
 | 
						|
    idx  : longint;
 | 
						|
  end;
 | 
						|
 | 
						|
const
 | 
						|
  trtab : array[0..10] of trtabrec=(
 | 
						|
    (name:'general';idx:1000),
 | 
						|
    (name:'scan';idx:2000),
 | 
						|
    (name:'parser';idx:3000),
 | 
						|
    (name:'type';idx:4000),
 | 
						|
    (name:'sym';idx:5000),
 | 
						|
    (name:'cg';idx:6000),
 | 
						|
    (name:'asmr';idx:7000),
 | 
						|
    (name:'asmw';idx:8000),
 | 
						|
    (name:'exec';idx:9000),
 | 
						|
    (name:'unit';idx:10000),
 | 
						|
    (name:'option';idx:11000)
 | 
						|
  );
 | 
						|
 | 
						|
var
 | 
						|
  t,f : text;
 | 
						|
  s,hs : string;
 | 
						|
  i,j,k : longint;
 | 
						|
begin
 | 
						|
  assign(t,paramstr(1));
 | 
						|
  reset(t);
 | 
						|
  assign(f,'New.msg');
 | 
						|
  rewrite(f);
 | 
						|
  while not eof(t) do
 | 
						|
   begin
 | 
						|
     readln(t,s);
 | 
						|
     if (s<>'') and not(s[1] in ['#','%']) then
 | 
						|
      begin
 | 
						|
        for i:=0 to 10 do
 | 
						|
         if Copy(s,1,length(trtab[i].name))=trtab[i].name then
 | 
						|
          begin
 | 
						|
            j:=pos('=',s);
 | 
						|
            if j>0 then
 | 
						|
             begin
 | 
						|
               inc(j);
 | 
						|
               if s[j] in ['0'..'9'] then
 | 
						|
                begin
 | 
						|
                  k:=j;
 | 
						|
                  while (s[k] in ['0'..'9']) do
 | 
						|
                   inc(k);
 | 
						|
                  if s[k]='_' then
 | 
						|
                   inc(k);
 | 
						|
                  delete(s,j,k-j);
 | 
						|
                end;
 | 
						|
               str(trtab[i].idx,hs);
 | 
						|
               while length(hs)<5 do
 | 
						|
                hs:='0'+hs;
 | 
						|
               hs:=hs+'_';
 | 
						|
               inc(trtab[i].idx);
 | 
						|
               insert(hs,s,j);
 | 
						|
             end;
 | 
						|
            break;
 | 
						|
          end;
 | 
						|
      end;
 | 
						|
     writeln(f,s);
 | 
						|
   end;
 | 
						|
  close(f);
 | 
						|
  close(t);
 | 
						|
end.
 |