diff options
Diffstat (limited to 'compiler/utils/fixmsg.pp')
-rw-r--r-- | compiler/utils/fixmsg.pp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/compiler/utils/fixmsg.pp b/compiler/utils/fixmsg.pp new file mode 100644 index 0000000000..6bd1cfbe2c --- /dev/null +++ b/compiler/utils/fixmsg.pp @@ -0,0 +1,66 @@ +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. |