东B编译原理第二次实验课

由于本人比较懒还没咋学编译原理,并不知道LR,算符优先是啥方法,就按照自己想法写了个非常丧心病狂的代码

非常SB的是一个代码过五个题,我知道肯定漏洞百出,但是懒惰如我已经懒得改了,能过就好

下边放下原题水一下字数

题目一 ~ 题目四

1.设计简单算数表达式语法分析器算法;(LR来实现)

2.编写代码并上机调试运行通过。

样例输入

x+y*(3*a+7)-b/5
x+y*(3*a+7-b/5

样例输出

true
false

扩展题

1.设计一个表达式语法分析器,要求表达式支持任意标识符和常数;

2.编写代码并上机调试运行通过。

样例输入

xx+y10*(33*a+0.7)-b/523e-2
xx+y10*(33*a+0.7)-b*/523e-2

样例输出

True
False

非常SB的代码

#include<iostream>
using namespace std;int main()
{string s;while (getline(cin, s)){int op = 0;int l = 0, r = 0, pos = 0;bool flag = false;bool flag1 = false, flag2 = false;while (s[pos] == ' ') pos++;while (s[pos] == '(') {pos++;l++;}while (s[pos] >= '0' && s[pos] <= '9' || s[pos] == 'e' || s[pos] == '.' || s[pos] >= 'a' && s[pos] <= 'z' || s[pos] >= 'A' && s[pos] <= 'Z') {if (s[pos] == 'e') {if (flag1) flag = true;flag1 = true;}if (s[pos] == '.') {if (flag2) flag = true;flag2 = true;}pos++;}for (int i = pos; i < s.size(); i++){flag1 = false, flag2 = false;if (s[i] == ' ');else if (!op) {if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/' || s[i] == '=');else if (s[i] == ')') {r++;continue;}else {flag = true;break;}op = 1;}else {if (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z' || s[i] >= '0' && s[i] <= '9' || s[i] == 'e' || s[i] == '.') {while (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z' || s[i] >= '0' && s[i] <= '9' || s[i] == 'e' || s[i] == '.') {if (s[i] == 'e') {if (flag1) flag = true;flag1 = true;}if (s[i] == '.') {if (flag2) flag = true;flag2 = true;}i++;}i--;}else if (s[i] == '(') {l++;continue;}else {flag = true;break;}op = 0;}}if (flag || l != r) cout << "false\n";else cout << "true\n";}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

swift-resizableImageWithCapInsets(可拉伸图片)

resizableImageWithCapInsets 他的作用是用之前的的image创建出一个可拉伸的image&#xff0c;这个image的作用就是当要填充的imageView大于当前image时就会进行拉伸&#xff0c;但是这个可拉伸image是可以设置屏蔽区域的 也就是告诉你哪部分不要用来拉伸 let capInsets UIEdg…

在哪些地方能用到PMP认证?参加PMP培训怎么选择靠谱?

PMP认证在实际运用中比我们想象的作用要大得多&#xff0c;甚至涉及到了工作、生活各个方面&#xff0c;这其中主要是在工作方面发挥作用&#xff0c;帮助我们在项目管理相关岗位发挥更大的作用。 因为PMP认证是项目管理协会发起&#xff0c;考试也是针对专业项目管理人员的测…

golang中三种线程安全的MAP

一、map 是什么 map 是 Go 中用于存储 key-value 关系数据的数据结构&#xff0c;类似 C 中的 map&#xff0c;Python 中的 dict。Go 中 map 的使用很简单&#xff0c;但是对于初学者&#xff0c;经常会犯两个错误&#xff1a;没有初始化&#xff0c;并发读写。 1、未初始化的…

Linux服务器中了病毒后的清理方法

病毒的基础排查 1. 检查计划任务 黑客入侵服务器后&#xff0c;为了让病毒脚本持续执行&#xff0c;通常会在计划任务配置文件里面写入定时执行的脚本任务。 检查命令说明ls -l /var/spool/cron/*查看用户级计划任务配置。有的人喜欢用 crontab -l 命令来排查&#xff0c;这…

探索设计模式的魅力:机器学习赋能,引领“去中心化”模式新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 探索设计模式的魅力&#xff1a;机器学习赋能&#xff0c;引领“去中心化”模式新纪元 ✨欢迎加入…

react-visible-observer:一个超级简单的滚动加载 npm 库

随着现代网页应用的复杂性增加&#xff0c;懒加载和无限滚动已经成为提升用户体验和性能优化的重要技术。然而&#xff0c;许多现有解决方案要么过于复杂&#xff0c;要么性能欠佳。 react-visible-observer 是一个简单而高效的解决方案&#xff0c;旨在简化这些功能的实现。本…

商业银行总分支数据分发的核心问题是什么?如何解决?

银行业对一个国家至关重要&#xff0c;关乎国计民生。银行为我国经济建设分配资金&#xff0c;是社会再生产顺 利进行的纽带&#xff0c;它能掌握和反应社会经济活动的信息&#xff0c;为企业和政府作出正确的经济决策提供 必要的依据。通过银行&#xff0c;可以对国民经济各部…

比较两个JSON之间的差异

网上找到的比较JSON工具类&#xff0c;比较两个JSON对象之间的差异&#xff0c;并将差异字段按照原JSON对象的树状结构展现出来&#xff0c;方便对数据进行对比。对原有方法进行了部分优化。 package com.summer.toolkit.util;import com.alibaba.fastjson.JSON; import com.a…

三、安装node_exporter

目录 一、简介 二、下载安装 一、简介 Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据&#xff0c;并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是&#xff0c;他只负责收集&#xff0c;并不向Server端发送数据…

探索微软Edge:一款重塑网页浏览体验的新锐浏览器

探索微软Edge&#xff1a;一款重塑网页浏览体验的新锐浏览器 随着科技的飞速发展&#xff0c;我们的互联网浏览需求也在不断升级。在这样的背景下&#xff0c;微软Edge浏览器应运而生&#xff0c;以其卓越的性能、独特的功能和简洁的设计&#xff0c;迅速赢得了广大用户的青睐…

Redis:常用数据结构

文章目录 常用数据结构Redis的编码方式查看方式 常用数据结构 Redis当中常用的数据结构如下所示&#xff1a; Redis在底层实现上述数据结构的过程中&#xff0c;会在源码的角度上对于上述的内容进行特定的优化&#xff0c;这样的优化的主要目的是为了实现出节省时间和节省空间…

【挑战30天首通《谷粒商城》】-【第一天】10、环境-docker安装mysql

文章目录 课程介绍一、docker 安装 mysql Stage 1&#xff1a;下载镜像文件 Stage 1-1&#xff1a;打开官网查看镜像 Stage 1-2&#xff1a;拉取镜像 Stage 1-3&#xff1a;查看拉取的镜像 Stage 2&#xff1a;创建实例并启动 A&#xff1a;mysql&#xff08;5.7版&#xff09;…

yolov8添加FPPI评价指标

这里写自定义目录标题 yolov8 中FPPI实现测试中调用 效果结语 续yolov7添加FPPI评价指标 。之前在yolov7中增加了fppi指标&#xff0c;有不少网友问有没有yolov8中增加&#xff0c;最近没有做算法训练&#xff0c;也一直没时间弄。这几天晚上抽了点时间&#xff0c;弄了一下。不…

焦灼上市背后,极氪汽车开启新长征?

李书福的资本帝国&#xff0c;又要扩容了。继蔚小理之后&#xff0c;极氪汽车成为第四家赴美上市的中国造车新势力&#xff0c;同时也成为了李书福收获的第九个IPO。作为一家成立仅仅4年的新势力&#xff0c;极氪再次刷新了造车新势力上市的最快记录。 按照极氪汽车官方的说法…

学习中...【京东价格/评论数据】数据获取方式——采用Selenium★

近期闲来无事学学selenium爬虫技术&#xff0c;参考崔庆才《Python3网络爬虫开发实战》的淘宝商品信息爬取&#xff0c;我也照猫画虎的学了京东的价格和商品评论数据。废话不多说&#xff0c;直接开始吧&#xff01; 1. 浏览器初始化 from selenium import webdriver from se…

红黑树的平衡

1.红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍&#xff0c…

什么是apt

2024年5月15日&#xff0c;周三上午 apt 是 “Advanced Packaging Tool” 的缩写&#xff0c;它是 Debian 及其衍生版&#xff08;如 Ubuntu&#xff09;中用于管理软件包的命令行工具。apt 提供了一个统一的接口来安装、更新、升级、删除和搜索软件包。 以下是 apt 的一些主要…

合合信息:TextIn文档解析技术与高精度文本向量化模型再加速

文章目录 前言现有大模型文档解析问题表格无法解析无法按照阅读顺序解析文档编码错误 诉求文档解析技术技术难点技术架构关键技术回根溯源 文本向量化模型结语 前言 随着人工智能技术的持续演进&#xff0c;大语言模型在我们日常生活中正逐渐占据举足轻重的地位。大模型语言通…

Java基础(36)应用服务器优化技术有哪些

应用服务器优化是一个复杂的过程&#xff0c;涉及到服务器硬件资源、操作系统、网络、应用程序代码、数据库等多个层面。下面是一些深入详细的应用服务器优化技术&#xff1a; 系统级优化 硬件优化 提升CPU性能&#xff1a;使用更多核心的CPU或者升级到更高频率的CPU。增加内…

Scala基础

目录 1.安装与运行Scala 任务描述 了解Scala语言 了解Scala特性 安装Scala 运行Scala 2.定义函数识别号码类型 了解数据类型 定义与使用常量、变量 使用运算符 定义与使用数组 任务实现 3.基本语法 1 变量 2 字符串 3 数据类型&操作符 4 条件表达式 5 循环…