博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
词法分析
阅读量:4648 次
发布时间:2019-06-09

本文共 1592 字,大约阅读时间需要 5 分钟。

# include<stdio.h>

# include<stdlib.h>
# include<string.h>

int panduan(char tmp[])

{
char b[6][10] = {"begin", "if", "then", "while", "do", "end", };
int k = 0;

while(k < 6) // 临时变量tmp 与 字符串b[k] 进行比较

{
if(strcmp(tmp, b[k]) == 0)
{
printf("<%s, %d>\n", tmp, k+1);
return 0;
}
k++;
}
printf("<%s, 10>\n", tmp);

return 0;

}

void cifafenxi(char a[])

{
int i = 0, j = 0;
char tmp[10];
int flag = 0;

while(a[i] != '\0')

{
if(a[i] >= 'a' && a[i] <= 'z') // 判断标识符
{
tmp[j] = a[i];
j++;
while((a[i+1] >= 'a' && a[i+1] <= 'z') || (a[i+1] >= '0' && a[i+1] <= '9'))
{
i++;
tmp[j] = a[i];
j++;
}
tmp[j] = '\0';
j = panduan(tmp);
}

if(a[i] >= '0' && a[i] <= '9') // 判断数字

{
tmp[j] = a[i];
j++;
while(a[i+1] >= '0' && a[i+1] <= '9')
{
i++;
tmp[j] = a[i];
j++;
}
tmp[j] = '\0';
printf("<%s, 11>\n", tmp);
j = 0;
}

switch(a[i]) // 判断符号

{
case '+':printf("<+, 13>\n");break;
case '-':printf("<-, 14>\n");break;
case '*':printf("<*, 15>\n");break;
case '/':printf("</, 16>\n");break;
case ':':
{
if(a[i+1] == '=')
printf("<:=, 18>\n");
else
printf("<:, 17>\n");
}break;
case '<':
{
if(a[i+1] == '=')
printf("<<=, 21>\n");
else if(a[i+1] == '>')
printf("<<>, 22>\n");
else
printf("<<, 20>\n");
}break;
case '>':
{
if(a[i+1] == '=')
printf("<>=, 24>\n");
else
printf("<>, 23>\n");
}break;
case '=':printf("<=, 25>\n");break;
case ';':printf("<;, 26>\n");break;
case '(':printf("<(, 27>\n");break;
case ')':printf("<), 28>\n");break;
case '#':printf("<#, 0>\n");break;
}

i++;

}
}

int main(void)

{
char a[300];

printf("input : ");

gets(a);
cifafenxi(a);

return 0;

}

转载于:https://www.cnblogs.com/5277hnl/p/6187026.html

你可能感兴趣的文章
HTML5文件拖拽
查看>>
第一个CUDA程序
查看>>
CentOS 6.9/7通过yum安装指定版本的Redis
查看>>
Android中RelativeLayout各个属性的含义
查看>>
PhoneGap API帮助文档翻译—Capture (采集)
查看>>
微信公众平台开发(45)食物营养及热量查询
查看>>
微信公众平台开发(58)自定义菜单
查看>>
FTP上传下载使用ASCII与binary的区别
查看>>
我的网站,书籍收藏
查看>>
单例模式(Singleton)
查看>>
使用jsonEditor打造一个复杂json编辑器
查看>>
oracle基础学习---------1
查看>>
运行Android Studio总是未发现设备
查看>>
CacheManager操作缓存
查看>>
poj 2723 2-SAT问题
查看>>
javascript之常用事件
查看>>
django request对象和HttpResponse对象
查看>>
【Android进阶】Junit单元測试环境搭建以及简单有用
查看>>
《转》 在C++中使用TinyXML2解析xml
查看>>
常用数据类型使用
查看>>