📄 cifafenxi.~pas
字号:
unit CiFaFenXi;
interface
uses
SysUtils;
procedure CreateWordList(var now_order:integer);
implementation
uses
Defination;
procedure getsym;
label iiii;
var
k:integer;
i:integer;
begin
iiii:
if ch='\' then
begin
while ch<>chr(13) do
begin
if ch<>chr(26) then read(fin,ch)
else
begin
ch_endflag:=chr(26);
exit;
end;
end;
end;
while ((ch=chr(13))or(ch=chr(9))or(ch=chr(10))or(ch=' '))do //滤去space,enten
begin //Tab
if ch=chr(13) then inc(line_index); //行号加
read(fin,ch);
end;
if ch='{' then
begin
while ch<>'}' do
begin
read(fin,ch);
if ch=chr(13) then
inc(line_index);
end;
read(fin,ch);
goto iiii;
end;
if ch='\' then goto iiii;
if (ch in ['a'..'z']) or (ch in ['A'..'Z']) then
begin
k:=0;
repeat
if k<AL then
begin
inc(k);
akk[k]:=ch;
end;
read (fin,ch);
until not(ch in['a'..'z','0'..'9']);
if k>=kk then kk:=k
else
repeat
akk[kk]:=' ';
dec(kk)
until kk=k;
id:=akk;
word_index:=WORDLISTLENTH;
keyword[0]:=id;
while(id<>keyword[word_index]) do
dec(word_index);
if(word_index=0) then
begin
word_index:=888;
end;
end
else if ch in['0'..'9'] then
begin
num:=0;
repeat
num:=10*num+(ord(ch)-ord('0'));
read(fin,ch);
until not (ch in ['0'..'9']);
word_index:=999;
for i:=1 to 5 do id[i]:='$';
for i:=6 to 10 do id[i]:=' ';
end
else if ch=':' then
begin
read(fin,ch);
if ch='=' then
begin
id[1]:=':';
id[2]:='=';
for k:=3 to 10 do id[k]:=' ';
word_index:=17;
read(fin,ch);
end
else
begin
id[1]:=':';
for k:=2 to 10 do id[k]:=' ';
word_index:=31;
end;
end
else if ch='<' then
begin
read(fin,ch);
if ch='=' then
begin
id[1]:='<';
id[2]:='=';
for k:=3 to 10 do id[k]:=' ';
word_index:=19;
read(fin,ch);
end
else
begin
id[1]:='<';
for k:=2 to 10 do id[k]:=' ';
word_index:=18;
end;
end
else if ch='>' then
begin
read(fin,ch);
if ch='=' then
begin
id[1]:='>';
id[2]:='=';
for k:=3 to 10 do id[k]:=' ';
word_index:=22;
read(fin,ch);
end
else
begin
id[1]:='>';
for k:=2 to 10 do id[k]:=' ';
word_index:=21;
end;
end
else
begin
akk[1]:=ch;
for k:=2 to 10 do akk[k]:=' ';
id:=akk;
word_index:=29;
keyword[0]:=id;
while(id<>keyword[word_index]) do
dec(word_index);
read(fin,ch);
end;
end;
procedure CreateWordList(var now_order:integer);
var
order:integer;
var_no:integer;
temp_name:alfa;
temp_no:integer;
temp_value:integer;
begin
chdir('C:\');
assignfile(fin,'temporary_source_word.txt');
reset(fin);
var_no:=0;
getsym;
while ch_endflag<>chr(26) do //ch_endflag为ch的前一个字符,为结束符结束
begin
temp_value:=0;
temp_name:=id;
order:=now_order;
temp_no:=0;
if word_index=888 then
begin
wordlist[0].name:=id;
wordlist[0].index:=888;
while(id<>wordlist[order].name) do dec(order);
if (order=0) then
begin
temp_no:=var_no+1;
inc(var_no);
end
else
begin
temp_no:=wordlist[order].no;
end;
end;
if word_index=999 then
temp_value:=num;
inc(now_order);
wordlist[now_order].name:=temp_name;
wordlist[now_order].index:=word_index;
wordlist[now_order].no:=temp_no;
wordlist[now_order].value:=temp_value;
wordlist[now_order].info:=line_index;
if wordlist[now_order].index<(WORDLISTLENTH+10) then
begin
wordlist[now_order].symb_string:=ssym_string[wordlist[now_order].index];
wordlist[now_order].symb:=ssym[wordlist[now_order].index];
end;
if wordlist[now_order].index=888 then
begin
wordlist[now_order].symb_string:='ident';
wordlist[now_order].symb:=ident;
end;
if wordlist[now_order].index=999 then
begin
wordlist[now_order].symb_string:='number';
wordlist[now_order].symb:=number;
end;
ch_endflag:=ch;
getsym;
end;
//////////////////////////////////////////////////////////////////////
if wordlist[now_order].name[1]=chr(26) then //滤去最后的enter符
dec(now_order);
closefile(fin);
deletefile('temporary_source_word.txt');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -