相关推荐
-
LR语法分析 java版
实现一个关于表达式的LR语法分析程序 识别用户输入的包含变量与整数的混合算术表达式(不包含减法与除法运算) 文法如下: 0 S E 1 E E+E 2 E E E 3 E E 4 E i 编程运用上述LR分析表 识别从键盘输入的算术表达式 ">实现一个关于表达式的LR语法分析程序 识别用户输入的包含变量与整数的混合算术表达式(不包含减法与除法运算) 文法如下: 0 S E 1 E E+E 2 E E E 3 E E 4 E i 编程运用上述LR分析表 识别从键盘输入的算术表达 [更多]
-
2021年上半年软件设计师上午真题及答案解析(五)
调用hoo(a,x)函数,此时a=2传给hoo函数中的x,并且由于是引用方式,此时x在hoo函数内的修改会影响原a的值(注意区别,hoo函数的x与foo函数的x是不用的局部变量)。以下UML状态图中,假设活动的状态是A,事件b=0发生并且a>5,发生条件是c状态到d状态的转换条件的是( ),D变为活动的状态,有关状态图的叙述中,不正确的是( )。执行y=y+10=15,执行x=y-x=15-2=13,此时x的值会传回原foo函数的a,即a=x=13。A.确定的有限自动机,它能识别以bab结尾的。
-
(2020年下半年软件设计师49题)程序设计语言的大多数语法现象可以用CFG(上下文无关文法)表示。下面的CFG产生式集用于描述简单算术表达式,其中+ - * 表示加、减、乘运算,id表示单个字母表示
计师上午题49题 答案:A 题解 三种解题思路 第一种 排除法 这相当于硬凑,首先,上下文无关管文法中没有()和 / 符号,所以可以直接排除B和D选项 仅限用于这题,根据符号排除了BD选项,题目有说明,id表示单个字母表示变量,C选项中有数字,这CFG无法产生数字,所以C也可以直接排除,但还是建议看下第二种推理过程 第二种 自底向上推 C需要 * - + 这三个运算符 + 和 - 可以有不少符合的条件实现,但是* 只能由T->TF,并且要保证a-b的要求,后面久必须跟上一个
-
04语法分析——自上而下分析
例如,如果分号作为语句的结束符(C语言中就是这样的),那么作为语句开头的关键字就可能不在产生表达式的非终结符的 FOLLOW 集中。(3)如果把FIRST(A)中的符号加入非终结符 A 的同步符号集,那么,当FIRST(A)中的一个符号在输入中出现时,可以根据 A 恢复语法分析。(5)如果不能匹配堆栈顶的终结符号,一种简单的想法是弹出堆栈顶的这个终结符号,并发出一条信息,说明已经插入这个终结符,继续语法分析。我们以预测分析为例。①若M[A,a]是A的一个产生式,则X出栈,同时将产生式的右部反序一一进栈;
-
算术表达式的自上而下语法分析及其实现(上)
学过编译原理的同学大概都知道对一个句子进行自上而下语法分析的方法。我参考了陈火旺院士的《高级程序设计语言编译原理》,在这篇文章里我主要是站在编译原理的角度讲述一种语法分析程序的实现的方法,通过对一个典型的例子——算术表达式的分析,从而使大家了解构造一个实用的语法分析程序的方法,同时,也为广大程序员提供一种解决实际问题的思路。本文包括以下内容:1. 算术表达式的产生式;2. 自上而下语法分析的算
-
算术表达式的自上而下语法分析及其实现(下)
(接中篇) 5. 自上而下语法分析程序的实现 经过上面4步精心的准备,最令人激动的时刻到了。一般《编译原理》课本上的代码大都是无法在机器上运行的伪代码,在这里,你将要看到的是一个实用的可以检查错误的可以执行求值的基于自上而下语法分析算法的计算算术表达式的程序。 不失一般性,我们规定算术表达式只可以进行整数的四则运算(含括号),这样我们需要扩充下面3个函数: int E_AddSub();
-
编译原理实验:自上而下语法分析
编译原理实验报告:自上而下语法分析1. 实验题目:自上而下语法分析实验目的实验内容实验要求输入输出2. 设计思想3. 算法流程4. 源程序新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特......
-
语法分析器(c++)
编译原理实验二,语法分析,LR0,LR1
-
Java实现算术表达式词法分析程序
Java实现算术表达式词法分析程序,更多详情可以查看博客wmathor.com
-
算术表达式的自上而下语法分析及其实现
算术表达式的自上而下语法分析及其实现 这篇文章里主要是站在编译原理的角度讲述一种语法分析程序的实现的方法,通过对一个典型的例子——算术表达式的分析,从而使大家了解构造一个实用的语法分析程序的方法,同时,也为广大程序员提供一种解决实际问题的思路。
-
phrase.cpp
编译原理实验(二)--语法分析:采用自上而下的方法实现算术表达式的语法分析器,以加深对自上而下语法分析过程的理解。 E→TE' E'→+TE'| -TE' |ε T→FT' T'→*FT'| /FT' |ε F→(E) | id | num
-
编译原理:语法分析(算术表达式的扩充)
实验二 语法分析(算术表达式的扩充) 一·、实验题目 算术表达式文法扩充如下: E→E+E| E-E|E*E |E/E| (E) | I 试根据该文法重新设计LR分析表,并修改语义加工程序,最后验证修改的结果。 二、实验过程 (1)代码设计 由于一开始没有用实验要求的文法设计的表(最主要是实验要求的文法有很多左递归的文法造成对于还没充分认识LR的我来说,存在很大的难度。所以查找一些假设LR构造的表已经设计出来的,看看LR语法分析的流程),所以等我了解了LR构造的流程以后,我就想设计一个更加符合要求的。
-
算术表达式的词法、语法分析。
吐血之作,编译原理课程设计。算术表达式的词法分析,语法分析,四元式输出。 MFC。 分高,但物有所值。
-
编译原理实验-递归下降的方法实现语法分析器
(使用Python实现,注释详尽)在词法分析器的基础上,采用递归下降的方法实现算术表达式的语法分析器,以加深对自上而下语法分析过程的理解。 1、对算术表达式文法: E→TE' E'→+TE'| -TE' |ε T→FT' T'→*FT'| /FT' |ε F→(E) | id |num 构造其递归下降分析程序。
-
C++ 算数表达式分析模块(附原理简介)
表示式分析可以用来计算一般的算数表达式,可以作为函数计算的模块。 目前版本为1.3,附带实现原理(编译原理的基本内容)。 main.cpp 有示例使用方法,in.txt为示例输入。 代码中有注释,使用方法有详细说明。 /* * Expression类是解析表达式的类 * 表达式支持 + - * / ^(pow) -(neg)运算符 * 表达式支持 ( ) 控制优先级 * 表达式中的实数只能为实数加小数点,不支持科学计数法表示(不会错误提示,但得不到正确表达式) * SetExprStr失败后会破坏原来的表达式 * 支持26个字母(不区分大小写)表示变量 * 使用SetVar设置变量值 * 默认变量值为 1 * GetResult时,若表达式求解不合法,返回非0 * GetExprErrorStr 获取表达式错误代码的表示字符串 * GetResultErrorStr 获取求解错误代码的表示字符串 */
-
编译原理实验二 自上而下语法分析
自上而下 语法分析实验 一、实验目的 (1)给出 PL/0 文法规范,要求编写 PL/0语言的语法分析程序。 (2)通过设计、编制、调试一个典型的自上而下语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。 (3)选择最有代表性的语法分析方法,如递归下降分析法、预测分析法;选择对各种常见程序语言都具备的语法结构,如赋值语句,特别是表达式,作为分析对象。 二、实验内容 (1)已给 PL/0 语言文法,构造表达式部分的语法分析器。 分析对象〈算术表达式〉的 BN
-
C++算术表达式求值(支持函数)
C++算术表达式求值(支持函数) sin cos tan asin acos atan log sqrt cos(sin(sqrt(100*sqrt(100*10^2))))*(1.0e+5)/(1.0e-5) = 8.74513e+009
-
算术表达式语法分析
东北大学编译原理实验二用递归下降子程序法判断算术表达式的语法是否正确
42 楼 四个石头 2011-06-26 11:20
感谢iteye网友thc1987 和yuanjzh 提出该异常,该异常已经解决
该异常产生的原因是:在使用POST方式提交的时候,没有传递参数
该异常已经解决,你可以下载新的版本v1.1
下载地址:http://code.google.com/p/configdebug/downloads/list
41 楼 wtslh 2011-06-24 18:37
40 楼 wtslh 2011-06-24 18:11
我误解了,不好意思。
39 楼 wtslh 2011-06-24 18:08
Struts Problem Report
Struts has detected an unhandled exception:
Messages: String index out of range: -1
File: java/lang/AbstractStringBuilder.java
Line number: 881
--------------------------------------------------------------------------------
Stacktraces
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:881)
java.lang.StringBuffer.substring(StringBuffer.java:416)
com.configdebug.interceptor.ConfigDebugInterceptor.getParameters(ConfigDebugInterceptor.java:223)
com.configdebug.interceptor.ConfigDebugInterceptor.intercept(ConfigDebugInterceptor.java:83)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
38 楼 四个石头 2011-06-15 19:35
## 1.accessMethod:GET
## 2.debugUrl:http://localhost:8080/addCookie.action?termId=200100000000&cityId=1001
## 3.parameters(Multirow):
## termId=200100000000
## cityId=1001
## 4.actionAndMethod:com.sunrise.mss.action.CookieAction.addCookie()
## 5.executeTime:735ms
## 6.configFilePath:file:/E:/Workspaces/MyEclipse%209/web-terminal/WebRoot/WEB-INF/classes/struts.xml
## 7.configFileLineNumber:28
## 8.actionReturnResult:success
## 9.actionReturnView:{location=index.jsp}
## 10.sessionInfo:
## globalData=
===========================================================================
[SessionID: 666d83-1308e058034-ac10fb2fedbb54817d2a1e589c9131a5]
[termId: 200100000000]
===========================================================================
cityId[STRING] = 1001
===========================================================================
########################################struts2 debug info end##########################################
[ERROR][http-8080-Processor24][2011/06/14 19:59:52 015] Servlet.service() for servlet default threw exception [org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:253)]
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
该异常产生的原因是:在使用POST方式提交的时候,没有传递参数
感谢iteye网友thc1987 和yuanjzh 提出该异常,该异常已经解决,会在下个版本修正,非常感谢
修正版本发布了,v1.1
37 楼 yuanjzh 2011-06-15 16:43
看你的异步提交是不是调用的struts2的action,只有调用struts2的action才能拦截到
这个bug让我不能在项目中使用
36 楼 四个石头 2011-06-15 16:28
看你的异步提交是不是调用的struts2的action,只有调用struts2的action才能拦截到
35 楼 harvey.sun 2011-06-15 16:24
34 楼 harvey.sun 2011-06-15 16:22
33 楼 cooltange 2011-06-15 15:36
32 楼 yuanjzh 2011-06-15 11:02
## 1.accessMethod:GET
## 2.debugUrl:http://localhost:8080/addCookie.action?termId=200100000000&cityId=1001
## 3.parameters(Multirow):
## termId=200100000000
## cityId=1001
## 4.actionAndMethod:com.sunrise.mss.action.CookieAction.addCookie()
## 5.executeTime:735ms
## 6.configFilePath:file:/E:/Workspaces/MyEclipse%209/web-terminal/WebRoot/WEB-INF/classes/struts.xml
## 7.configFileLineNumber:28
## 8.actionReturnResult:success
## 9.actionReturnView:{location=index.jsp}
## 10.sessionInfo:
## globalData=
===========================================================================
[SessionID: 666d83-1308e058034-ac10fb2fedbb54817d2a1e589c9131a5]
[termId: 200100000000]
===========================================================================
cityId[STRING] = 1001
===========================================================================
########################################struts2 debug info end##########################################
[ERROR][http-8080-Processor24][2011/06/14 19:59:52 015] Servlet.service() for servlet default threw exception [org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:253)]
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
该异常产生的原因是:在使用POST方式提交的时候,没有传递参数
感谢iteye网友thc1987 和yuanjzh 提出该异常,该异常已经解决,会在下个版本修正,非常感谢
请问下个版本什么时候可以下载?
31 楼 四个石头 2011-06-15 09:01
## 1.accessMethod:GET
## 2.debugUrl:http://localhost:8080/addCookie.action?termId=200100000000&cityId=1001
## 3.parameters(Multirow):
## termId=200100000000
## cityId=1001
## 4.actionAndMethod:com.sunrise.mss.action.CookieAction.addCookie()
## 5.executeTime:735ms
## 6.configFilePath:file:/E:/Workspaces/MyEclipse%209/web-terminal/WebRoot/WEB-INF/classes/struts.xml
## 7.configFileLineNumber:28
## 8.actionReturnResult:success
## 9.actionReturnView:{location=index.jsp}
## 10.sessionInfo:
## globalData=
===========================================================================
[SessionID: 666d83-1308e058034-ac10fb2fedbb54817d2a1e589c9131a5]
[termId: 200100000000]
===========================================================================
cityId[STRING] = 1001
===========================================================================
########################################struts2 debug info end##########################################
[ERROR][http-8080-Processor24][2011/06/14 19:59:52 015] Servlet.service() for servlet default threw exception [org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:253)]
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
该异常产生的原因是:在使用POST方式提交的时候,没有传递参数
感谢iteye网友thc1987 和yuanjzh 提出该异常,该异常已经解决,会在下个版本修正,非常感谢
30 楼 yuanjzh 2011-06-14 20:04
29 楼 smartlan 2011-06-14 17:42
28 楼 四个石头 2011-06-14 12:06
哥们,推荐你使用jRebel和jRebel for Eclipse插件,相当强悍。
1.增加或者修改一个URL映射,不需要重新启动服务器
2.增加或者修改方法名和方法里面的内容,不需要重新启动服务器
3.增加一个类,不需要重新启动服务器
但是内存要翻倍不止啊,这一点比较不爽的。
有时间我会研究一下,弄个springMVC的,看来现在用springMVC的人不少呀
27 楼 存在就有理由 2011-06-14 11:53
哥们,推荐你使用jRebel和jRebel for Eclipse插件,相当强悍。
1.增加或者修改一个URL映射,不需要重新启动服务器
2.增加或者修改方法名和方法里面的内容,不需要重新启动服务器
3.增加一个类,不需要重新启动服务器
但是内存要翻倍不止啊,这一点比较不爽的。
26 楼 四个石头 2011-06-14 10:23
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:881)
at java.lang.StringBuffer.substring(StringBuffer.java:416)
at com.configdebug.interceptor.ConfigDebugInterceptor.getParameters(ConfigDebugInterceptor.java:223)
at com.configdebug.interceptor.ConfigDebugInterceptor.intercept(ConfigDebugInterceptor.java:83)
貌似是不支持我这个版本了.
这个不是版本的问题,是传的参数的问题,可能是我没有测试到这种情况,你能不能把详细的信息发一下,例如,你点击提交时,携带了哪些参数
25 楼 thc1987 2011-06-14 10:19
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:881)
at java.lang.StringBuffer.substring(StringBuffer.java:416)
at com.configdebug.interceptor.ConfigDebugInterceptor.getParameters(ConfigDebugInterceptor.java:223)
at com.configdebug.interceptor.ConfigDebugInterceptor.intercept(ConfigDebugInterceptor.java:83)
貌似是不支持我这个版本了.
24 楼 228939139 2011-06-14 09:50
23 楼 四个石头 2011-06-14 09:23
可否在后续版本中增加一种配置,就是可控制拦截某些action方法调用,而不是全部。
比如通配拦截:
*Add()
*Modify()
或者
doAdd*()
doModify*()
类似这个意思。
谢谢wtslh提的意见,可以考虑加上这种配置。就怕配置项太多,会让使用变得复杂化,其实简单是最好的