云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 词法分析器-计算器-设计及实现实验报告

词法分析器-计算器-设计及实现实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/3 16:50:07

辅导教师 张静 成绩

实验日期 实验时间 1实验名称 计算器的设计与实现 2、实验目的 掌握自上而下语法分析方法、自下而上语法分析方法 3、实验要求 (1)实验内容 设计及实现计算表达式的计算器。 表达式中可包含+、-、*、/、(、)等运算符。 (2)实验要求: 对已给的一个二元式形式表达式,能够检查有无语法错误。并指定出错位置。 将表达式的语法树输出(或将语法分析过程输出)。 4、实验原理 根据算符优先分析思想实现语法分析程序。 5、实验步骤 (1)根据文法构造语法分析表。 (2)编写总控程序实现语法分析。 6、算符优先分析表及语法分析程序 算符优先分析表: 语法分析程序: #include #include #define MaxSize 99 void translate(char str[],char exp[]) /*将算术表达式转换成后缀表达式*/ { struct { char data[MaxSize]; int top; /*top为栈顶*/ }op; /*定义一个含data和top的结构体*/ char ch; int i = 0,t = 0; op.top = -1; ch = str[i]; /*将str的每一个数转换成ch*/ i++; while(ch != '\\0') /*ch对应不同的符号的时候对应的转换情况*/ { switch(ch) { case '(': /*当是的时候将此括号存入栈op*/ op.top++;op.data[op.top]=ch; break; case ')': while(op.data[op.top] != '(') /*括号内的转换优先级最高故先提 取表达式*/ { exp[t]=op.data[op.top]; op.top--; t++; } op.top--; break; case '+': case '-': while(op.top != -1&&op.data[op.top] { exp[t] = op.data[op.top]; op.top--; t++; } op.top++; /*恢复可插入位置*/ != '(')

op.data[op.top] = ch; break; case '*': case '/': while(op.top == '/'||op.top == '*') /*优先级*/ { exp[t] = op.data[op.top]; op.top--; t++; } op.top++; op.data[op.top] = ch; break; case ' ': /*忽略空格作*/ break; default: while(ch >= '0'&&ch <= '9') { exp[t] = ch;t++; ch = str[i];i++; } 排除误操

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

辅导教师 张静 成绩 实验日期 实验时间 1实验名称 计算器的设计与实现 2、实验目的 掌握自上而下语法分析方法、自下而上语法分析方法 3、实验要求 (1)实验内容 设计及实现计算表达式的计算器。 表达式中可包含+、-、*、/、(、)等运算符。 (2)实验要求: 对已给的一个二元式形式表达式,能够检查有无语法错误。并指定出错位置。 将表达式的语法树输出(或将语法分析过程输出)。 4、实验原理 根据算符优先分析思想实现语法分析程序。 5、实验步骤 (1)根据文法构造语法分析表。 (2)编写总控程序实现语法分析。 6、算符优先分析表及语法分析程序 算符优先分析表: 语法分析程序: #include #include #define MaxSize

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com