社区
C语言
帖子详情
求一个词法程序
free1879
2005-12-20 04:53:52
词法分析难度太大,刚学编译原理!看看各位怎么写的...
...全文
116
2
打赏
收藏
求一个词法程序
词法分析难度太大,刚学编译原理!看看各位怎么写的...
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
derekchuang
2005-12-21
打赏
举报
回复
/******************************************************************
*此程序只具备对简单的C语言程序的词法分析,不具备出错处理等高级功能*
*
*
*
*******************************************************************/
#include<stdio.h>
#include<string.h>
FILE *fp;
char ch; //存放最新读进的源程序字符
//将下一个输入字符读到ch中,搜索指示器前移一字符位置
GetChar(){
fscanf(fp,"%c",&ch);
}
//判断ch中的字符是否为空白
int IsEmpty(){
if(ch==' '||ch=='\t'||ch=='\n')
return 1;
else return 0;
}
//判断ch是否为字母
int IsLetter(){
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
return 1;
else return 0;
}
//判断ch是否为数字
int IsDigit(){
if(ch>='0'&&ch<='9')
return 1;
else return 0;
}
//判断ch是否为分隔符
int IsCompart(){
if(ch=='('||ch==')'||ch=='{'||ch=='}'||ch==','||ch==';'||ch=='"')
return 1;
else return 0;
}
//判断ch是否为运算符
int IsOperation(){
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='='||ch=='%'||ch=='<'||ch=='>')
return 1;
else return 0;
}
//是否为保留字
int IsKeyWord(char *c){
if(c=="int"||c=="for"||c=="if")
return 1;
else return 0;
}
//初始化单词符号字符串
Init(char *c){
int i;
for(i=0;i<10;i++)
c[i]='\0';
}
main(){
int i=0,j;
char strToken[10]; //存放构成单词符号的字符串
if((fp=fopen("E:\\编译原理\\a.txt","r"))==NULL){
printf("打开文件出错!\n" );
exit(1);
}
GetChar();
for(j=0;ch!='#';j++){
if(IsEmpty()){
while(IsEmpty()){
GetChar();
}
}
if(IsLetter()){
while(IsLetter()||IsDigit()){
strToken[i]=ch;
i++;
GetChar();
}
strToken[i]='\0';
if(IsKeyWord(strToken))
printf("<%s,保留字>\n",strToken);
else
printf("<%s,标识符>\n",strToken);
Init(strToken);
i=0;
}
if(IsCompart()){
while(IsCompart()){
printf("<%c,分隔符>\n",ch);
GetChar();
}
}
if(IsDigit()){
while(IsDigit()){
strToken[i]=ch;
i++;
GetChar();
}
strToken[i]='\0';
printf("%<s,数字>\n",strToken);
Init(strToken);
i=0;
}
if(IsOperation()){
while(IsOperation()){
strToken[i]=ch;
i++;
GetChar();
}
strToken[i]='\0';
printf("<%s,运算符>\n",strToken);
Init(strToken);
i=0;
}
}
getch();
fclose(fp);
}
sankt
2005-12-21
打赏
举报
回复
http://www.08090.com/c/sr/showart.asp?art_id=5&cat_id=2
http://www.qcode.org/article/qcode/code5/cj/cj4/200511/12392.html
其实这方面的例子很多,可以看看上面的参考一下
简易C语言
词法
分析
程序
这是学《编译原理》时的上机实验。可实现对C语言的
词法
分析,关键字32个,包含了C的绝大部分运算、限界符,主要是对文件进行读、写操作,节省内存消耗,自以为是
一个
不错的
词法
分析
程序
。运行环境为VC++6.0。
词法
分析
程序
词法
分析
程序
是编译器设计中的
一个
关键组成部分,它负责将源代码转换为一系列有意义的符号或标记,这些符号随后被用于语法分析和代码生成。在这个压缩包中,我们很可能会找到用C++或C语言编写的源代码,它们实现了...
编译原理实验报告 语法分析 语义分析
词法
分析 详细的源
程序
编制
一个
递归下降分析
程序
,实现对
词法
分析
程序
所提供的单词序列的语法检查和结构分析. C2.2 实验要
求
利用C语言编制递归下降分析
程序
,并对简单语言进行语法分析. C2.2.1待分析的简单语言的语法 实验目的 通过上机...
java
词法
分析器源代码
在这个特定的“java
词法
分析器源代码”压缩包中,可能包含的是
一个
实现了
词法
分析功能的Java项目,名为"SynEdit"。
词法
分析器通常由两部分组成:
词法
规则定义和
词法
分析算法。在Java中,
词法
分析器可以使用各种...
java
词法
分析器源码
这个是java
词法
分析器,包含全部的源码,我以前提交的只有一些源代码,不好意思。和其他的
词法
分析器不同,这个包含了图形模拟功能。... 这个
程序
是在linux中写的,所以readme文件需要大家改下。 谢谢了。
C语言
70,026
社区成员
243,262
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章