网站大量收购独家精品文档,联系QQ:2885784924

2025年未来趋势洞察程序实验报告与分析.doc

2025年未来趋势洞察程序实验报告与分析.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

題目:预测分析法

一、试验目的

1、通过试验要学会用消除左递归和消除回溯的措施来使文法满足进行确定自顶向下分析的条件;

2、学会用C/C++高级程序设计語言编写一种LL(1)分析法程序

二、试验内容及规定

LL(1)预测分析程序的总控程序在任何時候都是按STACK栈顶符号X和目前的输入符号a做哪种过程的。对于任何(X,a),总控程序每次都执行下述三种也許的动作之一:

(1)若X=a=‘#’,则宣布分析成功,停止分析过程。

(2)若X=a‘#’,则把X从STACK栈顶弹出,让a指向下一种输入符号。

(3)若X是一种非终止符,则查看预测分析表M。若M[A,a]中寄存着有关X的一种产生式,那么,首先把X弹出STACK栈顶,然后,把产生式的右部符号串按反序一一弹出STACK栈(若右部符号為ε,则不推什么东西进STACK栈)。若M[A,a]中寄存着“出錯标志”,则调用出錯诊断程序ERROR。

1、給定文法

S-a|b|(T)

T-SH|d

H-,SH|ε

2、该文法对应的预测分析表

A

b

(

)

,

#

S

S-a

S-b

S-(T)

T

T-SH

T-SH

T-SH

H

H-ε

H-,SH

3、编写预测分析程序对句子进行分析

三、试验程序设计阐明

1、有关函数阐明

分析栈可以采用許多的存储措施来设计,在这里采用的次序栈。根据预测分析原理,LL(1)分析程序的实現关键在于分析栈和分析表是采用何种数据构造来实現。分析表是一种矩阵,当我們要调用分析表来分析時,就根据栈顶的非终止符和目前输入的终止符来决定执行哪种过程。详细设计思想如下:

printStack()输出分析栈内内容;printinputString()输出顾客输入的字符串;Pop()弹出栈顶元素;Push()向栈内添加一种元素;Search()查找非终止符集合VT中与否存在输入的非终止符;yuCeFenXi()进行输入串的预测分析的主功能函数;M(charA,chara)查看预测分析表M[A,a]中与否存在对应产生式。

2、程序流程图

把符号

把符号’#’和文法符号依次推进stack栈

FLAG置為TRUE

FLAG=TRUE?

把栈顶符号上托出去并寄存在X中

把第一种符号读进a

X為终止符?

X=a?

錯误处理

把下一输入符号读进a

X=‘#’?

X=a

FLAG=FALSE

錯误处理

运用分析表分析

T

F

F

F

F

F

T

T

YES

T

T

开始

結束

四、试验成果

語法分析的任务就是识别詞法分析程序输出的单詞序列与否為給定措施的对的句子。目前我們若从键盘上输入的是有对的的句子,例如:(a,a)#,显示“success”。运行成果如下:

五、试验小結

本次试验完毕了語法分析-预测分析法的实現过程,通过本次试验巩固了此前所学过的知识,对語法分析有了更深入的理解,掌握了预测分析法的原理及其实現过程。

附:#includestdio.h

#includestring.h

charinputString[10];

charstack[10];

intbase=0,top=1;

charVT[6]={a,b,(,),,,d};/*用来寄存6个终止符*/

charchanShengShi[10];/*用来寄存预测分析表M[A,a]中的一条产生式*/

intfirstCharIntex=0;/*firstCharIntex用来寄存顾客输入串的第一种元素的下标*/

intM(charA,chara);

voidinit()

{

inti;

for(i=0;i10;i++)

{

inputString[i]=NULL;/*初始化数组*/

stack[i]=NULL;/*初始化栈*/

chanShengShi[i]=NULL;/*初始化数组*/

}

printf(\t\t1文法G[S]:);/*输出文法做為提醒*/

printf(\n\t\t\tS-a|b|(T)\n);

printf(\t\t\tT-SH|d\n);

printf(\t\t\tH-,SH|ε\n);

printf(\t\t2该文法对应的预测分析表:\n);

printf(\t\t|a|b|(|)|,|#|\n);

printf(\t\tS|S-a|S-b|S-(T)||||\n);

您可能关注的文档

文档评论(0)

132****5705 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5104323331000004

1亿VIP精品文档

相关文档