06-04-recursive-descent-algorithm-annotated

06-04-recursive-descent-algorithm-annotated

ID:39713744

大小:971.66 KB

页数:8页

时间:2019-07-09

06-04-recursive-descent-algorithm-annotated_第1页
06-04-recursive-descent-algorithm-annotated_第2页
06-04-recursive-descent-algorithm-annotated_第3页
06-04-recursive-descent-algorithm-annotated_第4页
06-04-recursive-descent-algorithm-annotated_第5页
资源描述:

《06-04-recursive-descent-algorithm-annotated》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、CompilersRecursiveDescentAlgorithmAlexAikenRDAlgorithm•LetTOKENbethetypeoftokens–SpecialtokensINT,OPEN,CLOSE,PLUS,TIMES•LettheglobalnextpointtothenextinputtokenAlexAikenRDAlgorithm•Definebooleanfunctionsthatcheckforamatchof:–Agiventokenterminalboolterm(TOKENtok){retur

2、n*next++==tok;}–ThenthproductionofS:boolSn(){…}–TryallproductionsofS:boolS(){…}AlexAikenRDAlgorithm•ForproductionETboolE(){returnT();}1•ForproductionET+EboolE(){returnT()&&term(PLUS)&&E();}2•ForallproductionsofE(withbacktracking)boolE(){TOKEN*save=next;return(next=s

3、ave,E())1

4、

5、(next=save,E());}2AlexAikenRDAlgorithm•Functionsfornon-terminalTboolT(){returnterm(INT);}1boolT(){returnterm(INT)&&term(TIMES)&&T();}2boolT(){returnterm(OPEN)&&E()&&term(CLOSE);}3boolT(){TOKEN*save=next;return(next=save,T())1

6、

7、(next=save,T())2

8、

9、(next=save,T

10、());}3AlexAikenRDAlgorithm•Tostarttheparser–Initializenexttopointtofirsttoken–InvokeE()•EasytoimplementbyhandAlexAikenRDAlgorithmET

11、T+E(int)Tint

12、int*T

13、(E)boolterm(TOKENtok){return*next++==tok;}boolE1(){returnT();}boolE2(){returnT()&&term(PLUS)&&E();}boolE(){TOKEN*sa

14、ve=next;return(next=save,E1())

15、

16、(next=save,E2());}boolT1(){returnterm(INT);}boolT2(){returnterm(INT)&&term(TIMES)&&T();}boolT3(){returnterm(OPEN)&&E()&&term(CLOSE);}boolT(){TOKEN*save=next;return(next=save,T1())

17、

18、(next=save,T2())

19、

20、(next=save,T3());}AlexAikenWhichlines

21、areincorrectintheRDAlgorithmrecursivedescentimplementationofthisgrammar?1boolterm(TOKENtok){return*next++==tok;}EE’

22、E’+idE’-E’

23、id

24、(E)2boolE1(){returnE’();}3boolE2(){returnE’()&&term(PLUS)&&term(ID);}4boolE(){Line35TOKEN*save=next;6return(next=save,E1())&&(next=save,

25、E2());7}Line58boolE’1(){returnterm(MINUS)&&E’();}9boolE’2(){returnterm(ID);}10boolE’3(){returnterm(OPEN)&&E()&&term(CLOSE);}Line611boolE’(){12TOKEN*next=save;return(next=save,T1())13

26、

27、(next=save,T2())Line1214

28、

29、(next=save,T3());15}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多
相关标签