⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c

📁 很不错的用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 + -