表达式语法分析——递归子程序法
2017-04-26 13:21
323 查看
#include<cstdio> #include<cstring> #include<string> #include<cstdlib> //exit(0)函数头文件 using namespace std; char str[100]; int num = 0; int cur = 0; void E(); void F(); void G(); void T(); void S(); void S(){ if(str[cur] == '*'){ printf("%d S-->*FS\n",num++); cur++; F(); S(); }else printf("%d S-->&\n",num++); } void G(){ if(str[cur] == '+'){ printf("%d G-->+TG\n",num++); cur++; T(); G(); }else printf("%d G-->&\n",num++); } void F(){ if(str[cur] == 'i'){ printf("%d F-->i\n",num++); cur++; }else if(str[cur] == '('){ printf("%d F-->(E)\n",num++); cur++; E(); if(str[cur] == ')'){ cur++; }else{ printf("error\n"); exit(0); } }else{ printf("error\n"); exit(0); } } void T(){ printf("%d T-->FS\n",num++); F(); S(); } void E(){ printf("%d E-->TG\n",num++); T(); G(); } int main(){ scanf("%s",str); E(); if(str[cur]!='#') printf("error\n"); else printf("accept\n"); return 0; }
相关文章推荐
- 2016年秋季《编译原理》课程实验(2014级)表达式语法分析——递归子程序法
- SDUT 2147 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 2147 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- 表达式语法分析——递归子程序法
- Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法
- 【现代编译器】语法分析——正则表达式,上下文无关文法,递归下降分析,分析树
- 【现代编译器】语法分析——正则表达式,上下文无关文法,递归下降分析,分析树
- 语法分析:算术表达式递归下降分析程序设计
- 语法分析:算术表达式递归下降分析程序设计
- Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法
- 语法分析:算术表达式递归下降分析程序设计
- 实现自定义类似XML语法分析的正则表达式(原创)
- 用递归下降分析求表达式的值
- 递归下降语法分析
- 编译原理之基于扫描器的表达式语法分析+逆波兰表达式生成