建立网站项目网络游戏排行榜2022

news/2025/9/28 23:05:47/文章来源:
建立网站项目,网络游戏排行榜2022,网站定制设计网页价格多少钱,电子商务平台内经营者享有公平交易的权利实现一个一遍扫描的编译前端#xff0c;将简化高级语言的部分语法成分#xff08;含赋值语句、分支语句、循环语句等#xff09;翻译成四元式#xff08;或三地址代码#xff09;#xff0c;还要求有合理的语法出错报错和错误恢复功能。 测试样例 beginwhile ab do…实现一个一遍扫描的编译前端将简化高级语言的部分语法成分含赋值语句、分支语句、循环语句等翻译成四元式或三地址代码还要求有合理的语法出错报错和错误恢复功能。 测试样例 beginwhile ab doif c5beginwhile xybeginz:x1;enda:2; b:4;c:c-1;area:3.14*a*a;s:2*3.1416*r*(hr);end endend #测试结果 词法分析程序 从文件中读取程序 (1, begin) (4, while) (10, a) (20, ) (10, b) (5, do) (2, if) (10, c) (20, ) (11, 5) (1, begin) (4, while) (10, x) (23, ) (10, y) (1, begin) (10, z) (18, :) (10, x) (13, ) (11, 1) (26, ; ) (6, end) (10, a) (18, :) (11, 2) (26, ; ) (10, b) (18, :) (11, 4) (26, ; ) (10, c) (18, :) (10, c) (14, -) (11, 1) (26, ; ) (10, area) (18, :) (11, 3.14) (15, *) (10, a) (15, *) (10, a) (26, ; ) (10, s) (18, :) (11, 2) (15, *) (11, 3.1416) (15, *) (10, r) (15, *) (27, () (10, h) (13, ) (10, r) (28, )) (26, ; ) (6, end) (6, end) (6, end) (0, #) 词法分析完成 语法分析中…,请稍候 error!--------缺少开头符号begin程序第4行出现语法错误 error!--------不是符号then程序第5行出现语法错误 error!--------不是符号do程序第7行出现语法错误 词法分析完成 语法分析完成共检查出3个语法错误 中间代码生成结果 0:if a b goto 2 1:goto 22 2:if c 5 goto 4 3:goto 21 4:if x y goto 6 5:goto 9 6:t1 x 1 7:z t1 8:goto 4 9:a 2 10:b 4 11:t2 c - 1 12:c t2 13:t3 3.14 * a 14:t4 t3 * a 15:area t4 16:t5 2 * 3.1416 17:t6 t5 * r 18:t7 h r 19:t8 t6 * t7 20:s t8 21:goto 0 语义分析 public class Element {String times;String data1;String op;String data2;String type;public void setInteger(Integer integer) {this.integer integer;}Integer integer;Element(String times,String data1,String op,String data2) {//this.times times;this.data1 data1;this.op op;this.data2 data2;}Element(String times,String data1,String op,String data2,Integer integer) {//if gotothis.times times;this.data1 data1;this.op op;this.data2 data2;this.integerinteger;}Element(Integer integer) {//if gotothis.integerinteger;}Element() {//if goto} }public class SemanticAnalysis {static int j0,t1;static ListElement elements new ArrayListElement();static void memset(String times,String data1,String op,String data2) {Element e new Element(times,data1,op,data2);elements.add(e);}public static String expression() { // 表达式String times,data1,op,data2;data1 term();while(analyzer.llist.get(j).equals() || analyzer.llist.get(j).equals(-)) {// 当前单词为、if(analyzer.llist.get(j).equals()) // op ;else // -op -;j;data2 term();times t (t);memset(times,data1,op,data2);data1 times;}return data1;}private static String term() { // 项String times,data1,op,data2;data1 factor();while(analyzer.llist.get(j).equals(*) || analyzer.llist.get(j).equals(/) ) { // 当前单词为*、/if(analyzer.llist.get(j).equals(*)) // *op *;else // /op /;j;data2 factor();times t (t);memset(times,data1,op,data2);data1 times;}return data1;}private static String factor() { // 因子String data ;if(analyzer.map2.get(analyzer.llist.get(j)) 10) { // IDdata analyzer.llist.get(j);j;} else if(analyzer.map2.get(analyzer.llist.get(j)) 11) { // NUMdata analyzer.llist.get(j);j;}else if(analyzer.llist.get(j).equals(()) { // 左括号j;data expression();if(analyzer.llist.get(j).equals()))j;} else {System.out.println(Error,表达式错误);}return data;}} 语法分析 public class GrammarAnalysis {static char[] s new char[100];static int sing;static int i; //用来记录数组s中的下标static int error 0;static void P() {if (Objects.equals(analyzer.llist.get(i), begin)) {i;int cur analyzer.map.get(i);S(); //处理if (Objects.equals(analyzer.llist.get(i), end)) {i;} else {System.out.println(error!--------不是结尾符号end 程序第 analyzer.map.get(i) 行出现语法错误);error;i;}} else {System.out.println(error!--------缺少开头符号begin 程序第 analyzer.map.get(i) 行出现语法错误);error;S(); //处理if (Objects.equals(analyzer.llist.get(i), end)) {i;} else {System.out.println(error!--------不是结尾符号end 程序第 analyzer.map.get(i) 行出现语法错误);error;i;}}}static void B() {i;D();int cur SemanticAnalysis.elements.size();SemanticAnalysis.elements.add(new Element());//thenif (!analyzer.llist.get(i).equals(then)) {System.out.println(error!--------不是符号then 程序第 analyzer.map.get(i) 行出现语法错误);error;} elsei;P();SemanticAnalysis.elements.get(cur).setInteger(SemanticAnalysis.elements.size());//elsei--;}static void C() {i;D();int cur SemanticAnalysis.elements.size();SemanticAnalysis.elements.add(new Element());//doif (!analyzer.llist.get(i).equals(do)) {System.out.println(error!--------不是符号do 程序第 analyzer.map.get(i) 行出现语法错误);error;} elsei;P();SemanticAnalysis.elements.add(new Element(cur - 1));SemanticAnalysis.elements.get(cur).setInteger(SemanticAnalysis.elements.size());i--;}static void D() {String data1, data2, op;SemanticAnalysis.j i;;data1 SemanticAnalysis.expression();//表达式E();op analyzer.llist.get(i);//|....i;SemanticAnalysis.j i;data2 SemanticAnalysis.expression();//表达式SemanticAnalysis.elements.add(new Element(if, data1, op, data2, SemanticAnalysis.elements.size() 2));E();}static void S() {if (analyzer.map2.get(analyzer.llist.get(i)) 10)A();else if (analyzer.llist.get(i).equals(while))C();else if (analyzer.llist.get(i).equals(if)) {B();}i;S1();// if(s[i]!e) {// } /* if(Objects.equals(analyzer.llist.get(i), ;)) {}else {System.out.println(error!-----------缺少结尾符号;程序第analyzer.map.get(i)行出现语法错误);error;i;S1();}*/}static void S1() {if (i analyzer.llist.size() !Objects.equals(analyzer.llist.get(i), end)) {// i;S();}}static void A() {if (i 1 analyzer.llist.size() Objects.equals(analyzer.llist.get(i 1), :)) {String times analyzer.llist.get(i), data1;SemanticAnalysis.j i;SemanticAnalysis.j 2;data1 SemanticAnalysis.expression();//表达式SemanticAnalysis.memset(times, data1, , );i;i;E();if (Objects.equals(analyzer.llist.get(i), )) || Objects.equals(analyzer.llist.get(i), ;)) {if (Objects.equals(analyzer.llist.get(i), ))) {i;}} else {System.out.println(error!--------不是结尾符号或者 程序第 analyzer.map.get(i) analyzer.llist.get(i) 行出现语法错误);error;i;}} else {System.out.println(error!---------不是赋值语句 程序第 analyzer.map.get(i) 行出现语法错误);error;i;i;E();if (Objects.equals(analyzer.llist.get(i), )) || Objects.equals(analyzer.llist.get(i), ;)) {if (Objects.equals(analyzer.llist.get(i), ))) {i;}} else {System.out.println(error!--------不是结尾符号或者 程序第 analyzer.map.get(i) 行出现语法错误);error;i;}}}static void E() {T();/* if(Objects.equals(analyzer.llist.get(i), ) || Objects.equals(analyzer.llist.get(i), -) || Objects.equals(analyzer.llist.get(i), ;) || Objects.equals(analyzer.llist.get(i), ))) {*/E1();/* }else {System.out.println(error!-----------不是结尾符号或者-或者或者程序第analyzer.map.get(i)行出现语法错误); error;E1();}*/}static void T() {F();if (Objects.equals(analyzer.llist.get(i), ) || Objects.equals(analyzer.llist.get(i), -) || Objects.equals(analyzer.llist.get(i), ;) || Objects.equals(analyzer.llist.get(i), )) || Objects.equals(analyzer.llist.get(i), *) || Objects.equals(analyzer.llist.get(i), /)) {T1();}}static void F() {if (Objects.equals(analyzer.llist.get(i), ()) {i;E();} else {i;}}static void T1() {if (Objects.equals(analyzer.llist.get(i), *)) {i;F();T1();} else if (Objects.equals(analyzer.llist.get(i), /)) {i;F();T1();}}static void E1() {if (Objects.equals(analyzer.llist.get(i), )) {i;T();E1();} else if (Objects.equals(analyzer.llist.get(i), -)) {i;T();E1();}}public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.println(词法分析程序);System.out.println(从文件中读取程序);System.out.println();analyzer.initToken();analyzer.ReadFile1();System.out.println(语法分析中....,请稍候);i 0;sing 0;if (Objects.equals(analyzer.llist.get(0), #)) System.exit(-1);P();if (Objects.equals(analyzer.llist.get(i), #)) {} else {System.out.println(error!-------不是结尾符号# analyzer.llist.get(i) i);error;}System.out.println(词法分析完成);System.out.println(语法分析完成共检查出 error 个语法错误);System.out.println(\n中间代码生成结果);for (int i 0; i SemanticAnalysis.elements.size(); i) {Element e SemanticAnalysis.elements.get(i);if (e.times null)System.out.println(i : goto e.integer);else if (e.times.equals(if))System.out.println(i : e.times e.data1 e.op e.data2 goto e.integer);elseSystem.out.println(i : e.times e.data1 e.op e.data2);}}} 词法分析 public class analyzer {public static ListString llistnew ArrayList();static MapInteger,Integer mapnew HashMap();static MapString,Integer map2new HashMap();final static String ID \\p{Alpha}(\\p{Alpha}|\\d)*;static int countLine1;/** 整形常数 NUM 正则表达式*/final static String NUM \\d\\d*;final static String regex ^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0|0)$;/** token 词法单元* 词符号 种别码 *//** 关键字 token*/static MapString, Integer TOKEN_KEYWORDS;/** 运算符/界符 token */static MapString, Integer TOKEN_OPERATOR_BOUNDARY;/** 其他单词 token*/static MapString, Integer TOKEN_ID_SUM;/** 文件根目录*/static final String ROOT_DIRECTORY program.txt;/*** 初始化 token 单元*/public static void initToken(){//种别码创建TOKEN_KEYWORDS new HashMapString, Integer(){//关键字{put(begin, 1);put(if, 2);put(then, 3);put(while, 4);put(do, 5);put(end, 6);}};TOKEN_OPERATOR_BOUNDARY new HashMapString, Integer(){//运算符和界符{put(, 13);put(-, 14);put(*, 15);put(/, 16);put(:, 17);put(:, 18);put(, 20);put(, 21);put(, 22);put(, 23);put(, 24);put(, 25);put(;, 26);put((, 27);put(), 28);put(#, 0);}};TOKEN_ID_SUM new HashMapString, Integer(){//标识符和整型常数{put(ID, 10);put(NUM, 11);}};}/*** 读 源程序 文件*/public static void ReadFile1() {FileInputStream fis null;InputStreamReader isr null;BufferedReader br null;try {fis new FileInputStream(ROOT_DIRECTORY);isr new InputStreamReader(fis, UTF-8); // 转化类br new BufferedReader(isr); // 装饰类String line;/** 记录 程序 行数 */while ((line br.readLine()) ! null) { // 每次读取一行分析一行boolean answer lexicalAnalysis(line);if(answer false){System.out.printf(ERROR 编译错误 第 %d 行出现 词法错误 \n, countLine);break;}countLine;}System.out.printf(词法分析完成\n);} catch (Exception ex) {ex.printStackTrace();} finally {try {br.close(); // 关闭最后一个类会将所有的底层流都关闭} catch (Exception ex) {ex.printStackTrace();}}}/** 判断key是否是其他单词*/private static boolean isIDOrSUM(String key){if (key.matches(ID) ) {llist.add(key);map.put(llist.size()-1,countLine);map2.put(key,TOKEN_ID_SUM.get(ID));System.out.printf((%d, %s)\n, TOKEN_ID_SUM.get(ID), key);}else if (key.matches(NUM)||key.matches(regex)) {llist.add(key);map.put(llist.size()-1,countLine);map2.put(key,TOKEN_ID_SUM.get(NUM));System.out.printf((%d, %s)\n, TOKEN_ID_SUM.get(NUM), key);}else {return false;}return true;}/*** 进行 词法分析* param word 要分析的字符串* return 结果*/public static boolean lexicalAnalysis(String word){word word.trim(); // 去首尾空格String[] strings word.split(\\p{Space}); // 分割字符串保证处理的字符串没有空格for (String string : strings) {/** 3种情况* 1. 关键字 end 关键字的后面一定是空格 * 2. 运算符/ 分界符 continue* 3. 其他单词 continue*/String key ;for (int i 0; i string.length(); i){String indexChar String.valueOf(string.charAt(i)) ;if(i1string.length()){if((indexCharstring.charAt(i1)).equals(//))return true;}/** 是 运算符 或者 关键字*/if (TOKEN_OPERATOR_BOUNDARY.containsKey(indexChar) ||TOKEN_KEYWORDS.containsKey(string.substring(i, string.length()))){if (key.length() 0) {if (isIDOrSUM(key) false) {/** 词法错误 */return false;}key ;}if(TOKEN_OPERATOR_BOUNDARY.containsKey(indexChar)) {/** 1. 是 运算符/分界符 */key indexChar;if(i 1 string.length() TOKEN_OPERATOR_BOUNDARY.containsKey(indexChar string.charAt(i1))){ // 运算分界符key string.charAt(i);}llist.add(key);map.put(llist.size()-1,countLine);map2.put(key,TOKEN_OPERATOR_BOUNDARY.get(key));System.out.printf((%d, %s)\n,TOKEN_OPERATOR_BOUNDARY.get(key),key);key ;}else if(TOKEN_KEYWORDS.containsKey(key string.substring(i, string.length()))) {/** 2. 是关键字*/llist.add(key);map.put(llist.size()-1,countLine);map2.put(key,TOKEN_KEYWORDS.get(key));System.out.printf((%d, %s)\n,TOKEN_KEYWORDS.get(key),key);key ;break;}}else {/** 是其他单词*/key indexChar;/** 其他单词后面是 1. 换行2. 运算符/界符 3. 其他单词*/if(i1 string.length()){if (isIDOrSUM(key) false) {/** 词法错误 */return false;}}}}}return true;}public analyzer() {}public static void main(String[] args) {initToken();System.out.println(词法分析程序);System.out.println(从文件中读取程序);System.out.println();ReadFile1(); for(String s:llist) System.out.println(s);System.out.println();}}

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

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

相关文章

WordPress文章设置固定链接或永久链接 - 教程

WordPress文章设置固定链接或永久链接 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

垫江网站建设哪家好产品招商网

一、安装完虚拟机后的操作 第一步: 第二步:分配的内存大一下,处理器多些 第三步:打开虚拟化 打开虚拟机、安装KVM 一般企业如果使用kvm虚拟化平台,都会把物理服务器装成Centos的操作系统,然后装上kvm,创建…

尚义住房和城乡规划建设局网站广告设计专业前景

文章目录 嫌啰嗦直接看源码Q5 :PyTorch on CIFAR-10three_layer_convnet题面解析代码输出 Training a ConvNet题面解析代码输出 ThreeLayerConvNet题面解析代码输出 Train a Three-Layer ConvNet题面解析代码输出 Sequential API: Three-Layer ConvNet题面解析代码输出 CIFAR-1…

个人用云计算学习笔记 --15. (Linux 系统启动原理、Linux 防火墙管理)) - 实践

个人用云计算学习笔记 --15. (Linux 系统启动原理、Linux 防火墙管理)) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

给小孩出数学题

给小孩出数学题import java.util.Random; import java.util.Scanner; public class math_problems { public static void main(String[] args){ Random r=new Random(); Scanner sc=new Scanner(System.in); int probl…

dotnet项目编译运行

dotnet build - 基本构建 dotnet build PurestAdmin.Zero/PurestAdmin.Zero.csproj# 指定解决方案文件 dotnet build PurestAdmin.sln构建的常用参数 # 指定配置(Debug 或 Release) dotnet build --configuration Re…

linux virtualenv使用

在Linux系统中,virtualenv是一个用于创建虚拟环境的Python包。它允许你在不同的Python版本或不同的Python环境中安装和管理库。以下是如何在Linux中使用virtualenv的步骤:首先,确保你已经安装了Python。如果没有,请…

已有网站做google推广成都网站seo设计

0 软件开发人员自我成长 1 每天读2~3篇文章,可以行业趋势、技术类(和自己的工作有关的) 大厂技术博客科技资讯类:量子位、差评、新智元、无敌信息差 量子位、新智元经验分享、编程趋势、技术干活:程序员鱼皮、小林coding、java guide、程序…

实用指南:kafka详解

实用指南:kafka详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

06-基于FPGA和LTC2308的数字电压表设计-ModelSim仿真与Matlab模拟信号产生 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功

详细介绍:whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功2025-09-28 22:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-…

oracle_19c_ru_ojvm_upgrade.sh一键升级脚本分享

oracle_19c_ru_ojvm_upgrade.sh一键升级脚本分享2025-09-28 22:43 潇湘隐者 阅读(0) 评论(0) 收藏 举报oracle_19c_ru_ojvm_upgrade.sh脚本的初始版本来源于IT邦德的分享,使用原脚本时发现有一些bug,在我的环境中…

域名不变 网站改版如何知道网站开发语言

2019独角兽企业重金招聘Python工程师标准>>> 前景 Python在编程领域的占有率一直处于稳步上升之中,根据最新的数据,Python排名第六。前五名分别是 Java、C、PHP、C 和 VB. 作为一个很年轻的语言,Python的位置已经相当令人振奋了。…

数据类型-列表

列表 (可变类型):info= ["guohan",1,"222","xxx"] 公共功能:1.索引:  info[0]>>>"guohan"2.切片:  info[1;3]>>>[1,"222"]3步长:  …

2025/9/28

2025/9/28今日:1.学习离散数学 2.继续学习算法

网站内容页怎么设计网络优化行业怎么样

一、查看开机自启项1.Centos7自启项查看方式从Centos6的chkconfig改为:systemctl list-unit-files2.用grep过滤查看,比如:查看启动项:systemctl list-unit-files | grep enable查看sshd服务自启动情况:systemctl list-…

智表 ZCELL:纯前端 Excel 导入导出的高效解决方案,让数据处理更轻松

在当今数字化时代,数据处理已成为各行各业日常工作的重要组成部分,而 Excel 作为常用的数据处理工具,其导入导出功能的高效性和便捷性直接影响着工作效率。传统的 Excel 导入导出往往需要依赖后端服务,不仅流程繁琐…

采用IOT-Tree消息流MQTT模块节点实现监测数据推送功能

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【MySQL 高阶】MySQL 架构与存储引擎全面详解 - 实践

【MySQL 高阶】MySQL 架构与存储引擎全面详解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…