?? defination.~pas
字號:
unit Defination;
interface
uses
SysUtils;
const
AL=10;
WORDLISTLENTH=31;
LONG=100000;
type
symbol=(none,ident,nul,number,plus,minus,times,slash,
oddsym,eql,neq,lss,leq,gtr,geq,lparen,rparen,
comma,semicolon,period,becomes,beginsym,endsym,
ifsym,thensym,whilesym,writesym,readsym,dosym,
callsym,constsym,varsym,procsym,prograsym);
alfa=array[1..AL]of char;
symset=set of symbol;
var
ch:char;
id:alfa;
akk:alfa;
num:integer;
kk:integer;
ssym_string:array[0..WORDLISTLENTH+2]of string;//symbol;
ssym:array[0..WORDLISTLENTH+2]of symbol;
fin,fout:text;
err:integer;
wordlist:array[0..LONG] of record
name:alfa;
symb_string:string;
symb:symbol;
index:integer;
no:integer;
value:integer;
info:integer;
end;
keyword:array[0..WORDLISTLENTH] of alfa;
errlist:array[0..WORDLISTLENTH+10] of string;
declbegsys,statbegsys,facbegsys:symset;
word_index:integer;
line_index:integer;
ch_endflag:char;
wordlist_index:integer; //詞法分析鏈最后 , 全程
////////////////////////////////////////////////////////////////////////////////
procedure Initialize;
implementation
procedure Initialize;
begin
keyword[1]:='begin ';
keyword[2]:='end ';
keyword[3]:='if ';
keyword[4]:='then ';
keyword[5]:='var ';
keyword[6]:='const ';
keyword[7]:='procedure ';
keyword[8]:='call ';
keyword[9]:='write ';
keyword[10]:='read ';
keyword[11]:='while ';
keyword[12]:='do ';
keyword[13]:='+ ';
keyword[14]:='- ';
keyword[15]:='* ';
keyword[16]:='/ ';
keyword[17]:=':= ';
keyword[18]:='< ';
keyword[19]:='<= ';
keyword[20]:='= ';
keyword[21]:='> ';
keyword[22]:='>= ';
keyword[23]:='. ';
keyword[24]:='( ';
keyword[25]:=') ';
keyword[26]:='; ';
keyword[27]:=', ';
keyword[28]:='# ';
keyword[29]:='odd ';
keyword[30]:='program ';
keyword[31]:=': ';
ssym[1]:=beginsym;
ssym[2]:=endsym;
ssym[3]:=ifsym;
ssym[4]:=thensym;
ssym[5]:=varsym;
ssym[6]:=constsym;
ssym[7]:=procsym;
ssym[8]:=callsym;
ssym[9]:=writesym;
ssym[10]:=readsym;
ssym[11]:=whilesym;
ssym[12]:=dosym;
ssym[13]:=plus;
ssym[14]:=minus;
ssym[15]:=times;
ssym[16]:=slash;
ssym[17]:=becomes;
ssym[18]:=lss;
ssym[19]:=leq;
ssym[20]:=eql;
ssym[21]:=gtr;
ssym[22]:=geq;
ssym[23]:=period;
ssym[24]:=lparen;
ssym[25]:=rparen;
ssym[26]:=semicolon;
ssym[27]:=comma;
ssym[28]:=neq;
ssym[29]:=oddsym;
ssym[30]:=prograsym;
ssym[31]:=nul;
ssym_string[1]:='beginsym';
ssym_string[2]:='endsym';
ssym_string[3]:='ifsym';
ssym_string[4]:='thensym';
ssym_string[5]:='varsym';
ssym_string[6]:='constsym';
ssym_string[7]:='procsym';
ssym_string[8]:='callsym';
ssym_string[9]:='writesym';
ssym_string[10]:='readsym';
ssym_string[11]:='whilesym';
ssym_string[12]:='dosym';
ssym_string[13]:='plus';
ssym_string[14]:='minus';
ssym_string[15]:='times';
ssym_string[16]:='slash';
ssym_string[17]:='becomes';
ssym_string[18]:='lss';
ssym_string[19]:='leq';
ssym_string[20]:='eql';
ssym_string[21]:='gtr';
ssym_string[22]:='geq';
ssym_string[23]:='period';
ssym_string[24]:='lparen';
ssym_string[25]:='rparen';
ssym_string[26]:='semicolon';
ssym_string[27]:='comma';
ssym_string[28]:='neq';
ssym_string[29]:='oddsym';
ssym_string[30]:='prograsym';
ssym_string[31]:='nul';
errlist[1]:='常數(shù)說明中的'' = ''寫成'' := ''。';
errlist[2]:='常數(shù)說明中的'' = ''后應(yīng)該是數(shù)字。';
errlist[3]:='常數(shù)說明中的標(biāo)識符后應(yīng)該是'' = ''。';
errlist[4]:='const,var,procedure后應(yīng)該為標(biāo)識符。';
errlist[5]:='漏掉了'' , ''或'' ;''。';
errlist[6]:='過程說明后的符號不正確(應(yīng)該是語句開始符,或過程定義符)。';
errlist[7]:=''' ; ''后應(yīng)該是過程說明。';
errlist[8]:='程序體內(nèi)語句部分的后跟符不正確。';
errlist[9]:='程序結(jié)尾丟了''.''。';
errlist[10]:='語句之間漏了'';''。';
errlist[11]:='標(biāo)識符未說明。';
errlist[12]:='賦值語句中,賦值號左部標(biāo)識符屬性應(yīng)該是變量。';
errlist[13]:='賦值語句左部標(biāo)識符號應(yīng)該是賦值號'':=''。';
errlist[14]:='call后應(yīng)該為標(biāo)識符。';
errlist[15]:='call后標(biāo)識符應(yīng)該為過程名。';
errlist[16]:='條件語句中丟了''then''。';
errlist[17]:='前面丟了''end''或'';''。';
errlist[18]:='while型循環(huán)語句中丟了''do''。';
errlist[19]:='語句后的符號不正確。';
errlist[20]:='應(yīng)該為關(guān)系運(yùn)算符。';
errlist[21]:='表達(dá)式內(nèi)標(biāo)識符屬性不能是過程。';
errlist[22]:='表達(dá)式中漏掉'')''。';
errlist[23]:='因子后的非法符合。';
errlist[24]:='表達(dá)式的開始符不能是此符號。';
errlist[25]:='標(biāo)識符定義重復(fù)';
errlist[26]:='過程說明中,標(biāo)識符號漏掉了'';''。';
errlist[27]:=''' , ''后應(yīng)該是標(biāo)識符。';
errlist[31]:='數(shù)越界。';
errlist[32]:='read語句括號中的標(biāo)識符不是變量。';
errlist[33]:='程序沒有寫完';
ch:=' ';
ch_endflag:=' ';
kk:=al;
line_index:=1;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -