编译原理表达式分析.docVIP

  • 3
  • 0
  • 约1.25万字
  • 约 4页
  • 2016-07-02 发布于重庆
  • 举报
编译原理表达式分析

一、实验目的: 熟悉并设计一个表达式的语法分析器 二、相关知识: 形式语言基础及其文法运算 语法分析原理及4种常用的语法分析方法 其中: 四种算法为 (1)设计算术表达式的递归下降子程序分析算法 三、实验内容: 设计表达式的语法语法分析器算法 编写代码并上机调试运行通过 要求: 输入------------ 表达式 输出------------ 表达式语法是否正确 四、概要设计 1. 算术表达式的递归下降子程序分析算法 (1)算术表达式文法 G(E): E ? E ω0 T | T T ? T ω1 F | F F ? i | (E) (2)文法变换:G’(E) E ? T {ω0 T} T ? F {ω1 F} F ? i | (E) (3) 递归下降子程序框图: E: 入口 T: 入口 T F n ω0? n ω1? y y 出口 出口 read(w) read(w) T F 开始 F: 入口 主程序:Z ?E 开始 ( ? n i ? n err read(w) read(w) E E err n # ? err n ) ? y y read(w) 结束 结束 出口 (4)数据结构 char exp[50]; //算术表达式区 int i=0; int err=0 ; //err输出指示 char w; //当前单词 (5)源程序清单: #include stdio.h #include stdlib.h void E(); void T(); void F(); int Print(); char exp[50];//算术表达式区 int i=0; int err=0; char w;//当前单词 int Print() { printf(err) ; err=1; return err; } void F() { if((w=aw=z)||(w=0w=9)) { w=exp[i++];//read(w) } else if(w==() { w=exp[i++]; E(); if(w!=)) { if(!err) Print(); } else w=exp[i++];//read(w) } else { if(!

文档评论(0)

1亿VIP精品文档

相关文档