東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.pswp.cn/web/12511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12511.shtml
英文地址,請注明出處:http://en.pswp.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 循環…