形式系统

计算机专业教学
posts - 48, comments - 150, trackbacks - 0, articles - 10
  教师博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

实验二 自顶向下语法分析

Posted on 2006-04-24 22:32 形式系统 阅读(1020) 评论(0)  编辑 收藏 引用 网摘 所属分类: 编译原理

实验二    自顶向下语法分析

 

 

1、      目的

 

在词法分析的基础上,熟悉自顶向下的语法分析方法。培养软件设计及编程能力。

 

2、      内容

(1)         定义文法    

<PR><DSS><ESS>

<DSS>var <ID><IDS>;<DSS>|ε   '数据定义语句

<IDS>,<ID><IDS>|ε

<ESS><ES>;<ESS>|ε

<ES><WS>|<IFS>|<AS>|<OS>|<IS>

<WS>while "(" <RE> ")" { <ESS> }

<IFS>if "(" <RE> ")" { <ESS> } else { <ESS> }

<AS><ID>=<E>;

<RE><E><ROp><E>

<ROp><|>|==|<=|>=|!=

<E><T><E1>

<E1><Op1><T><E1>|ε

<T><F><T1>

<T1><Op2><F><T1>|ε

<F>(E)|<ID>|<Digits>

<OS>cout<< <E>;            //输出的是表达式

<IS>cin>> <ID>;             //输入的一定是变量

 

   非终结符说明:

符号

定义

符号

定义

符号

定义

<PR>

程序

<DSS>

定义语句集

<ESS>

可执行语句集

<DS>

定义语句

<IDS>

变量列表

<ID>

标识示符(变量)

<ES>

可执行语句

<WS>

While 语句

<IFS>

If 语句

<AS>

赋值语句

<Cout>

输出设备

<Cin>

输入设备

<RE>

关系表达式

<Digits>

数字 ( 实数 )

<E>

算术表达式

<T1>

优先级为 1 的数据项

<T2>

优先级为 2 的数据项

<F>

优先级为 3 的数据项

   

(2)         根据上述文法,编程访问词法分析程序所生成得中间文件,按下列所定义的文法,构造递归下降子程序。其流程如下:


t.gif


说明:具体实现时也可先一次性读到缓冲区,每次需要单词时次从缓冲区中读。

 

 

(1)         测试,分别构造正确与非正确的源程序进行测试。

 

列出测试用例,如:

         正确实例: while(ip<>0) {}

         错误实例: while(ip<>=){}
   

  实验报告要求内容:        

         (1)文法定义说明
(2)部分代码
(3)流程图
(3)测试用例


只有注册用户登录后才能发表评论。