《(4.5)--Samuel's Ch3_4编译原理与实践英文版.ppt》由会员分享,可在线阅读,更多相关《(4.5)--Samuel's Ch3_4编译原理与实践英文版.ppt(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、CompilerS1Chapter 3Context-Free Grammars and Parsing Extended BNF Notation CompilerS2Extended BNF Notation(EBNF)o repetitions A and A CompilerS3Left and Right RecursionoLeft recursive grammar:oA A|nEquivalent to *oA oRight recursive grammar:oA A|nEquivalent to *oA CompilerS4Extended BNF Notation(EBN
2、F)o repetitions A and A o optional constructs statement if-stmt|otherif-stmt if(exp)statement else statement exp 0|1statement if-stmt|otherif-stmt if(exp)statement|if(exp)statement else statementexp 0|1CompilerS5Syntax DiagramsoGraphical representations for visually representing EBNF rules are calle
3、d syntax diagrams.oThey consist of boxes representing terminals and nonterminals,arrowed lines representing sequencing and choices,and nonterminal labels for each diagram representing the grammar rule defining that nonterminal.oA round or oval box is used to indicate terminals in a diagram,while a s
4、quare or rectangular box is used to indicate nonterminals.CompilerS6Syntax Diagrams(cont)oAs an example,consider the grammar ruleofactor (exp)|numberoThis is written as a syntax diagram in the following way:CompilerS7Syntax Diagrams(cont)oSyntax diagrams are written from the EBNF rather than the BNF
5、,so we need diagrams representing repetition and optional constructs.Given a repetition such asoA B oThe corresponding syntax diagram is usually drawn as follow:CompilerS8Syntax Diagrams(cont)oAn optional construct such asoA B oIs drawn as:CompilerS9Exampleexp exp addop term|termaddop +|term term mu
6、lop factor|factormulop *factor (exp)|numberexp term addop term addop +|term factor mulop factor mulop *factor (exp)|numberCompilerS10Examplestatement if-stmt|otherif-stmt if(exp)statement else statement exp 0|1statement if-stmt|otherif-stmt if(exp)statement|if(exp)statement else statementexp 0|1CompilerS11Homework1.21.31.72.12.22.42.52.82.122.172.243.33.53.63.24