码迷,mamicode.com
首页 > 其他好文 > 详细

词法分析

时间:2016-09-30 20:39:10      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<string.h>
#include<iostream.h>
char prog[80],token[8];
char ch;
int syn,p,m=0,n,row,sum=0;
char *rwtab[6]={"begin","if","then","while","do","end"};
 
void scaner()
{
    for(n=0;n<8;n++) token[n]=NULL;
    ch=prog[p++];
    while(ch== )
    {
        ch=prog[p];
        p++;
    }
    if((ch>=a&&ch<=z)||(ch>=A&&ch<=Z))  
    {
        m=0;
        while((ch>=0&&ch<=9)||(ch>=a&&ch<=z)||(ch>=A&&ch<=Z))
        {
            token[m++]=ch;
            ch=prog[p++];
        }
        token[m++]=\0;
        p--;
        syn=10;
        for(n=0;n<6;n++)
            if(strcmp(token,rwtab[n])==0)
            {
                syn=n+1;
                break;
            }
    }
    else if((ch>=0&&ch<=9))  
    {
        {
            sum=0;
            while((ch>=0&&ch<=9))
            {
                sum=sum*10+ch-0;
                ch=prog[p++];
            }
        }
        p--;
        syn=11;
        if(sum>32767)
            syn=-1;
    }
    else switch(ch)  
    {
        case<:m=0;token[m++]=ch;
            ch=prog[p++];
            if(ch==>)
            {
                syn=21;
                token[m++]=ch;
            }
            else if(ch===)
            {
                syn=22;
                token[m++]=ch;
            }
            else
            {
                syn=23;
                p--;
            }
            break;
        case>:m=0;token[m++]=ch;
            ch=prog[p++];
            if(ch===)
            {
                syn=24;
                token[m++]=ch;
            }
            else
            {
                syn=20;
                p--;
            }
            break;
        case::m=0;token[m++]=ch;
            ch=prog[p++];
            if(ch===)
            {
                syn=18;
                token[m++]=ch;
            }
            else
            {
                syn=17;
                p--;
            }
            break;
        case+:syn=13;token[0]=ch;break;
        case-:syn=14;token[0]=ch;break;
        case*:syn=15;token[0]=ch;break;
        case/:syn=16;token[0]=ch;break;
        case::syn=17;token[0]=ch;break;
        case:=:syn=18;token[0]=ch;break;
        case<:syn=20;token[0]=ch;break;
        case<=:syn=21;token[0]=ch;break;
        case<>:syn=22;token[0]=ch;break;
        case>:syn=23;token[0]=ch;break;
        case>=:syn=24;token[0]=ch;break;
        case=:syn=25;token[0]=ch;break;
        case;:syn=26;token[0]=ch;break;
        case(:syn=27;token[0]=ch;break;
        case):syn=28;token[0]=ch;break;
        case#:syn=0;token[0]=ch;break;
    }
}

#完成一半


词法分析

标签:

原文地址:http://www.cnblogs.com/127li/p/5924525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!