SDUT - 表达式语法分析——递归子程序法
求 select
G→+TG | ε------ +| ε
S→*FS | ε------ *| ε
F→(E) | i ------ (,i
T→FS ------- (,i
E→TG ------ (,i,
#include<bits/stdc++.h>using namespace std;
string s;
int pos,cnt;
void E();
void F();
void G();
void S();
void T();
void E(){if(s[pos]=='('||s[pos]=='i'){cout<<cnt++<<" E-->TG\n";T();G();}else {cout<<"error\n";exit(0);}
}
void T(){if(s[pos]=='('||s[pos]=='i'){cout<<cnt++<<" T-->FS\n";F();S();}else {cout<<"error\n";exit(0);}
}
void G(){if(s[pos]=='+'){cout<<cnt++<<" G-->+TG\n";pos++;T();G();}else cout<<cnt++<<" G-->&\n";
}
void S(){if(s[pos]=='*'){cout<<cnt++<<" S-->*FS\n";pos++;F();S();}else cout<<cnt++<<" S-->&\n";
}
void F(){if(s[pos]=='('){cout<<cnt++<<" F-->(E)\n";pos++;E();if(s[pos]==')')pos++;else {cout<<"error\n";exit(0);}}else if(s[pos]=='i'){cout<<cnt++<<" F-->i\n";pos++;}else {cout<<"error\n";exit(0);}
}int main()
{cin>>s;E();
if(s[pos]=='#') cout<<"accept\n";
else cout<<"error\n";
}
SDUT - 表达式语法分析——递归子程序法相关推荐
- SDUT-D-表达式语法分析——递归子程序法-附带解释函数
表达式语法分析--递归子程序法 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 递归子程序法是一种确定的自顶向下语法分析 ...
- 自上而下的语法分析-递归下降分析和LL(1)文法
对输入的任意单词符号串,试图用一切可能的办法,从文法开始符号(树根)出发,自上而下.自左而右地建立起一棵语法分析树,使得该树的叶结点自左而右地排列起来,刚好就是所给的输入串.显然,这一过程应该与一个最 ...
- 递归下降分析法的基本思想。_语法分析 | 递归下降分析算法
递归下降分析算法是自顶向下分析算法的一部分. 递归下降分析算法 也称为预测分析 分析高效(线性时间) 容易实现(方便手工编码) 错误定位和诊断信息准确 被很多开源和商业的编译器所采用 GCC 4.0, ...
- PLSQL - 递归子查询RSF打破CONNECT BY LOOP限制
例如有表EMP_ROLES存有数据如下图 RNAME表示员工充当的角色名称,当一人身兼多职时,便会以+号串联各个角色 这是一种很聪明的存储方法,但有时我们却又可能需要拆出每个人的所有角色以便匹配,也就 ...
- SQL Server中公用表表达式 CTE 递归的生成帮助数据,以及递归的典型应用
原文: SQL Server中公用表表达式 CTE 递归的生成帮助数据,以及递归的典型应用 本文出处:http://www.cnblogs.com/wy123/p/5960825.html 我们在做开 ...
- foreach jdk8 递归_[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归 .
递归优化 很多算法都依赖于递归,典型的比如分治法(Divide-and-Conquer).但是普通的递归算法在处理规模较大的问题时,常常会出现StackOverflowError.处理这个问题,我们可 ...
- 一篇文章带你了解JavaScript中的函数表达式,递归,闭包,变量,this对象,模块作用域
作者 | Jeskson 来源 | 达达前端小酒馆 定义函数的方式: 第一种为 函数声明: 第二种为 函数表达式. 语法: function functionName(arg0, arg1, arg2 ...
- python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
一.三元表达式 语法:[成立1 if condition1 else成立2 if condition2 else ...if 成立N conditionN else 不成立] sex = 'man' ...
- JS函数表达式——函数递归、闭包
一:定义函数的方式: 1.函数声明:2.函数表达式 函数声明的重要特征:函数声明提升,在执行代码之前会先读取函数声明. sayHi(); function sayHi(){console.log(&q ...
- Python--三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数...
三元表达式 列表推导式 生成器表达式 递归与二分法 匿名函数 内置函数 一.三元表达式 name=input('姓名>>: ') res='True' if name == 'lee' e ...
最新文章
- 核心动画的接触点滴(五)
- ol xyz 加载天地图_OpenLayers加载天地图方法——WMTS和XYZ
- 深度技术win11 32位全新专业版系统v2021.07
- 《MongoDB管理与开发精要》——2.6节常用GUI管理工具
- redis中数据的持久化
- 一个极其微小的优化想法
- 【译】Simple MySQL ORM for C
- Install Cockpit on Fedora/CentOS/RHEL
- 怎么实现多用户同时远程连接到一台电脑上
- c语言五大常用算法,C语言------五大常用算法总结
- visio中使用连接线连接形状
- cissp怎么维持?cissp维持费用多少?
- 农场花园种花偷花前后端完整项目
- 【大前端】用html和css写一个QQ邮箱登录页面
- Java @Min(0)的意义
- 解决主机不能访问VirtualBox上Linux虚拟机ip的问题
- android_文件下载
- 北大邹磊:图数据库中的子图匹配算法
- Java垃圾回收笔记
- 学习Linux的博客和资源网站
热门文章
- Saas平台接入商户代小程序开发解决方案
- 【H5钢琴示例代码】
- python爬取作品集_Python爬虫爬取哈利波特小说集,并用数据可视化剖析登场人物...
- java的副语言_公共表达中,悄悄影响你的“副语言”
- FPGA开发中常见报错或警告汇总
- python安装os模块_python安装os
- 毕业设计c语言课程设计,毕业设计—c语言—课程设计.doc
- python怎么做计算题_用python做算术题
- Python练习实战股票网页数据
- 深度学习中关于 “深度” 的理解