第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 语法分析器c语言 递归子程序 RecursiveSubroutine

语法分析器c语言 递归子程序 RecursiveSubroutine

时间:2021-01-19 11:15:53

相关推荐

语法分析器c语言 递归子程序 RecursiveSubroutine

RecursiveSubroutine

介绍

编译原理语法分析——递归下降子程序类,C++实现。

实验说明

一、实验目标

分别采用自顶向下和自底向上两种语法分析方法,编制一个语法分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析实验内容。

二、实验内容

选取一种自顶向下语法分析方法(递归子程序、LL分析法)和一种自底向上语法分析法(算符优先分析、LR分析方法)设计语法分析器,并对简单语言进行语法分析。

2.1 待分析的简单语言的语法

用扩充的BNF表示如下:

⑴::=beginend

⑵::={;}

⑶::=

⑷::=ID:=

⑸::={+ | -}

⑹::={* | /

⑺::=ID | NUM | ()

用上下文无关文法表示如下:

P→begin SList end

SList→S{;S}

S→A

A→ID:=E

E→E+T|E-T|T

T→T*F|T/F|F

F→(E)|ID|NUM

2.2 实验要求说明

输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。

例如:

输入 begin a:=9; x:=23; b:=a+x end #

输出 success!

输入 x:=a+bc end #

输出 error

三、实验报告

实验结束需要提交实验报告,实验报告需要包含自顶向下和自底向上两种分析程序算法(可以用流程图表示)和源代码,以及测试结果截图以及相关分析(需要设计至少10个不同的测试用例)。两种不同算法用两个文档分别保存。

实验过程

改为LL(1)文法

P→begin SList end

SList→S{;S}

S→A

A→ID:=E

E→TE’

E’→BTE’|

B→+|-

T→FT’

T’→CFT’|

C→*|/

F→(E)|ID|NUM

递归子程序

参看项目代码

开发工具

VS

依赖

参与贡献

Fork 本仓库

新建 Feat_xxx 分支

提交代码

新建 Pull Request

码云特技

使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md

GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。