欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    Bottom-up parsing.ppt

    • 资源ID:379084       资源大小:149KB        全文页数:31页
    • 资源格式: PPT        下载积分:2000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要2000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Bottom-up parsing.ppt

    1、Bottom-up parsing,Goal of parser : build a derivation Top-down parser : build a derivation by working from the start symbol towards the input. Builds parse tree from root to leaves Builds leftmost derivation Bottom-up parser : build a derivation by working from the input back toward the start symbol

    2、 Builds parse tree from leaves to root Builds reverse rightmost derivation,Bottom-up parsing,The parser looks for a substring of the parse trees frontier. .that matches the rhs of a production and .whose reduction to the non-terminal on the lhs represents on step along the reverse of a rightmost der

    3、ivation Such a substring is called a handle. Important: Not all substrings that match a rhs are handles.,Bottom-up parsing techniques,Shift-reduce parsing Shift input symbols until a handle is found. Then, reduce the substring to the non-terminal on the lhs of the corresponding production. Operator-

    4、precedence parsing Based on shift-reduce parsing. Identifies handles based on precedence rules.,Example: Shift-reduce parsing,1. S E 2. E E + E 3. E E * E 4. E num 5. E id,Input to parse: id1 + num * id2,Accept,$ S,Reduce (rule 1),$ E,Reduce (rule 2),$ E + E,Reduce (rule 3),$ E + E * E,Reduce (rule

    5、5),$ E + E * id2,Shift,$ E + E *,Shift,$ E + E,Reduce (rule 4),$ E + num,Shift,$ E +,Shift,$ E,Reduce (rule 5),$ id1,Shift,$,ACTION,Grammar:,Handles: underlined,STACK,Shift-Reduce parsing,A shift-reduce parser has 4 actions: Shift - next input symbol is shifted onto the stack Reduce - handle is at t

    6、op of stack pop handle push appropriate lhs Accept - stop parsing & report success Error - call error reporting/recovery routine,Shift-Reduce parsing,How can we know when we have found a handle? Analyze the grammar beforehand. Build tables Look ahead in the input LR(1) parsers recognize precisely th

    7、ose languages in which one symbol of look-ahead is enough to determine whether to reduce or shift. L : for left-to-right parse of the input R : for reverse rightmost derivation 1: for one symbol of lookahead,How does it work?,Read input, one token at a time Use stack to keep track of current state T

    8、he state at the top of the stack summarizes the information below. The stack contains information about what has been parsed so far. Use parsing table to determine action based on current state and look-ahead symbol. How do we build a parsing table?,LR parsing techniques,SLR (not in the book) Simple

    9、 LR parsing Easy to implement, not strong enough Uses LR(0) items Canonical LR Larger parser but powerful Uses LR(1) items LALR (not in the book) Condensed version of canonical LR May introduce conflicts Uses LR(1) items,Class examples,L,R,id,L,* R,L,R,S,L = R,S,S,S,Finding handles,As a shift/reduce

    10、 parser processes the input, it must keep track of all potential handles. For example, consider the usual expression grammar and the input string x+y. Suppose the parser has processed x and reduced it to E. Then, the current state can be represented by E +E where means that an E has already been par

    11、sed and that +E is a potential suffix, which, if found, will result in a successful parse. Our goal is to eventually reach state E+E, which represents an actual handle and should result in the reduction EE+E,LR parsing,Typically, LR parsing works by building an automaton where each state represents

    12、what has been parsed so far and what we hope to parse in the future. In other words, states contain productions with dots, as described earlier. Such productions are called items States containing handles (meaning the dot is all the way to the right end of the production) lead to actual reductions d

    13、epending on the lookahead.,SLR parsing,SLR parsers build automata where states contain items (a.k.a. LR(0) items) and reductions are decided based on FOLLOW set information. We will build an SLR table for the augmented grammar,SS S L=R S R L *R L id R L,SLR parsing,When parsing begins, we have not p

    14、arsed any input at all and we hope to parse an S. This is represented by SS. Note that in order to parse that S, we must either parse an L=R or an R. This is represented by SL=R and SR closure of a state: if AaBb represents the current state and B is a production, then add B to the state. Justificat

    15、ion: aBb means that we hope to see a B next. But parsing a B is equivalent to parsing a , so we can say that we hope to see a next,SLR parsing,Use the closure operation to define states containing LR(0) items. The first state will be:From this state, if we parse, say, an id, then we go to state If,

    16、after some steps we parse input that reduces to an L, then we go to state,S S S L=R S R L *R L id R L,L id ,S L =R R L ,id,SLR parsing,Continuing the same way, we define all LR(0) item states:,S S S L=R S R L *R L id R L,L id ,S L =R R L ,S S ,I0,I1,I2,I3,S R ,I4,L * R R L L id L * R,I5,S,L,*,id,R,S

    17、 L= R R L L *R L id,I6,=,R,S L=R ,R L ,L,L,I7,id,I3,*,*,L *R ,R,I8,I9,SLR parsing,The automaton and the FOLLOW sets tell us how to build the parsing table: Shift actions If from state i, you can go to state j when parsing a token t, then slot i,t of the table should contain action “shift and go to s

    18、tate j“, written sj Reduce actions If a state i contains a handle A, then slot i, t of the table should contain action “reduce using A“, for all tokens t that are in FOLLOW (A). This is written r(A) The reasoning is that if the lookahead is a symbol that may follow A, then a reduction A should lead

    19、closer to a successful parse. continued on next slide,SLR parsing,The automaton and the FOLLOW sets tell us how to build the parsing table: Reduce actions, continued Transitions on non-terminals represent several steps together that have resulted in a reduction. For example, if we are in state 0 and

    20、 parse a bit of input that ends up being reduced to an L, then we should go to state 2. Such actions are recorded in a separate part of the parsing table, called the GOTO part.,SLR parsing,Before we can build the parsing table, we need to compute the FOLLOW sets:,S S S L=R S R L *R L id R L,FOLLOW(S

    21、) = $ FOLLOW(S) = $ FOLLOW(L) = $, = FOLLOW(R) = $, =,SLR parsing,state action gotoid = * $ S L R0 s3 s5 1 2 41 accept2 s6/r(RL)3 r(Lid) r(Lid)4 r(SR)5 s3 s5 7 86 s3 s5 7 97 r(RL) r(RL)8 r(L*R) r(L*R)9 r(SL=R),Note the shift/reduce conflict on state 2 when the lookahead is an =,Conflicts in LR parsi

    22、ng,There are two types of conflicts in LR parsing: shift/reduce On some particular lookahead it is possible to shift or reduce The if/else ambiguity would give rise to a shift/reduce conflict reduce/reduce This occurs when a state contains more than one handle that may be reduced on the same lookahe

    23、ad.,Conflicts in SLR parsing,The parser we built has a shift/reduce conflict. Does that mean that the original grammar was ambiguous? Not necessarily. Lets examine the conflict: it seems to occur when we have parsed an L and are seeing an =. A reduce at that point would turn the L into an R. However

    24、, note that a reduction at that point would never actually lead to a successful parse. In practice, L should only be reduced to an R when the lookahead is EOF ($). An easy way to understand this is by considering that L represents l-values while R represents r-values.,Conflicts in SLR parsing,The co

    25、nflict occurred because we made a decision about when to reduce based on what token may follow a non-terminal at any time. However, the fact that a token t may follow a non-terminal N in some derivation does not necessarily imply that t will follow N in some other derivation. SLR parsing does not ma

    26、ke a distinction.,Conflicts in SLR parsing,SLR parsing is weak. Solution : instead of using general FOLLOW information, try to keep track of exactly what tokens many follow a non-terminal in each possible derivation and perform reductions based on that knowledge. Save this information in the states.

    27、 This gives rise to LR(1) items: items where we also save the possible lookaheads.,Canonical LR(1) parsing,In the beginning, all we know is that we have not read any input (SS), we hope to parse an S and after that we should expect to see a $ as lookahead. We write this as: SS, $ Now, consider a gen

    28、eral item A, x. It means that we have parsed an , we hope to parse and after those we should expect an x. Recall that if there is a production , we should add to the state. What kind of lookahead should we expect to see after we have parsed ? We should expect to see whatever starts a . If is empty o

    29、r can vanish, then we should expect to see an x after we have parsed (and reduced it to B),Canonical LR(1) parsing,The closure function for LR(1) items is then defined as follows: For each item A, x in state I, each production in the grammar, and each terminal b in FIRST(x), add , b to I If a state

    30、contains core item with multiple possible lookaheads b1, b2,., we write , b1/b2 as shorthand for , b1 and , b2,id,Canonical LR(1) parsing,L id , =/$,S L =R, $ R L , $,S S , $,I0,I1,I2,I3,S R, =/$,I4,I5,S,L,*,id,R,I6,=,R,SL=R, $,R L, =/$,L,L,I7,id,*,*,L *R , =/$,R,I8,I9,S S, $ S L=R, $ S R, $ L *R, =

    31、/$ L id, =/$ R L, $,L *R, =/$ R L, =/$ L id, =/$ L *R, =/$,Lid, $,I3,R L, $,I7,S L= R, $ R L, $ L *R, $ L id, $,I5,*,L *R , $,I8,L *R, $ R L, $ L id, $ L *R, $,L,R,id,I3,Canonical LR(1) parsing,The table is created in the same way as SLR, except we now use the possible lookahead tokens saved in each

    32、 state, instead of the FOLLOW sets. Note that the conflict that had appeared in the SLR parser is now gone. However, the LR(1) parser has many more states. This is not very practical. It may be possible to merge states!,LALR(1) parsing,This is the result of an effort to reduce the number of states i

    33、n an LR(1) parser. We notice that some states in our LR(1) automaton have the same core items and differ only in the possible lookahead information. Furthermore, their transitions are similar. States I3 and I3, I5 and I5, I7 and I7, I8 and I8 We shrink our parser by merging such states. SLR : 10 sta

    34、tes, LR(1): 14 states, LALR(1) : 10 states,id,LALR(1) parsing,L id , =/$,S L =R, $ R L , $,S S , $,I0,I1,I2,I3,S R, =/$,I4,I5,S,L,*,id,R,I6,=,R,SL=R, $,R L, =/$,L,L,I7,id,*,*,L *R , =/$,R,I8,I9,S S, $ S L=R, $ S R, $ L *R, =/$ L id, =/$ R L, $,L *R, =/$ R L, =/$ L id, =/$ L *R, =/$,S L= R, $ R L, $

    35、L *R, $ L id, $,I3,Conflicts in LALR(1) parsing,Note that the conflict that had vanished when we created the LR(1) parser has not reappeared. Can LALR(1) parsers introduce conflicts that did not exist in the LR(1) parser? Unfortunately YES. BUT, only reduce/reduce conflicts.,Conflicts in LALR(1) par

    36、sing,LALR(1) parsers cannot introduce shift/reduce conflicts. Such conflicts are caused when a lookahead is the same as a token on which we can shift. They depend on the core of the item. But we only merge states that had the same core to begin with. The only way for an LALR(1) parser to have a shift/reduce conflict is if one existed already in the LR(1) parser. LALR(1) parsers can introduce reduce/reduce conflicts. Heres a situation when this might happen:,A B , x A C , y,A B , y A C , x,merges with,to give:,A B , x/y A C , x/y,


    注意事项

    本文(Bottom-up parsing.ppt)为本站会员(progressking105)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开