c语言rxtern的作用,编译原理(语法分析程序设计).docx
发布日期:2022-02-03 04:38:37 浏览次数:11 分类:技术文章

本文共 1952 字,大约阅读时间需要 6 分钟。

一、实验内容和目的

已知待分析的C语言子集的语法,用EBNF表示如下:

<程序> f mai n() <语句块>

<语句块>f“” <语句串>“”

<语句串>f <语句>{;<语句>};

<语句>f <赋值语句>|<条件语句>|<循环语句>

<赋值语句>f ID = <表达式>

<条件语句>f if(条件)<语句块>

<循环语句>f while(<条件>)<语句块>

<条件> f <表达式 ><关系运算符 ><表达式>

<表达式>f <项>{ +<项>}|<项>{-<项>}

<项>f <因子>{*<因子>}|<因子>{/<因子>}

<因子 >f ID |NUM |(<表达式 >)

<关系运算符 >f<|<=|>|>=|==|!=

实验目的、要求实现的功能

实验目的: 编制一个语法分析程序, 实现对词法分析程序所提供的单词序列进行语法检查 和结构分析。

实验要求:在上机 (一)词法分析的基础上, 采用递归子程序法或其他适合的语法分析方法, 实现其语法分析程序。要求编译后能检查出语法错误。

将实验方法改写为适合 预测分析法 的文法如下:

<程序>f main()<语句块>

<语句块> f { <语句串>}

<语句串> f <语句 >; <语句串>

(3_1) <语句串>f £

<语句> f <赋值语句>

<语句> f <条件语句>

<语句> f <循环语句>

<赋值语句>fID= <表达式>

<条件语句> f if(<条件 >)<语句块>

<循环语句>fwhile(<条件>)<语句块>

<条件>f <表达式 ><关系运算符 ><表达式>

<表达式>f <项><表达式'>

(11_1) <表达式、>f+<项><表达式'>

(11_2) <表达式'>f -<项><表达式'>

(11_3) <表达式、>f £

<项>f <因子><项'>

(12_1) < 项、>f*v 因子 >< 项 '>

(12_2) < 项、>f/< 因子 >< 项 '>

(12_3) <项、>f £

< 因子 > f ID

< 因子 > f NUM

<因子>f (v表达式>)

<关系运算符 >f<

<关系运算符> f <=

<关系运算符> ->

<关系运算符>—>=

<关系运算符>—==

<关系运算符>—!=

4.求改写后文法的非终结符号的 FIRST集和FOLLOW集:

非终结符号

FIRST

FOLLOW

<程序>:

mai n

#

<语句块>

{

# ;

<语句串>

ID if while £

}

<语句>

ID if while

J

<赋值语句>

ID

J

<条件语句>

if

J

<循环语句>

while

J

<条件>

ID NUM (

)

<表达式>

ID NUM (

<<=>>===!=);

<表达式> :

+ - £

<<=>>===!=);

ID NUM (

+ -<<=>>===!=);

* / £

+ -<<=>>===!=);

<因子> :

ID NUM (

* /

<关系运算符>

<<=>>=== !=

ID NUM (

5.根据求得的FIRST集和FOLLOW集构造LL(1)分析表如下:

表格内空白的部分表示“出错”,非空白部分表示要压入分析栈中的文法符号,是按照对

应产生式的逆序存放的,即当查找分析表时,表格内的内容从左至右依次入栈

第3步中改写文法的LL(1)分析表

main

if

while

ID

NUM

(

)

{

}

+

-

*

/

<

< =

>

> =

==

!=

=

#

<程序>

)(main

<语句块>

}

<语句串>

{

<语句串>

<语句串 >; <语句>

<语句>

<条件语句>

<循环语句>

<赋值语句>

<赋值语

句>

<表达式>

=ID

<条件语

句>

<语句块>)

<条件>(if

<循环语

句>

<语句块 >) <条件>(while

<条件>

<表达式 >< 关系运算符 >< 表达式>

<表达式>

<表达式 '><项>

<表达式'>

<表达式'>

<项> +

<表达式'>

<项>-

<项'><因子>

*

/

<因子>

ID

NUM

) <表达式>(

<关系运算

符>

<

< =

>

> =

==

!=

二、所用仪器、材料(设备名称、型号、规格等)

操作系统:Microsoft Win dows 7

开发平台:Microsoft Visual Studio 2010

三、实验方法、步骤

登录Microsoft Windows 7操作系统

打开Visual Studio 2010开发平台

新建“项目”

“Win32控制台应用程序”

输入项目

转载地址:https://blog.csdn.net/weixin_30596151/article/details/117019418 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux求一个数是否是素数,求素数-zengxg14-ChinaUnix博客
下一篇:c 语言程序设计知识点,C语言程序设计复习提纲---基本的知识点.doc

发表评论

最新留言

不错!
[***.144.177.141]2024年04月28日 13时00分49秒