下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5 实验结果与分析测试文本 test.cint a10;int min (int a,int low,void aint k; int x; int i;k=low;while(i<lowa0=1;if(k>0x=1;return x;测试结果成功实现语法分析6 小结实现了对词法分析程通过这次实验,我加深了对语法分析的认识,掌握了递归向下分析方法, 序所提供的 Token 序列的语法检查和结构分析。BNF 化为 EBNF ,运用递归向下的方法语法分析程序编写相对于词法分析要困难得多,首先要将 进行编写, 构造出语法树,判别语法分析过程中是否出错以及出错位置和错误类型。虽然TreeN
2、ode 数据EBNF 转换成代码的过程原理比较简单,但是操作起来比较繁琐。一开始我对结构也不是很理解,通过阅读书后的tiny 语言语法分析源代码,我弄懂了语法树的输出。附录(源代码)Main.c#include "global. = TRUE ;int Error = FALSE ;int main(voidTreeNode * syntaxTree ;char pgm120; * 用于存储文件名 *printf (" 输入文件名: "scanf("%s" ,pgm;if (strchr (pgm, '.' = NULLstrc
3、at(pgm,".c" ;source = fopen(pgm,"r" ;if ( source= NULLfprintf ( stderr ,"File %s not foundn" ,pgm;exit(1;listing = stdout; * listing 在屏幕上输出 * fprintf(listing,"nC COMPILATION: %sn",pgm; while (getToken(!=ENDFILE;syntaxTree = parse(;printTree(syntaxTree;fclose(s
4、ource;return 0;Parse.; * *TreeNode * parse(void;TreeNode * declaration_list (void;TreeNode * declaration ( void;TreeNode * params (void ;TreeNode * param_list (TreeNode * k;TreeNode * param (TreeNode * k;TreeNode * compound_stmt (void;TreeNode * local_declaration (void;TreeNode * statement_list(void
5、;TreeNode * statement(void;TreeNode * expression_stmt(void;TreeNode * selection_stmt(void;TreeNode * iteration_stmt (void;TreeNode * return_stmt (void;TreeNode * expression(void;TreeNode * var (void;TreeNode * simple_expression(TreeNode * k;TreeNode * additive_expression(TreeNode * k;TreeNode * term
6、 ( TreeNode * k;TreeNode * factor (TreeNode * k;TreeNode * call(TreeNode * k;TreeNode * args(void;static void syntaxError (char * messagefprintf (listing,"n>>> " ;fprintf (listing,"Syntax error at line %d: %s" ,lineno,message;Error = TRUE ;static void match ( TokenType e
7、xpectedif ( token = expectedtoken = getToken (;elsesyntaxError ("unexpected token -> " ;printToken (token,tokenString ;fprintf (listing," " ;TreeNode * parse(voidTreeNode * t;token = getToken (;t = declaration_list (; if(token!=ENDFILEsyntaxError ("endfile_error" ;re
8、turn t;TreeNode * declaration_list (voidTreeNode * t = declaration (;TreeNode * p =t;程序以变量声明开始while(token!=INT &&( token!=VOID &&( token!= ENDFILE syntaxError (" 开始不是类型声明 "token = getToken (; if(token=ENDFILEbreak ;while(token=INT |token = VOIDTreeNode * q;q = declaration (
9、;if ( q!= NULLif (t=NULLt=p=q;elsep->sibling=q;p=q;match( ENDFILE ;return t;TreeNode * declaration ( voidTreeNode * t = NULL ;TreeNode * p = NULL ;TreeNode * q = NULL ;TreeNode * s = NULL ;TreeNode * a = NULL ;if ( token= INTp=newNode ( IntK ;match(INT ;else if ( token= VOIDp=newNode ( VoidK ;mat
10、ch(VOID ;elsesyntaxError ("类型错误 "if(p!=NULL && token= IDq = newNode(IdK ;q->attr .name = copyString (tokenString ;match(ID ;if ( token= LPARENt = newNode(FunK ;t->child0 = p; p 是 t 子节点t->child1 = q;match( LPAREN ;t->child2 = params (;match(RPAREN ;t->child3 = compoun
11、d_stmt (;elseif ( token= LBRACKETt = newNode(Var_DeclK ;a = newNode(Arry_DeclK ;t->child0 = p; p 是 t 子节点t->child1 = a;match( LBRACKET ;s = newNode( ConstK ;s-> attr .val = atoi(tokenString ; match(NUM ;a->child0=q;a->child1=s; match(RBRACKET ;match(SEMI ;else if ( token= SEMIt = newNo
12、de(Var_DeclK ;t->child0 = p;t->child1 = q;match(SEMI ;elsesyntaxError ("" ;elsesyntaxError ("" ;return t;TreeNode * params (voidTreeNode * t = newNode(ParamsK ;TreeNode * p = NULL ;if ( token= VOIDp = newNode(VoidK ; match(VOID ;if ( token= RPARENif(t!=NULLt->child0 = p;
13、else参数列表为 (void id, t->child0 = param_list(p;申else if ( 有限公司其前身为 ,是一家以t->child0 贵公司的一些省级认证荣誉名称,如: XX 省 XX 骨 干企业等),被(贵公司所在县名称)政府定为重点扶持发展的(贵 公司所属行业)龙头企业。企业注册资金 X万元,现有总资产为 X 万 元,其中:固定资产净值 X万元。企业基地面积 X 亩,其中:厂区面 积达 X平方米,厂房(车间)、仓库、住房等建筑面积为 X 平方米。 年产量 X吨,公司现有员工 X 人,其中:管理人员 X人,工程技术人 员 X 人,一线生产工人 X人。 X
14、年度的主营业务收入 X万元TreeNode * t目前, 公司通过多年的发展和市场运作,不但已构建了一个良好的产 品销售架构,建立了一些互信基础好、辐射作用大的销售网络和办事 机构,培养和煅造了一支业务精干、经验丰富、事业心责任感强的产 品宣传推介和销售队伍。在 市各县(市)、区设立了销售门市,与深 圳、惠州、河源、增城、广州、梅州、汕头、揭阳、汕尾、东莞、江 西赣州、福建龙岩等省市和地区较具消费能力的市场与各中小型酒 店、宾馆建立了长期友好的合作伙伴关系,他们在销售量方面都有极 大的潜力。由此可见,产品的销售渠道是畅通的。X年我公司新建一处制酒厂区,计划建设项目所要达到产品品质功能、 质量指
15、标、年生产能力为 5000T 产业化规模时,新增投资规模为 万 元,其中:生产车间和仓库等设施建筑面积为没有要传给 param的 VoidK ,所以将 k设为 NULL 万元;试验费 万元;其它费用(含不可 预见费) 万元。 年计划投入 万元,以购进技术、建设厂房(车 间)、仓库等基础设施、购置设备;年上半年投入 * q 万元(不含启用的原有固定资产和铺底流动资 金),完善项目实施全部所必须达到的要求,进行产品试制及产品鉴match(COMMA;X公司 项目(贵公司所做项目名称),是在该厂多年开发、研制 和生产(贵公司产品注册商标名称)系列产品,并获得企业特殊配方 和专有技术的基础上,又一次投入技术
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年05月北京2024届中国民生银行资产管理部毕业生“未来银行家”暑期管培生校园招考笔试历年参考题库附带答案详解
- 2025年度房地产开发项目承包商资金保障担保合同3篇
- 2025年度拆迁安置补偿合同模板(含房屋买卖)4篇
- 2025年度厂房用电安全改造安装合同范本4篇
- 2025年度城市地下综合管廊建设场地平整与施工合同4篇
- 2025年度茶园场地承包合同范本-茶树种植基地合作经营4篇
- 2024年04月江苏交通银行信用卡中心苏州分中心校园招考笔试历年参考题库附带答案详解
- 临时暑期工劳动协议格式2024年版B版
- 2025年度茶园采摘加工一体化项目合作协议4篇
- 2025年度建筑材料运输安全管理与培训合同3篇
- 2024人教新版七年级上册英语单词英译汉默写表
- 《向心力》参考课件4
- 2024至2030年中国膨润土行业投资战略分析及发展前景研究报告
- 【地理】地图的选择和应用(分层练) 2024-2025学年七年级地理上册同步备课系列(人教版)
- 2024年深圳中考数学真题及答案
- 土方转运合同协议书
- Module 3 Unit 1 Point to the door(教学设计)-2024-2025学年外研版(三起)英语三年级上册
- 智能交通信号灯安装合同样本
- 安全生产法律法规清单(2024年5月版)
- 江苏省连云港市2023-2024学年八年级下学期期末道德与法治试卷(含答案解析)
- 2024年大学试题(宗教学)-佛教文化笔试考试历年高频考点试题摘选含答案
评论
0/150
提交评论