编译原理-翻译布尔表达式
来源:互联网 发布:python 爬虫 二手房 编辑:程序博客网 时间:2024/06/04 17:56
0x01 题目描述
Input 多组输入,每组输入为一行字符串,例如: a < b or c < d and e < f每个符号都用空格间隔Output 假链跳到0,真链跳到1,表达式序号从100开始排。Example Input1a < b or c < d and e < fExample Output100(j<,a,b,1)101(j,_,_,102)102(j<,c,d,104)103(j,_,_,0)104(j<,e,f,100)105(j,_,_,103)
0x02 代码
#include<bits/stdc++.h>using namespace std;string str;int jump,tmp;vector<string>tt;int main(){ int n; scanf("%d\n",&n); while(n--) { getline(cin,str); str += " end"; jump = 1;tmp = 0; string s; stringstream ss(str); int id = 100; while(ss >> s) { if(s == "or") { printf("%d(j%s,%s,%s,%d)\n",id,tt[1].c_str(),tt[0].c_str(),tt[2].c_str(),jump); jump = id++; printf("%d(j,_,_,%d)\n",id,id+1); id ++; tt.clear(); } else if(s == "and") { printf("%d(j%s,%s,%s,%d)\n",id,tt[1].c_str(),tt[0].c_str(),tt[2].c_str(),id+2); id ++; printf("%d(j,_,_,%d)\n",id,tmp); tmp = id++; tt.clear(); } else if(s == "end") { printf("%d(j%s,%s,%s,%d)\n",id,tt[1].c_str(),tt[0].c_str(),tt[2].c_str(),jump); id ++; printf("%d(j,_,_,%d)\n",id,tmp); tt.clear(); } else tt.push_back(s); } } return 0;}
阅读全文
0 0
- 编译原理-翻译布尔表达式
- 3515 翻译布尔表达式
- 翻译布尔表达式
- 翻译布尔表达式
- sdut 翻译布尔表达式
- 编译原理课设---布尔表达式的LR翻译器
- 布尔表达式
- 布尔表达式
- 【编译原理】正则表达式
- C编译器剖析_5.2.1 中间代码生成及优化_布尔表达式的翻译
- 布尔表达式判别程序
- Ruby系列:布尔表达式
- Java if(布尔表达式)
- 布尔表达式解题报告
- 布尔表达式的验证
- 布尔表达式问题
- 判断布尔表达式
- 布尔(Boolean)表达式
- 二叉树的三种遍历的应用(表达式,求深度,叶子数,结点数,二叉树的建立,复制)
- python学习笔记(一)基本语法
- mysql读写锁及事务
- Ubuntu 16.04 安装网易云音乐 无法启动的问题
- Slim研读笔记五之依赖注入容器(上)
- 编译原理-翻译布尔表达式
- How to Install WeChat Desktop Client in Ubuntu Linux
- Linux 操作系统常用指令
- SVN本地搭建
- Java 笔记 之 运算符
- github+hexo搭建个人博客(1.简单搭建)
- CAD中的选择集过滤----有条件选择AutoCAD实体
- AUTOSAR中的高速任务调度
- Android中跳转到系统一些设置界面的方法