77范文网 - 专业文章范例文档资料分享平台

王鸿百学年论文(3)

来源:网络收集 时间:2019-02-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

1、句子前有空格符

图1-2

2、综合所有文法的句子

图1-3

3不以#号结束的句子

图1-4

4、加减按从左至右

图1-5

5、先乘后减

图1-6

6、有括号的先算括号里面的

图1-7

7、乘方的优先级大于除法的

图1-8

8、先乘方后乘除

图1-9 9、乘除按从左至右法则

图1-10

10、输入串含有不是指定文法的句子

图1-11

测试人姓名 1 小鸿 测试时间 输入 2012-06-25 输出 错误个数 3 序号 路径 在句子前面输入一个空格符号 实际结果 您输入的表达式(6-3+5^2*2/10)/2#有误 (6-3+5^2*2/10)/2# 4.0 2 3 4 5 6 7 8 9 10 11 12 一个包含所有文法的句子 不以#号结束的句子 先减后加 先加后减 先乘后减 有括号先算括号里面的 乘方的优先级最大 先乘方再从左至右 先除后乘 先乘后除 输入串含有不是指定文法的句子 (6-3+5^2*2/10)/2# 4.0 3+4+5 6-3+2# 3+4-2# 6-3*2# (6-3)*2# 25/5^2# 3*2/6^2# 25/5*2# 3*2/2# {3+2-[2*2-(3-2)]}# 12.0 5.0 5.0 0.0 6.0 1.0 0.1666667 10.0 3.0 2.0 4.0 您输入的表达式3+4+5有误 5.0 5.0 0.0 6.0 1.0 0.1666667 10.0 3.0 您输入的表达式{3+2-[2*2-(3-2)]}#有误 表1-2

六、参考文献:

1、黄贤英,刘贞 ,刘全利;“编译原理”课程的地位及教改思路[J];重庆科技学院学报(社会科学版);2005年03期

2、张素琴,吕映芝,蒋维杜,戴桂兰; 《编译原理》(第二版);清华大学出版社;2009年5月第12次印刷

3、王雷,刘志成,周晶 ;编译原理课程设计; 2005

4、期刊论文 浅谈\编译原理\课程教学 - 广东工业大学学报(社会科学版)2005,5 附加代码:

package com.op.core;

import java.math.BigDecimal; import java.util.Stack;

import com.op.util.StringUtil; import com.op.util.IOUtil;

public class OperatorPriority {

private Stack optrStack; //符号栈 private Stack opndStack; //操作数栈

private String input; //键盘输入字符串 /***

* 构造函数 * @param input */

public OperatorPriority(String input) { super();

optrStack = new Stack(); opndStack = new Stack(); optrStack.push('#'); this.input = input; } /***

* 操作两个数

* @param a 操作数1 * @param b 操作数2 * @param op 操作符 * @return 运算结果 */

public float operateTwoNum(float a, float b, char op) { BigDecimal da = new BigDecimal(Float.toString(a)); BigDecimal db = new BigDecimal(Float.toString(b)); switch (op) { case '*':

return da.multiply(db).floatValue(); case '+':

return da.add(db).floatValue(); case '-':

return db.subtract(da).floatValue(); case '/': return db.divide(da,7,BigDecimal.ROUND_HALF_UP).floatValue(); //除不

尽的情况取7位精确值。 case '^':

return db.pow((int)a).floatValue(); }

return 0; } /***

* 判断是否为操作符

* @param ch 被判断字符 * @return 布尔值 */

public boolean isOperator(char ch) {

if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '(' || ch == ')' || ch == '#'||ch=='^') return true; else

return false; } /***

* 扫描字符串,判断是否对应文法,并计算出结果 * @return 计算结果

* @throws Exception 如果不符合文法,或者除数等于0,都将抛出异常 */

public String scanner() throws Exception { int postion = 0; // 字符串上指示的指针 char operator = 0; // 操作符 float a = 0, b = 0; // 操作数

String[] exp = StringUtil.splitExp(input); while (true) {

// 判断是否为运算符

if (exp[postion].length()==1&&isOperator(exp[postion].charAt(0))) { // 需要进行运算符的比较 if (!optrStack.isEmpty()) {

if (PriorityTable.getPriority(optrStack.peek().charValue(), exp[postion].charAt(0)) == '<') optrStack.push(exp[postion].charAt(0));

else if (PriorityTable.getPriority(optrStack.peek() .charValue(), exp[postion].charAt(0)) == '>') { a = opndStack.pop();

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库王鸿百学年论文(3)在线全文阅读。

王鸿百学年论文(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/477755.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: