📄 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]:='常数说明中的'' = ''写成'' := ''。';
errlist[2]:='常数说明中的'' = ''后应该是数字。';
errlist[3]:='常数说明中的标识符后应该是'' = ''。';
errlist[4]:='const,var,procedure后应该为标识符。';
errlist[5]:='漏掉了'' , ''或'' ;''。';
errlist[6]:='过程说明后的符号不正确(应该是语句开始符,或过程定义符)。';
errlist[7]:=''' ; ''后应该是过程说明。';
errlist[8]:='程序体内语句部分的后跟符不正确。';
errlist[9]:='程序结尾丢了''.''。';
errlist[10]:='语句之间漏了'';''。';
errlist[11]:='标识符未说明。';
errlist[12]:='赋值语句中,赋值号左部标识符属性应该是变量。';
errlist[13]:='赋值语句左部标识符号应该是赋值号'':=''。';
errlist[14]:='call后应该为标识符。';
errlist[15]:='call后标识符应该为过程名。';
errlist[16]:='条件语句中丢了''then''。';
errlist[17]:='前面丢了''end''或'';''。';
errlist[18]:='while型循环语句中丢了''do''。';
errlist[19]:='语句后的符号不正确。';
errlist[20]:='应该为关系运算符。';
errlist[21]:='表达式内标识符属性不能是过程。';
errlist[22]:='表达式中漏掉'')''。';
errlist[23]:='因子后的非法符合。';
errlist[24]:='表达式的开始符不能是此符号。';
errlist[25]:='标识符定义重复';
errlist[26]:='过程说明中,标识符号漏掉了'';''。';
errlist[27]:=''' , ''后应该是标识符。';
errlist[31]:='数越界。';
errlist[32]:='read语句括号中的标识符不是变量。';
errlist[33]:='程序没有写完';
ch:=' ';
ch_endflag:=' ';
kk:=al;
line_index:=1;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -