资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
5 实验结果与分析测试文本test.cint a10;int min(int a,int low,void aint k; int x; int i;k=low;while(i0x=1;return x;测试结果成功实现语法分析6 小结通过这次实验,我加深了对语法分析的认识,掌握了递归向下分析方法,实现了对词法分析程序所提供的Token序列的语法检查和结构分析。 语法分析程序编写相对于词法分析要困难得多,首先要将BNF化为EBNF,运用递归向下的方法进行编写,构造出语法树,判别语法分析过程中是否出错以及出错位置和错误类型。虽然EBNF转换成代码的过程原理比较简单,但是操作起来比较繁琐。一开始我对TreeNode数据结构也不是很理解,通过阅读书后的tiny语言语法分析源代码,我弄懂了语法树的输出。附录(源代码)Main.c#include global. = TRUE;int Error = FALSE;int main(void TreeNode * syntaxTree;char pgm120; *用于存储文件名*printf(输入文件名:;scanf(%s,pgm;if (strchr (pgm, . = NULLstrcat(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(source;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;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(TreeNode * k;TreeNode * factor(TreeNode * k; TreeNode * call(TreeNode * k;TreeNode * args(void;static void syntaxError(char * message fprintf(listing,n ;fprintf(listing,Syntax error at line %d: %s,lineno,message;Error = TRUE;static void match(TokenType expected if (token = expected token = getToken(;else syntaxError(unexpected token - ; printToken(token,tokenString;fprintf(listing, ;TreeNode * parse(voidTreeNode * t;token = getToken(;t = declaration_list(;if(token!=ENDFILE syntaxError(endfile_error;return 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(;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;match(VOID;else syntaxError(类型错误;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 = compound_stmt(;else if (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 = newNode(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;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年度的主营业务收入X万元TreeNode * t 目前, 公司通过多年的发展和市场运作,不但已构建了一个良好的产品销售架构,建立了一些互信基础好、辐射作用大的销售网络和办事机构,培养和煅造了一支业务精干、经验丰富、事业心责任感强的产品宣传推介和销售队伍。在 市各县(市)、区设立了销售门市,与深圳、惠州、河源、增城、广州、梅州、汕头、揭阳、汕尾、东莞、江西赣州、福建龙岩等省市和地区较具消费能力的市场与各中小型酒店、宾馆建立了长期友好的合作伙伴关系,他们在销售量方面都有极大的潜力。由此可见,产品的销售渠道是畅通的。X年我公司新建一处制酒厂区,计划建设项目所要达到产品品质功能、质量指标、年生产能力为5000T产业化规模时,新增投资规模为 万元,其中:生产车间和仓库等设施建筑面积为没有要传给param的VoidK,所以将k设为NULL 万元;试验费 万元;其它费用(含不可预见费) 万元。 年计划投入 万元,以购进技术、建设厂房(车间)、仓库等基础设施、购置设备;年上半年投入* q 万元(不含启用的原有固定资产和铺底流动资金),完善项目实施全部所必须达到的要求,进行产品试制及产品鉴定, match(COMMA;X公司 项目(贵公司所做项目名称),是在该厂多年开发、研制和生产(贵公司产品注册商标名称)系列产品,并获得企业特殊配方和专有技术的基础上,又一次投入技术创新资金促进企业技术进步,增强企业活力和市场竞争能力的优质项目。我公司积极响应市委、市府提出的“三名城一基地”的建设,坚持走“绿色崛起”之路,在县委、县府积极有力的支持下(贵公司所在地政府的一些口号),于X年 月成立 公司,按“公司+基地+农户if、 基地。 基地面积约 亩, 种植基地约 亩。先后与 (贵公司合作高校、研究所等名称)p=q;“ , (贵公司一些特色产品名称)”Xp-sibling = q5p = q;公司return t;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号