| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 437 人关注过本帖
标题:此为编译原理中一个小语法分析器的代码,此间获取单词类似gettoken()->type ...
取消只看楼主 加入收藏
彩彩
Rank: 2
等 级:论坛游民
帖 子:9
专家分:15
注 册:2015-4-20
结帖率:100%
收藏
 问题点数:0 回复次数:0 
此为编译原理中一个小语法分析器的代码,此间获取单词类似gettoken()->type及下一个单词类型的getnext()->type.此间的-&g
#include<stdio.h>

#define id 1
#define equal 2
#define add 3

typedef struct token_s
{
    int type;
    char name[64];
} token_t;

token_t  token[100]= { {1, 'a'}, {2, '='},{1,'b'}, {3, '+' },{1,'b'}, {3, '+'},{1,'b'}};


int index=0;
token_t *gettoken()
{
    return &token[index];
}

token_t *getnext()
{
    index++;
    return &token[index];
}

int match_S()
{
    if(gettoken()->type==id&& getnext()->type == equal && match_A())
        printf("grammar right.\n");
    else printf("grammar wrong.\n");
}

int match_A()
{
    if(getnext()->type==id && match_B())
        return 1;
    else
        return 0;
}

int match_B()
{
    if(getnext()->type == add)
        if(match_A())
            return 1;
        else
            return 0;
    return 1;
}

int main()
{
    int i;
    for(i=0; i<100; i++){
        if(token[i].type != 0)
            printf("%s", token[i].name);
    }
    printf("\n");
    match_S();
}
搜索更多相关主题的帖子: include return 单词 
2015-05-27 17:25
快速回复:此为编译原理中一个小语法分析器的代码,此间获取单词类似gettoken()- ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035682 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved