File labs/lab10.html    Author McKeeman    Copyright © 2008    index

Understanding LR(k)

  1. Look at Cfg tables for E.cfg (5 min)
          >> cd mxcom/m
          >> type E.cfg
          >> c = Cfg(xread('E.cfg'))
          >> c.Vi
          >> c.Vn
          >> c.dumpReduce()
          >> c.dumpShift()
  2. Hand-execute LR tables (20 min).
    Starting in state 1 for string i*i eof
          in state  1, see i, stack i, goto state 3  stack = i   input = *i eof
          in state  3, see *, reduce rule 4          stack = F   input = *i eof
          start over,                                            input = F*i eof
          in state  1, see F, stack F, goto state 4  stack = F   input = *i eof
          in state  4, see *, reduce rule 2          stack = T   input = *i eof
          start over                                             input = T*i eof
          in state  1, see T, stack T, goto state 5  stack = T   input = *i eof
          in state  5, see *, stack *, goto state 10 stack = T*  input = i eof
          in state 10, see i, stack i, goto state 3, stack = T*i input = eof
          in state  3, see eof, reduce rule 4        stack = T*F input = eof
          start over                                 stack =     input = T*F eof
          in state 1,... you finish it
  3. Starting in state 1 for string (i) eof
          in state 1, see (, stack (, goto state 2  stack = (    input = i) eof
          in state 2, ... you finish it
        
  4. Starting in state 1 for (incorrect) string i**i eof
          in state... you finish it