设为首页 加入收藏

TOP

深入浅出编译原理-5-一个简单语法分析器的C语言实现(二)
2014-11-23 23:55:04 来源: 作者: 【 】 浏览:25
Tags:深入浅出 编译 原理 -5- 一个 简单 语法 分析器 语言 实现
n;
}
void scaner(void)
{
sum=0;

for(m=0;m<8;m++)
token[m++]=NULL;

m=0;
ch=prog[p++];

while(ch==' ')
ch=prog[p++];

if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A')))
{
while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9')))
{
token[m++]=ch;
ch=prog[p++];
}
p--;
syn=10;
token[m++]='\0';
for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0)
{
syn=n+1;
break;
}
}
else if((ch>='0')&&(ch<='9'))
{
while((ch>='0')&&(ch<='9'))
{
sum=sum*10+ch-'0';
ch=prog[p++];
}
p--;
syn=11;
}
else
switch(ch)
{
case '<':
m=0;
ch=prog[p++];
if(ch=='>')
{
syn=21;
}
else if(ch=='=')
{
syn=22;
}
else
{
syn=20;
p--;
}
break;

case '>':
m=0;
ch=prog[p++];
if(ch=='=')
{
syn=24;
}
else
{
syn=23;
p--;
}
break;

case ':':
m=0;
ch=prog[p++];
if(ch=='=')
{
syn=18;
}
else
{
syn=17;
p--;
}
break;

case '+':
syn=13;
break;

case '-':
syn=14;
break;

case '*':
syn=15;
break;

case '/':
syn=16;
break;

case '(':
syn=27;
break;

case ')':
syn=28;
break;

case '=':
syn=25;
break;

case ';':
syn=26;
break;

case '#':
syn=0;
break;

default:
syn=-1;
break;
}
}

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言顺序程序设计详解(scanf,pri.. 下一篇HDU1238

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: