私人定制-词法分析

私人定制词法分析,能够在输入一整段句子时准确地进行词法分析,并提供种别码表。

通过定义数组循环不断读入与分析单词。

先判断单词是否为数字,如是标志符再进一步判断是关键字、界符还是标识符。

每次读完单词执行一次getchar()后重复循环,当输出##时退出循环。

图片、源代码如下:

#include<stdio.h>
#include<string.h>
#define Max 100
int JdujeNumber(char Words[],int i,int N);
int JdujeKeywords(char Words[]);
char *table[Max][1]={"#","begin","if","then","while","do","end","l(l|d)*","dd*","+","-","*","/",":",":=","<","<=","<>",">",">=","=",";","(",")"};
char Words[Max];
main()
{
    int j,i=0,key;
    printf("\n各种单词符号对应的种别码\n");
    for(j=0;j<23;j++)
    {
        printf("%s\t%d\t\t",table[j][0],j);
        if(j%2==0)
            printf("\n");
    }
    printf("请输入:(输入##代表结束)");
    do
    {
        scanf("%s",Words);
        if(strcmp(Words,"##")==0)
        break;
        j=JdugeNumber(Words,i,strlen(Words));
        if(j==1)
            printf("%s\t是数字\n",Words);
        else if(j==0)
            {
                key=JdujeKeywords(Words);
                if(key>=0&&key<=7)
                {
                    printf("%s\t是关键字\n",Words);
                }
                else if(key>7&&key<=22)
                {
                    printf("%s\t是界符\n",Words);
                }
                else
                {
                    printf("%s\t是标识符\n",Words);
                }
            }
            getchar();
    }while(1);
    printf("程序结束!");
}
int JdugeNumber(char Words[],int i,int N)
{
    if(i==N)
        return 1;
    if(Words[i]>47&&Words[i]<58)
    {
        JdugeNumber(Words,i+1,N);
    }
    else
        return 0;
}
int JdujeKeywords(char Words[])
{
    int i;
    for(i=0;i<23;i++)
    {
        if(strcmp(Words,table[i][1])==0)
            return i;
    }
    return -1;
}

时间: 2024-09-30 10:22:27

私人定制-词法分析的相关文章

“私人定制”——开启定制家具2.0时代

说起定制,最早还属于高级服装和珠宝奢侈品这类范畴,近几年已在家居行业悄然兴起,衣柜.橱柜成为了人们最青睐定制的家具.就在人们还在谈论着家具定制的新鲜感和优越感时,一场更大的定制革命今天已经来临,家具定制的2.0版"全屋定制".   62.9%的消费者倾向于全屋定制 随着80后逐渐成为家居市场消费的主力军,消费习惯和理念和其父辈完全不一样,传统家居模式很难满足他们的个性化需求,而"私人定制"就此悄然走红.与传统家居相比,定制家具可根据消费者自己的喜好.占用空间的大小以

私人定制推送铃声

最好的用户体验就是私人定制,今天说下推送铃声的私人定制. 分为3个步骤: 1.制作推送提醒铃声 一般的iphone手机铃声都能够,限时30s之内. 2.倒入项目 将制作好的铃声加入到xcode的project项目中 3.改动推送json(改动后台) $body['aps'] = array( 'alert' => $message, //'sound' => 'default',//这个是默认的 'sound' =>'sub.m4r', //sub.m4r为你加入到项目中的声音文件名 '

自定义 Android Preference——SpinnerPreference的私人定制

因客户需求SpinnerPreference,网上各种搜索不到,无奈只能重写组件,现将过程分享大家. 自定义SpinnerPreference 一:首先从扩展preference开始:类文件必须继承自Preference并实现构造函数,如下 public MySpinnerPreference(Context context) { super(context); } public MySpinnerPreference(Context context, AttributeSet attrs) {

圆满结束【一对一私人定制,我和马哥有个约会】

[一对一私人定制,我和马哥有个约会]活动圆满结束 7.28日马哥一对一沟通交流会圆满结束了,几位幸运的马哥铁粉纷纷反馈收获满满. 他们不仅零距离和马哥一对一进行了沟通,更收获了满满干货,在运维道路上开阔了视野,还认识了志同道合的朋友. 马哥在线上跟同学交流,答疑解惑 学员反馈及群里沟通,直接跟马哥沟通,说服力和指导力都会比较信服 这次马哥也拿出了价值1200元的内部技术资料分享给报名的120个用户,很多学员要求尽快举办第二期活动,后续51CTO学院还会举办更多精彩的活动回馈广大用户盆友的,敬请期

私人定制javascript中数组小知识点(Only For Me)

先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好,便是晴天! 媳妇说:老公你太有诗意了. 老公:滚犊子,安不好我整死你! 数组的概念 javascript数组是值得有序集合,不过它实属一个javascript对象的特殊形式,这是一个很重点的定性. 创建数组 1.var a=new Array();//等同于[] 2.var a=new Array(

私人定制-代码生成器2

大家好最近一直比较忙没有及时更新软件,首先说声抱歉.这次为大家带来的是v2.3.0版本,这次主要更新有如下几点: 一.V2.3.0新增功能:1.支持生成数据库常用脚本 Update.InsertAndUpdate . 2.支持NHibernate映射文件Hbm文件生成 .3.支持Mssql2000数据库 .4.新增了字段类型与目标类型映射 .5.优化了进度条显示,主要是程序执行和界面显示不同步问题 .6.对代码进行了适当的重构,减少了冗余代码.提高了代码复用率.代码每页不超过100行.7.优化软

私人定制!13个在线纹理生成资源网站

私人定制!13个在线纹理生成资源网站 私人定制!13个在线纹理生成资源网站私人定制!13个在线纹理生成资源网站,布布扣,bubuko.com

裁缝店私人定制 风生水起 紧跟时尚

"爱上原品"上线主打设计师原创_科技_腾讯网 "爱上原品"上线主打设计师原创 2011年11月16日01:58北京商报魏蔚我要评论(0) 字号:T|T 记者近日获悉,设计师原创时装网站"爱上原品"已正式上线开卖,该网站以设计师原创时装为主营产品,一经推出就吸引了国内外众多合作厂商的关注与加盟. 据了解,"爱上原品"在今年9月15日就已面向公众开放注册,并推出注册会员即赠送百元消费券等一系列活动.据内部人士透露,该网站开通首日注

利用BusyBox ~私人定制 My LINUX~

前言 我在今天在这里跟大家详细地探讨一下Linux系统的定制过程和实现例如.用户能够远程登录:和Nginx能够稳定地运行在我们私人定制的LINUX系统上.一步一步从头开始定制属于我们自己的系统. 正文    首先我们先来简单的介绍一下我们这里定制属于自己的Linux系统的基本元素. 一个定制的linux内核+一个定制的busybox就可以定制一个小型的Linux操作系统了,安装Dropbear和Nginx,Linux的组成 部分包括内核空间和用户空间.而用户空间其实就是根文件系统.用户空间中又包