首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
0917词法分析
时间:
2015-10-07 13:20:47
阅读:
179
评论:
0
收藏:
0
[点我收藏+]
标签:
#include<stdio.h>
#include<string.h>
char input[
2
0
0];
//存放输入字符串
char token[
5];
//存放构成单词符号的字符串
char ch;
//存放当前读入字符
int p;
//input[]下标
int fg;
//switch标记
int num;
//存放整形值
//二维字符数组,存放关键字
char index[
6][
6]={
"begin",
"if",
"then",
"while",
"do",
"end"};
main()
{
p=
0;
printf(
"please intput string(End with ‘#‘):\n");
do
{
ch=getchar();
input[p++]=ch;
}
while(ch!=
‘#‘);
p=
0;
do
{
scaner();
switch(fg)
{
case
11:printf(
"( %d,%d ) ",fg,num);
break;
case -
1:printf(
"input error\n");
break;
default:printf(
"( %d,%s ) ",fg,token);
}
}
while(fg!=
0);
getch();
//用于让程序停留在显示页面
}
/*词法扫描程序:*/
scaner()
{
int m=
0;
//token[]下标
int n;
//清空token[]
for(n=
0;n<
5;n++)
token[n]=
NULL;
//获取第一个不为0字符
ch=input[p++];
while(ch==
‘ ‘)ch=input[p++];
//关键字(标识符)处理流程
if((ch<=
‘z‘&&ch>=
‘a‘)||(ch<=
‘Z‘&&ch>=
‘A‘))
{
while((ch<=
‘z‘&&ch>=
‘a‘)||(ch<=
‘Z‘&&ch>=
‘A‘)||(ch<=
‘9‘&&ch>=
‘0‘))
{
token[m++]=ch;
ch=input[p++];
}
token[m++]=
‘\0‘;
ch=input[--p];
fg=
1
0;
for(n=
0;n<
6;n++)
if(strcmp(token,index[n])==
0)
//strcmp()比较两个字符串,相等返回0
{
fg=n+
1;
break;
}
}
//数字处理流程
else
if((ch<=
‘9‘&&ch>=
‘0‘))
{
num=
0;
while((ch<=
‘9‘&&ch>=
‘0‘))
{
num=num*
1
0+ch-
‘0‘;
ch=input[p++];
}
ch=input[--p];
fg=
1
1;
}
//运算符界符处理流程
else
switch(ch)
{
case
‘<‘:
m=
0;
token[m++]=ch;
ch=input[p++];
if(ch==
‘>‘)
//产生<>
{
fg=
2
1;
token[m++]=ch;
}
else
if(ch==
‘=‘)
//产生<=
{
fg=
2
2;
token[m++]=ch;
}
else
{
fg=
2
0;
ch=input[--p];
}
break;
case
‘>‘:
token[m++]=ch;
ch=input[p++];
if(ch==
‘=‘)
//产生>=
{
fg=
2
4;
token[m++]=ch;
}
else
//产生>
{
fg=
2
3;
ch=input[--p];
}
break;
case
‘:‘:
token[m++]=ch;
ch=input[p++];
if(ch==
‘=‘)
//产生:=
{
fg=
1
8;
token[m++]=ch;
}
else
//产生:
{
fg=
1
7;
ch=input[--p];
}
break;
case
‘+‘:fg=
1
3;token[
0]=ch;
break;
case
‘-‘:fg=
1
4;token[
0]=ch;
break;
case
‘*‘:fg=
1
5;token[
0]=ch;
break;
case
‘/‘:fg=
1
6;token[
0]=ch;
break;
case
‘:=‘:fg=
1
8;token[
0]=ch;
break;
case
‘<>‘:fg=
2
1;token[
0]=ch;
break;
case
‘<=‘:fg=
2
2;token[
0]=ch;
break;
case
‘>=‘:fg=
2
4;token[
0]=ch;
break;
case
‘=‘:fg=
2
5;token[
0]=ch;
break;
case
‘;‘:fg=
2
6;token[
0]=ch;
break;
case
‘(‘:fg=
2
7;token[
0]=ch;
break;
case
‘)‘:fg=
2
8;token[
0]=ch;
break;
case
‘#‘:fg=
0;token[
0]=ch;
break;
default:fg=-
1;
}
}
0917词法分析
标签:
原文地址:http://www.cnblogs.com/lssh/p/4858491.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!