📄 c
字号:
1、读入用PL/0语言编写的源程序,正确的进行词法分析,并输出二元式序列。
2、若源程序有词法错误,能够给出出错的准确位置。
3、词法代号如下
(+,+);
(-,-);
(*,*);
(/,/);
((,();
(),));
(,,,);
(;,;);
(.,.);
(#,#);
(=,=);
(>,>);
(<,<);
(:=,a);
(>=,b);
(<=,c);
(数字,d);
(标识符,e);
关键字代号:
(begin,f);
(call,g);
(const,h);
(do,i);
(end,j);
(if,k);
(odd,l);
(procedure,m);
(read,n);
(then,o);
(var,p);
(while,q);
(write,r);
4、等于运算符号为一个=
测试程序:
A.C
======================
CONSTA=10;
VARB,C;
PROCEDUREP;
VARD;
PROCEDUREQ;
VARX;
BEGIN
READ(X);
D:=X;
WHILEX<0
DOCALLP;
END;
BEGIN
WRITE(D);
CALLQ;
END;
BEGIN
CALLP;
END.
*/
/*programname:chifufenxi*/
/*作者:小万qq:421404493*/
/*date:2004.10.11*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
#defineN256//每一行的字符数不能超过256个
charbuffer[N];//用作存放一行字符
charword[20];//用作存放经过分析单词
char*kword[13]={"begin","call","const","do","end","if","odd","procedure","read","then","var","while","write"};
charktype[13]={’f’,’g’,’h’,’i’,’j’,’k’,’l’,’m’,’n’,’o’,’p’,’q’,’r’};
intlen;//记录每一行的长度
intcount=0;//用来记录行数
voidwrite(char*wstr,charwc,FILE*wout)//将分析结果按照规则写入到文件
{
fputc(’(’,wout);
fputs(wstr,wout);
fputc(’,’,wout);
fputc(wc,wout);
fputc(’)’,wout);
}
intreadbuffer(FILE*fp)
{
charch;
len=0;
ch=fgetc(fp);
while(!feof(fp)&&ch!=’\\n’)//读取字符到缓冲区
{
buffer[len]=ch;
ch=fgetc(fp);
len++;
}
len--;//用来控制词法分析时行分析中字母的个数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -