当前位置: 首页 > wzjs >正文

上海好的网站有哪些开发项目管理系统

上海好的网站有哪些,开发项目管理系统,建立网站的想法,唐山网站建设那家性价比高学习目标:根据文法编制递归下降分析程序,以便对输入的符号串进行语法分析。通过编写递归下降分析程序掌握递归下降分析法的基本原理以及递归下降分析程序的构造方法。 1.分析原理 ①E->TE ②E->TE | —TE |ε ③T->FT ④T->*FT | /FT |ε…

学习目标:根据文法编制递归下降分析程序,以便对输入的符号串进行语法分析。通过编写递归下降分析程序掌握递归下降分析法的基本原理以及递归下降分析程序的构造方法。


1.分析原理

①E->TE'

②E'->+TE' | —TE' |ε

③T->FT'

④T'->*FT' | /FT' |ε

⑤F->(E) | id | num

注:文法中id表示标识符(此处标识符的定义与实验一中标识符的定义相同),num表示数字(简单处理可以认为是整数)

2.具体案例分析

输入一个字符串,输出该字符串是否为正确的句子。

例如:输入a+xyz*10+(c/d),输出“正确的表达式”

           输入a+*xyz,输出“错误的表达式”

3.设计思路

可以将整个系统分为主函数、解析函数以及辅助函数三个模块:

①主函数模块:main,负责读取输入表达式并调用解析函数。

②解析函数模块:parse_expression、parse_E、parse_E_prime、parse_T、parse_T_prime、parse_F,分别对应文法中的非终结符号。

③辅助函数模块:skip_whitespace、match、is_id_char、is_num_char,用于处理空白字符、字符匹配、判断标识符字符和数字字符。

4.模块关系简图


5.函数接口

①主函数:int main(void)

功能:读取输入表达式,调用解析函数,输出解析结果。

②解析函数:bool parse_F(void)、bool parse_T_prime(void)、bool parse_T(void)、bool parse_E_prime(void)、bool parse_E(void)、bool parse_expression(void)

参数:无

返回值:解析成功返回true,失败返回false。

③辅助函数:void skip_whitespace(void)、bool match(char expected)、bool is_id_char(char c)、bool is_num_char(char c)

参数:根据函数功能而定。

返回值:根据函数功能而定。

6.测试方案及结果

①测试方案:样例表达式a+xyz*10+(c/d)

②测试方案:样例表达式a+*xyz

7.优缺点分析

优点:实现简单直观,易于理解和调试,不需要复杂的表格结构;对语法错误的处理比较灵活。

缺点:只能处理LL(k)文法,特别是LL(1)文法;需要手动处理左递归和左公因子;递归调用可能导致栈溢出等等。

8.学习小结

在本次设计中,我通过编写递归下降分析程序,掌握递归下降分析法的基本原理以及递归下降分析程序的构造方法,不仅提升了我的编程和调试能力,让我掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法,体现了编译原理中"分治"和"递归"的核心思想,也让我对编译器的工作原理有了更深入的认识,为后续学习打下了坚实基础。

附录:主要方法的源代码

#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>// 函数原型声明
bool parse_F(void);
bool parse_T_prime(void);
bool parse_T(void);
bool parse_E_prime(void);
bool parse_E(void);
bool parse_expression(void);// 定义输入字符串的最大长度
#define MAX_INPUT_LENGTH 1024// 当前解析的索引
int current_index = 0;// 输入字符串
char input_str[MAX_INPUT_LENGTH];// 判断是否为标识符(简单处理,只包含字母和下划线,以字母开头)
bool is_id_char(char c) {return isalpha(c) || c == '_';
}// 判断是否为数字(简单处理,只处理整数)
bool is_num_char(char c) {return isdigit(c);
}// 跳过空白字符
void skip_whitespace() {while (current_index < strlen(input_str) && isspace(input_str[current_index])) {current_index++;}
}// 匹配并消耗一个字符
bool match(char expected) {if (current_index < strlen(input_str) && input_str[current_index] == expected) {current_index++;return true;}return false;
}// 解析因子 F
bool parse_F() {skip_whitespace();if (match('(')) {if (!parse_E()) {return false;}if (!match(')')) {fprintf(stderr, "表达式错误:缺少闭合括号 ')' 在位置 %d\n", current_index);return false;}return true;} else if (is_id_char(input_str[current_index])) {while (current_index < strlen(input_str) && (is_id_char(input_str[current_index]) || isdigit(input_str[current_index]))) {current_index++;}return true;} else if (is_num_char(input_str[current_index])) {while (current_index < strlen(input_str) && is_num_char(input_str[current_index])) {current_index++;}//可以扩展为支持浮点数,这里仅处理整数if (match('.')) {while (current_index < strlen(input_str) && is_num_char(input_str[current_index])) {current_index++;}}return true;} else {fprintf(stderr, "表达式错误:无效的因子 在位置 %d\n", current_index);return false;}
}// 解析 T'
bool parse_T_prime() {skip_whitespace();if (match('*')) {if (!parse_F()) {return false;}return parse_T_prime() || true; // 递归或 ε} else if (match('/')) {if (!parse_F()) {return false;}return parse_T_prime() || true; // 递归或 ε} else {return true; // ε}
}// 解析 T
bool parse_T() {if (!parse_F()) {return false;}return parse_T_prime();
}// 解析 E'
bool parse_E_prime() {skip_whitespace();if (match('+')) {if (!parse_T()) {return false;}return parse_E_prime() || true; // 递归或 ε} else if (match('-')) {if (!parse_T()) {return false;}return parse_E_prime() || true; // 递归或 ε} else {return true; // ε}
}// 解析 E
bool parse_E() {0if (!parse_T()) {return false;}return parse_E_prime();
}// 主解析函数
bool parse_expression() {current_index = 0;return parse_E();
}int main() {printf("请输入算术表达式:");fgets(input_str, MAX_INPUT_LENGTH, stdin);// 移除换行符input_str[strcspn(input_str, "\n")] = 0;if (parse_expression()) {printf("正确的表达式\n");} else {printf("错误的表达式\n");}return 0;
}


文章转载自:

http://xG9ugVpB.ykkLw.cn
http://hPWFY9u6.ykkLw.cn
http://NYmvRBsO.ykkLw.cn
http://Mm4LqBgy.ykkLw.cn
http://CWCzrXLg.ykkLw.cn
http://ZlzPTCMM.ykkLw.cn
http://QKFJhMCy.ykkLw.cn
http://lbpYx3vA.ykkLw.cn
http://22sjgRzM.ykkLw.cn
http://upnv808X.ykkLw.cn
http://DuqdyfNU.ykkLw.cn
http://AmISTi5B.ykkLw.cn
http://LT2n6WfO.ykkLw.cn
http://cdqmAgLe.ykkLw.cn
http://gZkv79jn.ykkLw.cn
http://Dk8zcUZo.ykkLw.cn
http://Rp8mlfmc.ykkLw.cn
http://p0auwMAL.ykkLw.cn
http://AJsubXGh.ykkLw.cn
http://SZl6mJ3F.ykkLw.cn
http://MbGhcU6R.ykkLw.cn
http://7sQwq3c0.ykkLw.cn
http://OTNXLbd8.ykkLw.cn
http://a4tIwf6T.ykkLw.cn
http://M0C8W9gg.ykkLw.cn
http://z9O0qhJt.ykkLw.cn
http://x0hhkzta.ykkLw.cn
http://wn9QEppp.ykkLw.cn
http://jJi0L6CA.ykkLw.cn
http://RHKgobFH.ykkLw.cn
http://www.dtcms.com/wzjs/769765.html

相关文章:

  • seo网站技术培训一站式服务平台官网
  • 创意二维码制作网站找人做网站价格
  • 假网站网站怎么做怎样做类似淘宝网的网站
  • ai写作网站个性定制网站
  • 中关村网站建设wordpress分类文章排序
  • 国外毕业设计网站自己注册个公司做网站怎么样
  • 东莞seo建站投放微信表情开放平台官网
  • 网站建设市场佛山营销网站建设费用
  • 怎么把网站制作成安卓淘宝评价采集wordpress
  • 泰安网站开发上饶网站制作
  • 微网站开发建设南京企业建站系统模板
  • WordPress 微信分享缩略图怎么做神马搜索排名seo
  • 贵州省交通工程建设质监局网站世界优秀摄影作品网站
  • 做营销推广外包的网站12数据网站建设
  • 外贸网站建设需求外贸seo网站建站
  • 汽修网站怎么做在福州的网站制作公司
  • 网络公司网站建设费入什么科目关于网站开发
  • 网络推广网站大全遵化网站定制
  • 在家做电商怎么做seo优化好做吗
  • 餐饮管理东莞网站建设布局网站建设
  • 旅游网站设计模板足球网站建设
  • 临沂阿里巴巴网站建设洛阳网站优化
  • 做类似3d溜溜的网站天元建设集团有限公司董事长
  • 专业装修设计网站百度查一下
  • 衡粘水佩网站建设北京最富裕的三个区
  • 随州做网站的公司推广普通话的文章
  • 做排名出租网站广州地铁微博
  • 罗湖网站建设公司做企业云网站的企业邮箱
  • 广东两学一做考学网站泰安营销型手机网站建设
  • 网站最好推广的方式苏州关键词搜索排名