当前位置: 首页 > news >正文

珠海市网站建设品牌网站的构建一般要多久

珠海市网站建设品牌,网站的构建一般要多久,深圳黑马程序员培训机构官网,怎么在网上找做网站的客户特别注意:第17条产生式改为 17) Stmt → while ( Cond ) Stmt 【问题描述】 本次作业只测试一个含简单变量声明、赋值语句、输出语句、if语句和while语句的文法: 0) CompUnit → Block 1) Block → { BlockItemList } 2) BlockItemList → BlockItem…

特别注意:第17条产生式改为

17) Stmt → 'while' '(' Cond ')' Stmt

【问题描述】

本次作业只测试一个含简单变量声明、赋值语句、输出语句、if语句和while语句的文法:

0)  CompUnit → Block

1)  Block → '{' BlockItemList '}'

2)  BlockItemList →  BlockItemList BlockItem 

3)  BlockItemList →  EPSILON

4)  BlockItem → VarDecl

5)  BlockItem → Stmt

6)  VarDecl → 'int' VarDeclList ';' 

7)  VarDeclList → VarDeclList  ',' VarDef

8)  VarDeclList → VarDef

9)  VarDef → Ident

10) VarDef → Ident '=' Exp

11) Stmt → Ident '=' Exp ';' 

12) Stmt → Exp ';'

13) Stmt → ';'

14) Stmt → Block

15) Stmt → 'if' '(' Cond ')' Block

16) Stmt → 'if' '(' Cond ')' Block 'else' Block

17) Stmt → 'while' '(' Cond ')' Stmt

18) Stmt → Ident '=' 'getint''('')'';'

19) Stmt → 'printf''('FormatString ExpList ')'';' 

20) ExpList → ExpList ',' Exp

21) ExpList → EPSILON

22) Exp → AddExp 

23) Cond → LOrExp 

24) PrimaryExp → '(' Exp ')'

25) PrimaryExp → Ident

26) PrimaryExp → IntConst 

27) UnaryExp → PrimaryExp

28) MulExp → UnaryExp 

29) MulExp → MulExp '*' UnaryExp

30) MulExp → MulExp '/' UnaryExp 

31) MulExp → MulExp '%' UnaryExp 

32) AddExp → MulExp

33) AddExp → AddExp '+' MulExp

34) AddExp → AddExp '-' MulExp 

35) RelExp → AddExp

36) RelExp → RelExp '<' AddExp

37) RelExp → RelExp '>' AddExp 

38) RelExp → RelExp '<=' AddExp 

39) RelExp → RelExp '>=' AddExp  

40) EqExp → RelExp

41) EqExp → EqExp '==' RelExp 

42) EqExp → EqExp '!=' RelExp 

43) LAndExp → EqExp

44) LAndExp → LAndExp '&&' EqExp 

45) LOrExp → LAndExp

46) LOrExp → LOrExp '||' LAndExp

其对应的LR1分析表共含有170个状态。

请根据该文法设计并实现LR语法分析程序,能基于上次作业的词法分析程序所识别出的单词,识别出各类语法成分。输入输出及处理要求如下:

(1)需按文法规则,用LR分析法法对文法中定义的语法成分进行分析(需要使用上次作业中的词法分析程序);

(2)本项作业对应的文法已经在参考代码CFGBlock.java中实现。当然你也可以重新设计文法的数据结构

(3)本项作业需要根据所学知识自动生成LR1分析表,参考代码中给出了分析表的数据结构,你也可以自行设计。

(4)为了方便进行自动评测,输入的被编译源文件统一命名为testfile.txt(注意不要写错文件名);输出的结果文件统一命名为output.txt(注意不要写错文件名);结果文件中包含如下两种信息:

    1)按词法分析识别单词的顺序,按行输出每个单词的信息(要求同词法分析作业,对于预读的情况不能输出)。

    2)在文法中出现的语法分析成分分析结束前,另起一行输出当前语法成分的名字,形如“<AddExp>”

【输入形式】testfile.txt中的符合文法要求的测试程序。

【输出形式】按如上要求将语法分析结果输出至output.txt中。

【特别提醒】(1)本次作业只考核对正确程序的处理,但需要为今后可能出现的错误情况预留接口。

           (2)当前要求的输出只是为了便于评测,完成编译器中无需出现这些信息,请设计为方便打开/关闭这些输出的方案。

【样例输入】

{//simple testx=10;y=20;printf("x=%d,y=%d\n",x,y);if(x<y){printf("x<y\n");}else{printf("x>y\n");}
}

【样例输出】

LBRACE {

<BlockItemList>

IDENFR x

ASSIGN =

INTCON 10

<PrimaryExp>

<UnaryExp>

<MulExp>

<AddExp>

<Exp>

SEMICN ;

<Stmt>

<BlockItem>

<BlockItemList>

IDENFR y

ASSIGN =

INTCON 20

<PrimaryExp>

<UnaryExp>

<MulExp>

<AddExp>

<Exp>

SEMICN ;

<Stmt>

<BlockItem>

<BlockItemList>

PRINTFTK printf

LPARENT (

STRCON "x=%d,y=%d\n"

<ExpList>

COMMA ,

IDENFR x

<PrimaryExp>

<UnaryExp>

<MulExp>

<AddExp>

<Exp>

<ExpList>

COMMA ,

IDENFR y

<PrimaryExp>

<UnaryExp>

<MulExp>

<AddExp>

<Exp>

<ExpList>

RPARENT )

SEMICN ;

<Stmt>

<BlockItem>

<BlockItemList>

IFTK if

LPARENT (

IDENFR x

<PrimaryExp>

<UnaryExp>

<MulExp>

<AddExp>

<RelExp>

LSS <

IDENFR y

<PrimaryExp>

<UnaryExp>

<MulExp>

<AddExp>

<RelExp>

<EqExp>

<LAndExp>

<LOrExp>

<Cond>

RPARENT )

LBRACE {

<BlockItemList>

PRINTFTK printf

LPARENT (

STRCON "x<y\n"

<ExpList>

RPARENT )

SEMICN ;

<Stmt>

<BlockItem>

<BlockItemList>

RBRACE }

<Block>

ELSETK else

LBRACE {

<BlockItemList>

PRINTFTK printf

LPARENT (

STRCON "x>y\n"

<ExpList>

RPARENT )

SEMICN ;

<Stmt>

<BlockItem>

<BlockItemList>

RBRACE }

<Block>

<Stmt>

<BlockItem>

<BlockItemList>

RBRACE }

<Block>

<CompUnit>

【评分标准】

按与预期结果不一致的行数扣分,每项扣5%。

【开发语言及环境】用 C/C++/JAVA 实现,平台支持 C++11 标准。评测机所采用的编译学生代码的版本是:C/C++ gcc 8.1.0,Java jdk 1.8。

【参考代码】参考代

src.rar中给出了文法和LR分析表的定义,你需要自行设计LR分析程序

【文档要求】完成2023语法分析阶段设计文档 (可在词法分析阶段设计文档基础上扩充完成)

【提交形式】将所开发的语法分析程序的源文件(.cpp/.c/.h/.java,不含工程文件)打包为zip或rar后提交。对于使用 java 开发的编译器,程序运行的入口为 src 目录下 Compiler.java 中的 main 方法。上传请直接打包 src 文件夹,如果引用了第三方外部包(推荐),请将外部 jar 包文件放到 bin 目录下,bin 和 src 两个文件夹同级,将 bin 和 src 一起打包后提交即可。注意 mac 压缩会产生额外的文件到压缩包中,需删掉额外文件后提交。

答案:

Mag1skY/Compiler-Principles: 词法分析 语法分析 中间代码生成 代码生成

http://www.yayakq.cn/news/893401/

相关文章:

  • 买衣服网站排行榜前十名wordpress页面访问量
  • 菏泽网站建设装修之家网
  • 建设银行园区公积金管理中心网站公司开发个网站
  • wordpress零基础建站教程视频网页设计个人总结800
  • 五分钟自己创建网站的方法mysql 瓶颈 wordpress
  • 邢台做网站多少钱百度知道电脑版网页入口
  • 物流网站怎么开d8 wordpress
  • 如何设置网站服务器访问权限上海网站建设技术
  • 天津网站建设91fyh设计师找图网站
  • 公司网站建设情况说明书企业网站的特征
  • 国外论文类网站有哪些天马网络 网站建设
  • 广西壮族自治区建设厅网站企业163邮箱登录
  • 哪些企业网站做的比较好平谷手机网站建设
  • 文学投稿网站平台建设WordPress菜单太长
  • 深圳哪里网站制作专题探索网站开发模式特点
  • 网站引导页动态效果怎么做公众号 创意名字
  • 做百度竞价对网站有无要求东莞做网站找微客巴巴
  • 西安网站建设总部做网站有什么要求
  • 制造业公司有必要建设网站吗免费发布产品网站
  • 做网站的优势广东省阳江网络问政平台
  • 深圳做app网站建设html制作个人主页
  • 哪个网站可以做翻译赚钱月嫂服务公司网站建设方案
  • 哪些网站可以做海报热点的cetos做网站
  • 如何创建本地站点做网站的是外包公司吗
  • 昆山网站建设费用站长平台有哪些
  • 报名网站建设连云港网页设计
  • 如何做网页游戏网站丽江网站开发
  • 网站怎么做友情链接品牌营销策划岗位职责
  • 贵州网站建设吧网站建设属于什么类的采购
  • php网站设计公司前台设计