版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Chap7 Semantic Processing,Syntax-directed translation(直譯) - analysis: variable declarations, type errors - synthesis: IR (instruction Set) or actual code The semantic action is attached to the productions (or sub-trees of a syntax tree). parsing: build the parse tree semantic processing: build and d
2、ecorate the abstract syntax tree (AST) EX. Non-terminals for operator precedence and associatively need not be included. EX. Non-terminals used for ease of parsing may be omitted in the abstract syntax tree.,Chap7 Semantic Processing,abstract syntax tree (確認所使用的值),:=,id,+,*,id,const id,Chap7 Semanti
3、c Processing,Semantic routines traverse the AST, computing attributes of the nodes of AST. Initially, only leaves (i.e. terminals, e.g. const, id) have attributes.,Ex. Y := 3*X + I,Ex1.咖啡機請幫我泡2杯熱的3杯冰的拿鐵,咖啡機end, 數量形容詞 飲料,祈使語人 ,請幫,我,泡,數量形容詞 數量形容詞 tail,數量形容詞 數量形容詞 tail,數量形容詞,數量形容詞,咖啡,拿鐵,2杯 熱的,3杯 冰的,Ex
4、2 (include EX1) . 咖啡機請幫我泡2杯熱的藍山3杯冰的拿鐵,咖啡機end, 數量形容詞 /飲料,請幫,我,泡,數量形容詞 數量形容詞 tail,數量形容詞 數量形容詞 tail,數量形容詞 飲料,咖啡,藍山,2杯 熱的,3杯 冰的,數量形容詞 飲料,咖啡,拿鐵,Chap7 Semantic Processing,We then propagate the attributes to other nodes, using some functions, e.g. - build symbol table - attach attributes of nodes - check t
5、ypes, etc. bottom-up/top-down propagation,declaration,:=,id +,* id,const id,exp.,type,symbol table,check types:,integer * or floating *,Need to consult symbol table for types of ids.,Chap7 Semantic Processing,After attribute propagation is done, the tree is decorated and ready for code generation. W
6、e make another pass over the decorated AST to generate code. Actually,building the AST decorating the AST generating code,these can be combined in a single pass.,What we have described is essentially the attribute grammars(AG). Details in chap.14.,Chap7 Semantic Processing,Conceptually,:=,id,+,*,id,
7、const,id,Attributes flow in the AST.,Chap7 Semantic Processing,7.1.2 6 compiler organizations: 1- pass analysis and synthesis,scanning parsing checking translation,interleaved in a single pass.,Ex. Micro compiler in chap.2. Since code generation is limited to looking at one tuple at a time, few opti
8、mizations are possible. Ex. Consider register allocation, which requires a more global view of the AST.,Chap7 Semantic Processing,We wish the code generator completely hide machine details and semantic routines become independent of machines. However, this is violated sometimes in order to produce b
9、etter code. Ex. Suppose there are several classes of registers, each for a different purpose. Then register allocation is better done by semantic routines than code generator since semantic routines have a broader view of the AST.,Chap7 Semantic Processing, 1-pass + peephole 1 pass : generate code 1
10、 pass : peephole optimization( machine dependent) Peephole : looking at only a few instructions at a time - simple but effective - simplify code generator since there is a pass of post-processing.,Chap7 Semantic Processing, 1 pass + code gen pass 1st pass: analysis and IR 2nd pass: code generation (
11、+) flexible design for the code generator (+) may use optimizations for IR (+) greater independence of target machines (the front-end is quite independent of target machines.) (+) re-targeting is easier. Used in Chap 10-13,Chap7 Semantic Processing, multipass analysis For limited addr. space,scanner
12、 parser declaration static checking,each is a pass.,Some languages require multiple passes. Ex. Use-before-define in PL/1 More powerful analysis techniques can take advantages of intermediate tree representation. Ex. operator overloading other techniques based on AG. complete separation of analysis
13、and synthesis.,Chap7 Semantic Processing, multipass synthesis,IR,machine- independent optimization passes,machine- dependent optimization passes,code gen passes,peephole,Many complicated optimization and code generation algorithms require multiple passes.,Chap7 Semantic Processing, multi-language an
14、d multi-target compilers Components may be shared and parameterized.,FORTRAN PASCAL ADA C,.,machine-independent optimization,SUN PC main-frame,.,language- and machine-independent IRs,Ex. Ada uses Diana(language-dependent IR) Ex. GCC uses two IRs. - one is high-level tree-oriented - the other(RTL) is
15、 more machine- oriented,Chap7 Semantic Processing,7.1.3 Single Pass In Micro of chap 2, scanning, parsing and semantic processing are interleaved in a single pass. (+) simple front-end (+) less storage if no explicit trees (- ) immediately available information is limited since no complete tree is b
16、uilt. Relationships,scanner,call,tokens,parser,semantic rtn 1 semantic rtn 2 semantic rtn k,semantic records,call,Each terminal and nonterminal has a semantic record. Semantic records may be considered as the attributes of the terminals and non-terminals.,Chap7 Semantic Processing,- For terminals, t
17、he semantic records are created by the scanner. - For nonterminals, the semantic records are created by a semantic routine when a production is recognized. ex. A B C D #SR,A,B,C,D,#SR,- Semantic records are transmitted among semantic routines via a semantic stack.,Chap7 Semantic Processing,Ex.,ID (A
18、),:=, + , const (1),id (B),A,B,1,B,A,A,A,1 pass = 1 post-order traversal of the parse tree parsing actions build parse trees semantic actions post-order traversal, +#2, ID:=#3,gencode(+,B,1,tmp1),gencode(:=,A,tmp1),Chap7 Semantic Processing,Compare build a parse tree and then traverse (+) flexible (
19、+) more powerful build and traverse the tree in an interleaved way (+) simple (- ) limited Some languages have to be implemented in the 1st approach.,Chap7 Semantic Processing,7.2 Semantic Processing Semantic routines may be invoked in two ways: By parsing procedures, as in the recursive descent par
20、ser in chap 2 by the parser driver, as in LL and LR parsers.,Chap7 Semantic Processing,7.2.1 LL(1), + #add, + #add,+ #add, #add,#add,parse stack,semantic stack, ,Some productions have no action symbols; others may have several. Semantic routines are called when action symbols appear on stack top.,Ch
21、ap7 Semantic Processing,7.2.2 LR(1) Semantic routines are invoked only when a structure is recognized. In LR parsing, a structure is recognized when the RHS is reduced to LHS. Therefore, action symbols must be placed at the end.,Ex. # ifThen if then end if then else end,# ifThenElse,After shifting “
22、,if “, the parser,cannot decide which of #ifThen and #ifThenElse should be invoked. cf. In LL parsing, the structure is recognized when a nonterminal is expanded.,Chap7 Semantic Processing,However, sometimes we do need to,perform semantic actions in the middle of a production. Ex., if then end,gener
23、ate code for ,Need a conditional jump here.,generate code for ,Solution: Use two productions:, then end #finishIf if #startIf,semantic hook (only for semantic processing),Chap7 Semantic Processing,Another problem: What if the action is not at the end?,Ex. ,#start begin end,We need to call #start. So
24、lution: Introduce a new nonterminal.,#start,YACC automatically performs such transformations. Compare: YACC: arbitrary code fragments can be inserted into the parser. LALRGEN: calls semantic procedures at appropriate times., begin end,Chap7 Semantic Processing,7.2.3 Semantic Record Representation Si
25、nce we need to use a stack of semantic records, all semantic records must have the same type. variant record in Pascal union type in C Ex. enum kind OP, EXP, STMT, ERROR; typedef struct enum kind tag; union op_rec_type OP_REC; exp_rec_type EXP_REC; stmt_rec_type STMT_REC; . sem_rec_type;,Chap7 Seman
26、tic Processing,- How to handle errors? Ex. A semantic routine needs to create a record for each identifier in an expression. What if the identifier is not declared? Solution 1: make a bogus record This method may create a chain of meaningless error messages due to this bogus record. Solution 2: crea
27、te an ERROR semantic record No error message will be printed when ERROR record is encountered.,Chap7 Semantic Processing,WHO controls the semantic stack? action routines parser 7.2.4 Action-controlled semantic stack Action routines take parameters from the semantic stack directly and push results on
28、to the stack. Implementing stacks: 1. array 2. linked list Usually, the stack is transparent - any records in the stack may be accessed by the semantic routines. (-) difficult to change,Chap7 Semantic Processing,Two other disadvantages: (-) Action routines need to manage the stack. (-) Control of th
29、e stack is distributed among the many action routines. Each action routine pops some records and pushes 0 or 1 record. If any action routine makes a mistake, the whole stack is corrupt.,Chap7 Semantic Processing,Solution 1: Let parser control the stack Solution 2: Introduce additional stack routines
30、,parser,stack routines,action routines,If action routines do not control the stack, we can use opague (or abstract) stack: only push() and pop() are provided. (+) clean interface (- ) less efficient,Chap7 Semantic Processing,7.2.5 parser-controlled stack LR Semantic stack and parse stack operate in
31、parallel shifts and reduces in the same way.,Ex. ,if then end, then if :, then if,. . . .,parser stack,semantic stack,may be combined,Ex. YACC generates such parser-controlled semantic stack. + $.value=$1.value+$3.value;,Chap7 Semantic Processing,LL parser-controlled semantic stack - Every time a pr
32、oduction A B C D is predicted,A,B,C,D,:,:,parse stack,:,A,:,D,C,B,:,A,:,top,right,current,left,12 11 10 9 8 7,semantic stack,Need four pointers fir the semantic stack (left, right, current, top).,Chap7 Semantic Processing,However, when a new production B E F G is predicted, the four pointers will be
33、 overwritten. Therefore, create a new EOP record for the four pointers on the parse stack.,Chap7 Semantic Processing,parse stack,A :,B C D EOP(.) :,E F G EOP(7,9,9,12) C D EOP(.) :,semantic stack,: A :,D C B : A :,G FE D C B : A :,EFG,A,BCD,B,top,right,current,left,top,right,current,left,current,9 8
34、 7,12 11 10 9 8 7,15 14 13 12 11 10 9 8 7,Chap7 Semantic Processing,When EOP record appears on stack top, restore the four pointers, which essentially pops off records from the semantic stack.,Chap7 Semantic Processing,Note that all push() and pop() are done by the parser, not by the action routines
35、. Semantic records are passed to the action routines by parameters. Ex., () #copy($2,$),Initial information is stored in the semantic record of LHS. After the RHS is processed, the resulting information is stored back in the semantic record of LHS.,initially,: A :,D C B : A :,: A :,finally,informati
36、on flow (attributes),Chap7 Semantic Processing,Figure 7.10 Micro grammar with parameterizd action symbols Trace an example: begin a := b + c end;,Chap7 Semantic Processing,(-) Semantic stack may grow very big. Certain nonterminals never use semantic records, e.g. and . We may insert #reuse before th
37、e last nonterminal in each of their productions. Ex. #reuse #reuse ,Chap7 Semantic Processing,Evaluation: Parser-controlled semantic stack is easy with LR, but not so with LL.,Chap7 Semantic Processing,7.3 Intermediate representation and code generation Two possibilities: 1.,.,semantic routines,code
38、 generation,machine code,(+) no extra pass for code generation (+) allows simple 1-pass compilation,2.,semantic routines,code generation,machine code,IR,(+) allows higher-level operations e.g. open block, call procedures. (+) better optimization because IR is at a higher level. (+) machine dependence is isolated in code generation.,.,Chap7 Semantic Processing,IR: good for optimization and portability machine code: simple,Chap7 Semantic Processing,7.3.2 1. postfix form Ex.,a+b (a+b)*c a+b*c a:=b*c+b*d,ab+ ab+c* abc*+ abc*bd*+:=,(+) simple and concise (+) good for driving an interpreter (- )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 京东pop售后初级客服认证考试及答案
- 2026年自来水国企招聘考试试题及答案解析
- 2026年郑州专注力测试培训机构及答案解析
- 2026年人力资源总监笔试题库含答案
- 2026年初中教师招聘学科专业知识试题及答案(音乐)
- 2026年安徽教师遴选试题及答案
- 2025年八年级上册册 (语文)期中情境模拟卷1含答案
- 钢轧钢系统提升项目可行性研究报告模板拿地申报
- 针灸学讲座课件
- 幼儿园食堂食品安全专项整治工作方案
- 2026南方凯能(广东)电力集团有限公司校园招聘备考题库及一套参考答案详解
- 2026江苏无锡宜兴市和桥镇公开招聘行政村编外工作人员6人备考题库及答案详解一套
- 宝兴县兴产投资有限责任公司2026年度公开招聘工作人员(8人)笔试备考题库及答案详解
- 呼吸危重症人工气道护理专家共识 (2026 版)
- 2026中国储备粮管理集团有限公司吉林分公司招聘笔试历年常考点试题专练附带答案详解
- 2026年医学检验技术专业考试试题及答案
- 城市e管家实施方案
- 加油站报销审批制度范本
- 2026江苏省中医院中药制剂研发中心招聘1人备考题库附答案详解(黄金题型)
- 湖南事业单位2026招聘公共基础知识高频考点题库含易错解析
- 2026年部编版五年级语文上册重点必背知识点梳理
评论
0/150
提交评论