设为首页 加入收藏

TOP

编译原理递归下降分析法(二)
2013-11-20 14:23:25 来源: 作者: 【 】 浏览:419
Tags:编译 原理 下降 分析法


    void scanner()
    {
    t=0;
    //getcha();
    getbc();
    if(letter(ch))
    {
    while(letter(ch)||digit(ch))
    {
    concat();
    getcha();
    }
    retract();
    syn=reserve();
    if(syn==10) syn=10;
    }
    else if(digit(ch))
    {
    while(digit(ch))
    {
    concat();
    getcha();
    }
    retract();
    syn=11;
    }
    else
    switch(ch)
    {
    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'<':
    token[0]=ch;
    getcha();
    if(ch=='=') {syn=22;token =ch;}
    else if(ch=='>') {syn=21;token =ch;}
    else
    {retract();
    syn=20;}
    break;
    case'>':
    token[0]=ch;
    getcha();
    if(ch=='=') {syn=24;token =ch;}
    else
    {retract();
    syn=23;}
    break;
    case'=': syn=25;token[0]=ch;break;
    case':':
    token[0]=ch;
    getcha();
    if(ch=='=') {syn=18;token =ch;}
    else
    {retract();
    syn=17;}
    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;
    default: syn=-1;break;
    }
    }
    int main()
    {
    p=0;
    printf("please input string: \n");
    char c;
    while(1)
    {c=getchar();
    if(c=='\n') break;
    prog[p++]=c;
    }
    p=0;
    scanner();
    if(syn==1)
    {Irparse();}//begin
    else
    {printf("语法分析出错! 请检查begin关键字\n");return 0;}
    if(syn==6)//end
    {
    scanner();
    if(syn==0)
    {
    printf("success!\n");
    }
    else
    {printf("语法分析出错! 请检查是否缺少'#'\n");}
    }
    else{printf("语法分析出错! 请检查是否缺少'end'\n");}
    return 0;
    }

      

首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++中字符串两次翻转 下一篇C++ 获得文件大小的方法

评论

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

·C++ 语言社区-CSDN社 (2025-12-24 17:48:24)
·CSDN问答专区社区-CS (2025-12-24 17:48:22)
·C++中`a = b = c`与` (2025-12-24 17:48:19)
·C语言结构体怎么直接 (2025-12-24 17:19:44)
·为什么指针作为c语言 (2025-12-24 17:19:41)