1
2
3
4
5
6
7
8
9
10
11
12
13




          	

• 


• 
14




                      	




num	
   +	
   num	
        *	
   num	


 2      +      3           *      4
15




                      	



                           expr	




num	
   +	
   num	
         *	
     num	


 2      +      3            *        4
16




                       	
              expr	


                            expr	




num	
   +	
   num	
          *	
     num	


 2      +       3            *        4
17




                   	
• 

•  LR

     •  SLR

     •  LALR

     •  GLR

     •  etc...
18




                       	
                                        num	
     +	
        *	
                                  num	
  x	
      >	
        >	
          	
     	
                            +	
   <	
      >	
        <	
                                   *	
   <	
      >	
        >	
	




               num	
        +	
      num	
      *	
      num
19




                   	
                                    num	
     +	
        *	
                              num	
  x	
      >	
        >	
              	
     	
                        +	
   <	
      >	
        <	
                               *	
   <	
      >	
        >	
	




          num	
         +	
      num	
      *	
      num
20


                                                  num > +	
                   	
                                    num	
     +	
        *	
                              num	
  x	
      >	
        >	
              	
     	
                        +	
   <	
      >	
        <	
                               *	
   <	
      >	
        >	
	




          num	
         +	
      num	
      *	
      num
21


                                                      num > +	
                       	
                                        num	
     +	
        *	
                                  num	
  x	
      >	
        >	
          	
     	
                            +	
   <	
      >	
        <	
                                   *	
   <	
      >	
        >	



               num	
	




                            +	
      num	
      *	
      num
22




                             	
                                        num	
     +	
        *	
                                  num	
  x	
      >	
        >	
                	
     	
                            +	
   <	
      >	
        <	
                                   *	
   <	
      >	
        >	



                     num	
	




          +	
                        num	
      *	
      num
23


                                             + < num	
                             	
                                        num	
     +	
        *	
                                  num	
  x	
      >	
        >	
                	
     	
                            +	
   <	
      >	
        <	
                                   *	
   <	
      >	
        >	



                     num	
	




          +	
                        num	
      *	
      num
24


                                             + < num	
                              	
                                         num	
     +	
        *	
                                   num	
  x	
      >	
        >	
                 	
     	
                             +	
   <	
      >	
        <	
                                    *	
   <	
      >	
        >	



                      num	
          num	
	




           +	
                                   *	
      num
25




                              	
                                         num	
     +	
        *	
                                   num	
  x	
      >	
        >	
                 	
     	
                             +	
   <	
      >	
        <	
                                    *	
   <	
      >	
        >	



                      num	
          num	
	




           +	
                                   *	
      num
26


                                                         num > *	
                              	
                                         num	
     +	
          *	
                                   num	
  x	
      >	
          >	
                 	
     	
                             +	
   <	
      >	
          <	
                                    *	
   <	
      >	
          >	



                      num	
          num	
	




           +	
                                   *	
        num
27


                                                                num > *	
                             	
                                                num	
     +	
          *	
                                          num	
  x	
      >	
          >	
                	
     	
                                    +	
   <	
      >	
          <	
                                           *	
   <	
      >	
          >	



                     num	
        num	
	




          +	
                                           *	
        num
28




                             	
                                                num	
     +	
           *	
                                          num	
  x	
      >	
           >	
                	
     	
                                    +	
   <	
      >	
           <	
                                           *	
   <	
      >	
           >	

                                                              + < *	

                     num	
        num	
	




          +	
                                           *	
        num
29




                             	
                                                num	
   +	
        *	
                                          num	
  x	
    >	
        >	
                	
     	
                                    +	
   <	
    >	
        <	
                                           *	
   <	
    >	
        >	

                                                         + < *	

                     num	
        num	
          *	
	




          +	
                                                  num
30




                             	
                                                num	
   +	
        *	
                                          num	
  x	
    >	
        >	
                	
     	
                                    +	
   <	
    >	
        <	
                                           *	
   <	
    >	
        >	



                     num	
        num	
          *	
	




          +	
                                                  num
31




                             	
                                                num	
    +	
        *	
                                          num	
  x	
     >	
        >	
                	
     	
                                    +	
   <	
     >	
        <	
                                           *	
   <	
     >	
        >	

                                                  * < num	

                     num	
        num	
          *	
	




          +	
                                                   num
32




                              	
                                                 num	
    +	
        *	
                                           num	
  x	
     >	
        >	
                 	
     	
                                     +	
   <	
     >	
        <	
                                            *	
   <	
     >	
        >	

                                                   * < num	
          num	
                      num	
        num	
           *	
	




           +
33




                              	
                                                 num	
   +	
        *	
                                           num	
  x	
    >	
        >	
                 	
     	
                                     +	
   <	
    >	
        <	
                                            *	
   <	
    >	
        >	

          num	
                      num	
        num	
           *	
	




           +
34




                             	
                                                num	
   +	
        *	
                                          num	
  x	
    >	
        >	
                	
     	
                                    +	
   <	
    >	
        <	
                                           *	
   <	
    >	
        >	



                     num	
        num	
    num	
          *	
	




          +
35




                             	
                                                num	
    +	
        *	
                                          num	
  x	
     >	
        >	
                	
     	
                                    +	
   <	
     >	
        <	
                                           *	
   <	
     >	
        >	



                     num	
        num	
    num	
   *	
	




          +
36




                       	
                                          num	
    +	
          *	
                                    num	
  x	
     >	
          >	
          	
     	
                              +	
   <	
     >	
          <	
                                     *	
   <	
     >	
          >	



               num	
        num	
    num	
   *	
         +
37




LR 	



1.  E → E + T
2.  E → T
3.  T → T * num
4.  T → num
38




LR 	



1.  E → E + T
2.  E → T
3.  T → T * num
4.  T → num
39




LR 	
                                           	
      GOTO 	
                        *	
   +	
 num	
 $	
        E	
    T	
                  0	
               s3	
           1	
    2	
                  1	
        s4	
          acc	
1.  E → E + T
                  2	
   s5	
 r2	
           r2	
2.  E → T         3	
   r4	
 r4	
           r4	
                  4	
               s3	
                  6	
3.  T → T * num
                  5	
               s7	
4.  T → num	
     6	
   s5	
 r1	
           r1	
                  7	
   r3	
 r3	
           r3
40




LR 	
                           *	
   +	
 num	
 $	
     E	
     T	
                    0	
                   s3	
          1	
     2	

       	




 0	
        num	
         +	
         num	
       *	
         num
41




LR 	
                           *	
   +	
 num	
 $	
       E	
     T	
                    0	
                   s3	
            1	
     2	

       	

                                        shift 3	




 0	
        num	
         +	
         num	
         *	
         num
42




LR 	
                   *	
   +	
 num	
 $	
       E	
     T	
            0	
                   s3	
            1	
     2	

       	

                                shift 3	



                         	



 0	
              +	
         num	
         *	
         num
43




LR 	
                       *	
   +	
 num	
 $	
       E	
     T	
                0	
                   s3	
            1	
     2	

       	

                                    shift 3	
            3   	



 3	

 0	
                  +	
         num	
         *	
         num
44




LR 	
                   *	
    +	
 num	
 $	
     E	
     T	
            3	
     r4	
 r4	
            r4	

       	

                              	




 3	

 0	
              +	
          num	
       *	
         num
45




LR 	
                   *	
     +	
 num	
 $	
      E	
     T	
            3	
     r4	
 r4	
              r4	

       	

                              reduce 4	




 3	

 0	
              +	
            num	
       *	
         num
46




LR 	
                         *	
     +	
 num	
 $	
      E	
     T	
                  3	
       r4	
 r4	
            r4	

       	

                                    reduce 4	



                        4             	
            4	
 3	

 0	
                    +	
            num	
       *	
         num
47




LR 	
                           *	
     +	
 num	
 $	
      E	
     T	
                    3	
     r4	
 r4	
              r4	

       	

            T → num	
                 reduce 4	




             4	
 3	

 0	
                      +	
            num	
       *	
         num
48




LR 	
                                *	
     +	
 num	
 $	
      E	
     T	
                         3	
     r4	
 r4	
              r4	

       	

                 T → num	
                 reduce 4	


            	
                  4	



 0	
                           +	
            num	
       *	
         num
49




LR 	
                           *	
     +	
 num	
 $	
       E	
     T	
                    3	
     r4	
 r4	
               r4	
                    0	
                      s3	
           1	
     2	
       	

            T → num	
                 reduce 4	




             4	



 0	
                      +	
            num	
        *	
         num
50




LR 	
                           *	
     +	
 num	
 $	
         E	
     T	
                    3	
     r4	
 r4	
               r4	
                    0	
                      s3	
             1	
     2	
       	

            T → num	
                 reduce 4	
                                                            go to 2	


             4	



 0	
                      +	
            num	
        *	
           num
51




LR 	
                                   *	
     +	
 num	
 $	
         E	
     T	
                            3	
     r4	
 r4	
               r4	
                            0	
                      s3	
             1	
     2	
          	

                    T → num	
                 reduce 4	
2              	
                                                   go to 2	


                     4	
    2	

    0	
                           +	
            num	
        *	
           num
52




LR 	
                         *	
   +	
 num	
 $	
     E	
     T	
                  2	
     s5	
 r2	
           r2	

       	




            4	
 2	

 0	
                    +	
         num	
       *	
         num
53




LR 	
                         *	
     +	
 num	
 $	
      E	
     T	
                  2	
     s5	
 r2	
              r2	

       	

                                    reduce 2	




            4	
 2	

 0	
                    +	
            num	
       *	
         num
54




LR 	
                         *	
     +	
 num	
 $	
      E	
     T	
                  2	
     s5	
 r2	
              r2	

       	

                                    reduce 2	




            4	
   2	
 2	

 0	
                    +	
            num	
       *	
         num
55




LR 	
                             *	
     +	
 num	
 $	
      E	
     T	
                      2	
     s5	
 r2	
              r2	

       	

            E → T	
                     reduce 2	




            4	
       2	
 2	

 0	
                        +	
            num	
       *	
         num
56




LR 	
                             *	
     +	
 num	
 $	
      E	
     T	
                      2	
     s5	
 r2	
              r2	

       	

            E → T	
                     reduce 2	




            4	
       2	



 0	
                        +	
            num	
       *	
         num
57




LR 	
                             *	
     +	
 num	
 $	
       E	
     T	
                      2	
     s5	
 r2	
               r2	
                      0	
                      s3	
           1	
     2	
       	

            E → T	
                     reduce 2	




            4	
       2	



 0	
                        +	
            num	
        *	
         num
58




LR 	
                             *	
     +	
 num	
 $	
         E	
     T	
                      2	
     s5	
 r2	
               r2	
                      0	
                      s3	
             1	
     2	
       	

            E → T	
                     reduce 2	
                                                              go to 1	


            4	
       2	



 0	
                        +	
            num	
        *	
           num
59




LR 	
                             *	
     +	
 num	
 $	
         E	
     T	
                      2	
     s5	
 r2	
               r2	
                      0	
                      s3	
             1	
     2	
       	

            E → T	
                     reduce 2	
                                                              go to 1	


            4	
       2	
 1	

 0	
                        +	
            num	
        *	
           num
60




LR 	
                         *	
   +	
 num	
 $	
     E	
     T	
                  1	
               s4	
     acc	

       	




            4	
   2	
 1	

 0	
                    +	
         num	
       *	
         num
61




LR 	
                         *	
     +	
 num	
 $	
     E	
     T	
                  1	
                s4	
       acc	

       	
                                    shift 4	




            4	
   2	
 1	

 0	
                    +	
           num	
       *	
         num
62




LR 	
                   *	
     +	
 num	
 $	
     E	
     T	
                  1	
          s4	
       acc	

       	
                              shift 4	




            4	
   2	
 1	

 0	
                            num	
       *	
         num
63




LR 	
                   *	
     +	
 num	
 $	
     E	
     T	
                  1	
          s4	
       acc	

       	
                              shift 4	


 4	
            4	
   2	
 1	

 0	
                            num	
       *	
         num
64




LR 	
                   *	
   +	
 num	
 $	
     E	
     T	
                  4	
             s3	
                  6	

       	




 4	
            4	
   2	
 1	

 0	
                          num	
       *	
         num
65




LR 	
                   *	
   +	
 num	
 $	
         E	
     T	
                  4	
             s3	
                      6	

       	
                                  shift 3	


 4	
            4	
   2	
 1	

 0	
                          num	
           *	
         num
66




LR 	
                   *	
   +	
 num	
 $	
         E	
     T	
                  4	
             s3	
                      6	

       	
                                  shift 3	


 4	
            4	
   2	
 1	

 0	
                                          *	
         num
67




LR 	
                   *	
   +	
 num	
 $	
         E	
     T	
                  4	
             s3	
                      6	

       	
                                  shift 3	
 3	

 4	
            4	
   2	
 1	

 0	
                                          *	
         num
68




LR 	
                   *	
   +	
 num	
 $	
     E	
     T	
                  3	
   r4	
 r4	
       r4	

       	

 3	

 4	
            4	
   2	
 1	

 0	
                                      *	
         num
69




LR 	
                          *	
   +	
 num	
 $	
     E	
     T	
                      3	
   r4	
 r4	
          r4	

       	
                  reduce 4	
 3	

 4	
            4	
       2	
 1	

 0	
                                             *	
         num
70




LR 	
                          *	
     +	
 num	
 $	
      E	
     T	
                      3	
   r4	
 r4	
             r4	

       	
                  reduce 4	
                                        T → N	
 3	

 4	
            4	
       2	
        4	
 1	

 0	
                                                *	
         num
71




LR 	
                          *	
     +	
 num	
 $	
      E	
     T	
                      3	
   r4	
 r4	
             r4	

       	
                  reduce 4	
                                        T → N	


 4	
            4	
       2	
        4	
 1	

 0	
                                                *	
         num
72




LR 	
                          *	
     +	
 num	
 $	
      E	
     T	
                      3	
   r4	
 r4	
             r4	
                      4	
                  s3	
                   6	
       	
                  reduce 4	
                                        T → N	


 4	
            4	
       2	
        4	
 1	

 0	
                                                *	
         num
73




LR 	
                          *	
     +	
 num	
 $	
        E	
     T	
                      3	
   r4	
 r4	
             r4	
                      4	
                  s3	
                     6	
       	
                  reduce 4	
                                        T → N	
                                                          go to 6	

 4	
            4	
       2	
        4	
 1	

 0	
                                                *	
           num
74




LR 	
                          *	
     +	
 num	
 $	
        E	
     T	
                      3	
   r4	
 r4	
             r4	
                      4	
                  s3	
                     6	
       	
                  reduce 4	
                                        T → N	
 6	
                                                          go to 6	

 4	
            4	
       2	
        4	
 1	

 0	
                                                *	
           num
75




LR 	
                   *	
     +	
 num	
 $	
     E	
     T	
                  6	
   s5	
 r1	
         r1	

       	

 6	

 4	
            4	
   2	
     4	
 1	

 0	
                                        *	
         num
76




LR 	
                      *	
      +	
 num	
 $	
     E	
     T	
                  6	
     s5	
 r1	
           r1	

       	

                        shift 5	
 6	

 4	
            4	
   2	
         4	
 1	

 0	
                                            *	
         num
77




LR 	
                      *	
      +	
 num	
 $	
    E	
     T	
                  6	
     s5	
 r1	
           r1	

       	

                        shift 5	
 6	

 4	
            4	
   2	
         4	
 1	

 0	
                                                       num
78




LR 	
                     *	
      +	
 num	
 $	
    E	
     T	
                 6	
     s5	
 r1	
           r1	

  5	
 	

                       shift 5	
 6	

 4	
           4	
   2	
         4	
 1	

 0	
                                                      num
79




LR 	
                  *	
     +	
 num	
 $	
   E	
     T	
                 5	
               s7	

  5	
 	

 6	

 4	
           4	
   2	
     4	
 1	

 0	
                                                 num
80




LR 	
                  *	
     +	
 num	
 $	
   E	
     T	
                 5	
               s7	

  5	
 	

                                 shift 7	
 6	

 4	
           4	
   2	
     4	
 1	

 0	
                                                 num
81




LR 	
                  *	
     +	
 num	
 $	
   E	
    T	
                 5	
               s7	

  5	
 	

                                 shift 7	
 6	

 4	
           4	
   2	
     4	
 1	

 0
82




LR 7	
 	
               *	
     +	
 num	
 $	
   E	
    T	
                  5	
               s7	

   5	
 	

                                  shift 7	
   6	

   4	
            4	
   2	
     4	
   1	

   0
83




LR 7	
 	
               *	
     +	
 num	
 $	
    E	
    T	
                  7	
   r3	
 r3	
         r3	

   5	
 	

   6	

   4	
            4	
   2	
     4	
   1	

   0
84




LR 7	
 	
               *	
     +	
 num	
 $	
    E	
    T	
                  7	
   r3	
 r3	
         r3	

   5	
 	
                                 reduce 3	
   6	

   4	
            4	
   2	
     4	
   1	

   0
85




LR 7	
 	
               *	
     +	
 num	
 $	
    E	
    T	
                  7	
   r3	
 r3	
         r3	

   5	
 	
                                 reduce 3	
   6	

   4	
            4	
   2	
     4	
       3	
   1	

   0
86




LR 7	
 	
               *	
     +	
 num	
 $	
     E	
    T	
                  7	
   r3	
 r3	
          r3	

   5	
 	
                                 reduce 3	
   6	

   4	
            4	
   2	
     4	
        3	
   1	

   0	
                          T → T * N
87




LR 	
                   *	
     +	
 num	
 $	
     E	
    T	
                  7	
   r3	
 r3	
          r3	

       	
                                 reduce 3	



 4	
            4	
   2	
     4	
        3	
 1	

 0	
                            T → T * N
88




LR 	
                   *	
     +	
 num	
 $	
      E	
    T	
                  7	
   r3	
 r3	
           r3	
                  4	
                s3	
                 6	
       	
                                 reduce 3	



 4	
            4	
   2	
     4	
        3	
 1	

 0	
                            T → T * N
89




LR 	
                   *	
     +	
 num	
 $	
        E	
    T	
                  7	
   r3	
 r3	
           r3	
                  4	
                s3	
                   6	
       	
                                 reduce 3	

                                                   go to 6	

 4	
            4	
   2	
     4	
        3	
 1	

 0	
                            T → T * N
90




LR 	
                   *	
     +	
 num	
 $	
        E	
    T	
                  7	
   r3	
 r3	
           r3	
                  4	
                s3	
                   6	
       	
                                 reduce 3	
 6	
                                                   go to 6	

 4	
            4	
   2	
     4	
        3	
 1	

 0	
                            T → T * N
91




LR 	
                   *	
     +	
 num	
 $	
    E	
    T	
                  6	
   s5	
 r1	
         r1	

       	

 6	

 4	
            4	
   2	
     4	
       3	
 1	

 0
92




LR 	
                   *	
     +	
 num	
 $	
    E	
    T	
                  6	
   s5	
 r1	
         r1	

       	
                                 reduce 1	
 6	

 4	
            4	
   2	
     4	
       3	
 1	

 0
93




LR 	
                   *	
     +	
 num	
 $	
       E	
    T	
                  6	
   s5	
 r1	
         r1	

       	
                                 reduce 1	
 6	

 4	
            4	
   2	
     4	
       3	
       1	
 1	

 0
94




LR 	
                   *	
     +	
 num	
 $	
       E	
    T	
                  6	
   s5	
 r1	
         r1	

       	
                                 reduce 1	
 6	

 4	
            4	
   2	
     4	
       3	
       1	
 1	

 0	
                          E → E + T
95




LR 	
                   *	
     +	
 num	
 $	
       E	
    T	
                  6	
   s5	
 r1	
         r1	

       	
                                 reduce 1	




            4	
   2	
     4	
       3	
       1	



 0	
                          E → E + T
96




LR 	
                   *	
     +	
 num	
 $	
       E	
    T	
                  6	
   s5	
 r1	
          r1	
                  0	
               s3	
            1	
    2	
       	
                                 reduce 1	




            4	
   2	
     4	
       3	
       1	



 0	
                          E → E + T
97




LR 	
                   *	
     +	
 num	
 $	
         E	
    T	
                  6	
   s5	
 r1	
          r1	
                  0	
               s3	
              1	
    2	
       	
                                 reduce 1	

                                                    go to 1	


            4	
   2	
     4	
       3	
       1	



 0	
                          E → E + T
98




LR 	
                   *	
     +	
 num	
 $	
         E	
    T	
                  6	
   s5	
 r1	
          r1	
                  0	
               s3	
              1	
    2	
       	
                                 reduce 1	

                                                    go to 1	


            4	
   2	
     4	
       3	
       1	
 1	

 0	
                          E → E + T
99




LR 	
                   *	
     +	
 num	
 $	
        E	
    T	
                  1	
           s4	
         acc	

       	




            4	
   2	
     4	
          3	
     1	
 1	

 0
100




LR 	
                   *	
     +	
 num	
 $	
        E	
     T	
                  1	
           s4	
         acc	

       	
                                  accept !	




            4	
   2	
     4	
          3	
     1	
 1	

 0
101




                  GOTO   	



1.  E → E + T
2.  E → T
3.  T → T * num
4.  T → num
102




                  GOTO   	


0. S → E
1.  E → E + T
2.  E → T
3.  T → T * num
4.  T → num
103




                  GOTO      	


0. S → E
1.  E → E + T
                    LR(0)
2.  E → T             	
3.  T → T * num
4.  T → num
104




                  GOTO        	


0. S → E
1.  E → E + T
                    LR(0)   LR(0)
2.  E → T             	
              	
3.  T → T * num
4.  T → num
105




                  GOTO        	


0. S → E
1.  E → E + T
                    LR(0)   LR(0)
2.  E → T             	
              	
3.  T → T * num
4.  T → num	
                              GOTO
106




LR(0) 	


E → E + T
107




LR(0) 	


E → E + T	
              1)  E →     E+T
              2)  E → E     +T
              3)  E → E +     T
              4)  E → E + T
108




LR(0) 	

                                  	
E → E + T	
              1)  E →     E+T
              2)  E → E     +T
              3)  E → E +     T
              4)  E → E + T
109


                          0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
             LR(0)   	
   1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                          2.  E	
  →	
  T	
  
I0	
 S	
  →	
   E	
  
 	
  
110


                                   0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
              LR(0)           	
   1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                   2.  E	
  →	
  T	
  
I0	
 S	
  →	
   E	
  
 E	
  →	
   E	
  +	
  T	
  
 E	
  →	
   T	
  
 	
  
111


                                       0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
              LR(0)               	
   1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                       2.  E	
  →	
  T	
  
I0	
 S	
  →	
     E	
  
 E	
  →	
     E	
  +	
  T	
  
 E	
  →	
     T	
  
 T	
  →	
     T	
  *	
  num	
  
 T	
  →	
     num
112


                                         0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
                 LR(0)              	
   1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                         2.  E	
  →	
  T	
  
 I0	
  S	
  →	
      E	
  
  E	
  →	
      E	
  +	
  T	
  
  E	
  →	
      T	
  
  T	
  →	
      T	
  *	
  num	
  
  T	
  →	
      num	

E	

 I1	
  S	
  →	
  E	
   	
  
  E	
  →	
  E	
   	
  +	
  T	
  
113


                                                      0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
                 LR(0)                        	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                      2.  E	
  →	
  T	
  
 I0	
                                 I2	
  S	
  →	
      E	
                     E	
  →	
  T	
   	
  
  E	
  →	
      E	
  +	
  T	
           T	
  →	
  T	
   	
  *	
  num	
  
                                    T	
  E	
  →	
      T	
  
  T	
  →	
      T	
  *	
  num	
  
  T	
  →	
      num	

E	

 I1	
  S	
  →	
  E	
   	
  
  E	
  →	
  E	
   	
  +	
  T	
  
114


                                                        0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
                 LR(0)                          	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                        2.  E	
  →	
  T	
  
 I0	
                                   I2	
  S	
  →	
      E	
                       E	
  →	
  T	
   	
  
  E	
  →	
      E	
  +	
  T	
             T	
  →	
  T	
   	
  *	
  num	
  
                                      T	
  E	
  →	
      T	
  
  T	
  →	
      T	
  *	
  num	
  
  T	
  →	
      num	
       num	
                       I3	
E	
         T	
  →	
  num	
   	
  	
  

 I1	
  S	
  →	
  E	
   	
  
  E	
  →	
  E	
   	
  +	
  T	
  
115


                                                        0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
                LR(0)                          	
       1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                        2.  E	
  →	
  T	
  
 I0	
                                  I2	
  S	
  →	
     E	
                       E	
  →	
  T	
   	
  
  E	
  →	
     E	
  +	
  T	
             T	
  →	
  T	
   	
  *	
  num	
  
                                     T	
  E	
  →	
     T	
  
  T	
  →	
     T	
  *	
  num	
  
  T	
  →	
     num	
      num	
                      I3	
E	
        T	
  →	
  num	
   	
  	
           E	
  →	
  E	
  +	
   T	
  

 I1	
  S	
  →	
  E	
   	
                                                I4	
                                 +	
  E	
  →	
  E	
   	
  +	
  T	
  
116


                                                       0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
                LR(0)                          	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                       2.  E	
  →	
  T	
  
 I0	
                                  I2	
  S	
  →	
     E	
                       E	
  →	
  T	
   	
  
  E	
  →	
     E	
  +	
  T	
             T	
  →	
  T	
   	
  *	
  num	
  
                                     T	
  E	
  →	
     T	
  
  T	
  →	
     T	
  *	
  num	
  
  T	
  →	
     num	
      num	
                      I3	
E	
        T	
  →	
  num	
   	
  	
           E	
  →	
  E	
  +	
   T	
  
                                           T	
  →	
   T	
  *	
  num	
  
 I1	
                                      T	
  →	
   num	
  
  S	
  →	
  E	
   	
                                                I4	
                                 +	
  E	
  →	
  E	
   	
  +	
  T	
  
117


                                                     0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
               LR(0)                         	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                     2.  E	
  →	
  T	
  
 I0	
                                I2	
  S	
  →	
     E	
                     E	
  →	
  T	
   	
  
  E	
  →	
     E	
  +	
  T	
           T	
  →	
  T	
   	
  *	
  num	
  
                                   T	
  E	
  →	
     T	
  
  T	
  →	
     T	
  *	
  num	
  
  T	
  →	
     num	
      num	
                      I3	
E	
        T	
  →	
  num	
   	
  	
      E	
  →	
  E	
  +	
   T	
  
                                num	
 T	
  →	
   T	
  *	
  num	
  
 I1	
                                T	
  →	
   num	
  
  S	
  →	
  E	
   	
                                    I4	
                                 +	
  E	
  →	
  E	
   	
  +	
  T	
  
118


                                                     0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
               LR(0)                         	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                     2.  E	
  →	
  T	
  
 I0	
                                I2	
  S	
  →	
     E	
                     E	
  →	
  T	
   	
  
  E	
  →	
     E	
  +	
  T	
           T	
  →	
  T	
   	
  *	
  num	
  
                                   T	
  E	
  →	
     T	
  
                                     I5	
              *	
  T	
  →	
     T	
  *	
  num	
  
  T	
  →	
     num	
                     T	
  →	
  T	
  *	
   num	
  
      num	
                      I3	
E	
        T	
  →	
  num	
   	
  	
      E	
  →	
  E	
  +	
   T	
  
                                num	
 T	
  →	
   T	
  *	
  num	
  
 I1	
                                T	
  →	
   num	
  
  S	
  →	
  E	
   	
                                    I4	
                                 +	
  E	
  →	
  E	
   	
  +	
  T	
  
119


                                                     0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
               LR(0)                         	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                     2.  E	
  →	
  T	
  
 I0	
                                I2	
  S	
  →	
     E	
                     E	
  →	
  T	
   	
  
  E	
  →	
     E	
  +	
  T	
           T	
  →	
  T	
   	
  *	
  num	
  
                                   T	
  E	
  →	
     T	
  
                                     I5	
              *	
  T	
  →	
     T	
  *	
  num	
  
  T	
  →	
     num	
                     T	
  →	
  T	
  *	
   num	
  
      num	
                                                                                                I6	
                      I3	
                                                       E	
  →	
  E	
  +	
  T	
   	
  
E	
        T	
  →	
  num	
   	
  	
      E	
  →	
  E	
  +	
   T	
                   T	
  →	
  T	
   	
  *	
  num	
  
                                num	
 T	
  →	
   T	
  *	
  num	
  
                                                                          T	
 I1	
                                T	
  →	
   num	
  
  S	
  →	
  E	
   	
                                    I4	
                                 +	
  E	
  →	
  E	
   	
  +	
  T	
  
120


                                                      0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
                 LR(0)                        	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                      2.  E	
  →	
  T	
  
  I0	
                                I2	
   S	
  →	
     E	
                     E	
  →	
  T	
   	
  
   E	
  →	
     E	
  +	
  T	
           T	
  →	
  T	
   	
  *	
  num	
  
                                    T	
   E	
  →	
     T	
  
                                      I5	
              *	
   T	
  →	
     T	
  *	
  num	
  
   T	
  →	
     num	
                     T	
  →	
  T	
  *	
   num	
  
        num	
                                                            *	
                          I6	
                           I3	
                                             E	
  →	
  E	
  +	
  T	
   	
  
E	
         T	
  →	
  num	
   	
  	
        E	
  →	
  E	
  +	
   T	
           T	
  →	
  T	
   	
  *	
  num	
  
                                   num	
 T	
  →	
   T	
  *	
  num	
  
                                                                       T	
  I1	
                                   T	
  →	
   num	
  
    S	
  →	
  E	
   	
                                            I4	
                                    +	
    E	
  →	
  E	
   	
  +	
  T	
  
121


                                                      0.	
  S	
  →	
  E	
           3.  T	
  →	
  T	
  *	
  N	
  
                 LR(0)                        	
      1.  E	
  →	
  E	
  +	
  T	
   4.  T	
  →	
  N	
                                                      2.  E	
  →	
  T	
  
  I0	
                                I2	
   S	
  →	
     E	
                     E	
  →	
  T	
   	
  
   E	
  →	
     E	
  +	
  T	
           T	
  →	
  T	
   	
  *	
  num	
         I7	
                                    T	
   E	
  →	
     T	
                                                             T	
  →	
  T	
  *	
  num	
   	
  	
  
                                      I5	
              *	
   T	
  →	
     T	
  *	
  num	
  
   T	
  →	
     num	
                                                         num	
                                          T	
  →	
  T	
  *	
   num	
  
        num	
                                                            *	
                          I6	
                           I3	
                                             E	
  →	
  E	
  +	
  T	
   	
  
E	
         T	
  →	
  num	
   	
  	
        E	
  →	
  E	
  +	
   T	
           T	
  →	
  T	
   	
  *	
  num	
  
                                   num	
 T	
  →	
   T	
  *	
  num	
  
                                                                       T	
  I1	
                                   T	
  →	
   num	
  
    S	
  →	
  E	
   	
                                            I4	
                                    +	
    E	
  →	
  E	
   	
  +	
  T	
  
122




LR(0)                    	

                  T	
        I0	
               I2	
                 I7	
               num	
              *	
                                               num	
    E	
           I3	
                  I5	
                         num	
                 *	
                  +	
                   T	
        I1	
               I4	
                 I6
123




LR(0)                         	
      *	
   +	
 num	
 E	
      T	
0	
               3	
   1	
    2	
1	
         4	
2	
   5	
3	
4	
               3	
          6	
5	
               7	
6	
   5	
7
124




                           GOTO 	
      *	
    +	
 num	
 $	
    E	
   T	
0	
                 s3	
      1	
   2	
1	
          s4	
2	
   s5	
3	
4	
                 s3	
            6	
5	
                 s7	
6	
   s5	
7
125




                           GOTO 	
      *	
    +	
 num	
 $	
    E	
   T	
0	
                 s3	
      1	
   2	
   I1	
1	
          s4	
                          S	
  →	
  E	
   	
  
2	
   s5	
                                 E	
  →	
  E	
   	
  +	
  T	
  
3	
4	
                 s3	
            6	
5	
                 s7	
6	
   s5	
7
126




                           GOTO 	
      *	
    +	
 num	
 $	
         E	
   T	
0	
                 s3	
           1	
   2	
   I1	
1	
          s4	
          acc	
                S	
  →	
  E	
   	
  
2	
   s5	
                                      E	
  →	
  E	
   	
  +	
  T	
  
3	
4	
                 s3	
                 6	
5	
                 s7	
6	
   s5	
7
127




                           GOTO 	
                                               I2	
      *	
    +	
 num	
 $	
         E	
   T	
    E	
  →	
  T	
   	
  
0	
                 s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
          s4	
          acc	
2	
   s5	
3	
4	
                 s3	
                 6	
5	
                 s7	
6	
   s5	
7
128




                           GOTO 	
                                      2	
                                               I2	
      *	
    +	
 num	
 $	
         E	
   T	
    E	
  →	
  T	
   	
  
0	
                 s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
          s4	
          acc	
2	
   s5	
3	
4	
                 s3	
                 6	
5	
                 s7	
6	
   s5	
7
129




                           GOTO 	
                          reduce 2	
                                               I2	
      *	
    +	
 num	
 $	
         E	
   T	
    E	
  →	
  T	
   	
  
0	
                 s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
          s4	
          acc	
2	
   s5	
3	
4	
                 s3	
                 6	
5	
                 s7	
6	
   s5	
7
130




                           GOTO 	
                          reduce 2	
                                               I2	
      *	
    +	
 num	
 $	
         E	
   T	
    E	
  →	
  T	
   	
  
0	
                 s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
          s4	
          acc	
2	
   s5	
3	
                                                  shift 5	
4	
                 s3	
                 6	
5	
                 s7	
6	
   s5	
7
131




                           GOTO 	
                          reduce 2	
                                               I2	
      *	
    +	
 num	
 $	
         E	
   T	
    E	
  →	
  T	
   	
  
0	
                 s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
          s4	
          acc	
2	
   s5	
3	
                                                  shift 5	
4	
                 s3	
                 6	
5	
                 s7	
                                                    shift-reduce
6	
   s5	
                                            conflict	
7
132




shift-reduce conflict           (SLR )	

0.	
  S	
  →	
  E	
  
1.  E	
  →	
  E	
  +	
  T	
  
2.  E	
  →	
  T	
  
3.  T	
  →	
  T	
  *	
  N	
  
4.  T	
  →	
  N
133




shift-reduce conflict           (SLR )	

0.	
  S	
  →	
  E	
  
1.  E	
  →	
  E	
  +	
  T	
  
2.  E	
  →	
  T	
  
3.  T	
  →	
  T	
  *	
  N	
  
4.  T	
  →	
  N
134




shift-reduce conflict                             (SLR )	

0.	
  S	
  →	
  E	
  
                                  E
1.  E	
  →	
  E	
  +	
  T	
      +                 $
2.  E	
  →	
  T	
  
3.  T	
  →	
  T	
  *	
  N	
  
4.  T	
  →	
  N	

                                •  +   $         reduce
                                •  *   shift
135




                         GOTO 	
                          reduce 2	
                                             I2	
      *	
    +	
 num	
 $	
       E	
   T	
    E	
  →	
  T	
   	
  
0	
               s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
                                                shift 5	
4	
               s3	
                 6	
5	
               s7	
                                                  shift reduce
6	
   s5	
                                          conflict	
7
136




                         GOTO 	
                                             I3	
      *	
    +	
 num	
 $	
       E	
   T	
     T	
  →	
  num	
   	
  	
  
0	
               s3	
           1	
   2	
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
7
137




                         GOTO 	
                        reduce 4	
                                             I3	
      *	
    +	
 num	
 $	
       E	
   T	
     T	
  →	
  num	
   	
  	
  
0	
               s3	
           1	
   2	
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
7
138




                         GOTO 	
                        reduce 4	
                                             I3	
      *	
    +	
 num	
 $	
       E	
   T	
     T	
  →	
  num	
   	
  	
  
0	
               s3	
           1	
   2	
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
7
139




                         GOTO 	
                                             I6	
      *	
    +	
 num	
 $	
       E	
   T	
    E	
  →	
  E	
  +	
  T	
   	
  
0	
               s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
7
140




                         GOTO 	
                          reduce 1	
                                             I6	
      *	
    +	
 num	
 $	
       E	
   T	
    E	
  →	
  E	
  +	
  T	
   	
  
0	
               s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
7
141




                         GOTO 	
                          reduce 1	
                                             I6	
      *	
    +	
 num	
 $	
       E	
   T	
    E	
  →	
  E	
  +	
  T	
   	
  
0	
               s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
                     shift 5	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
7
142




                         GOTO 	
                          reduce 1	
                                             I6	
      *	
    +	
 num	
 $	
       E	
   T	
    E	
  →	
  E	
  +	
  T	
   	
  
0	
               s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
                     shift 5	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
                                    E
7	
                                          +                     $
143




                         GOTO 	
                          reduce 1	
                                             I6	
      *	
   +	
 num	
 $	
        E	
   T	
    E	
  →	
  E	
  +	
  T	
   	
  
0	
               s3	
           1	
   2	
    T	
  →	
  T	
   	
  *	
  num	
  
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
                     shift 5	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
 r1	
          r1	
                 E
7	
                                          +                     $
144




                         GOTO 	
                                             I7	
      *	
   +	
 num	
 $	
        E	
   T	
    T	
  →	
  T	
  *	
  num	
   	
  	
  
0	
               s3	
           1	
   2	
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
 r1	
          r1	
7
145




                         GOTO 	
                           reduce 3	
                                             I7	
      *	
   +	
 num	
 $	
        E	
   T	
    T	
  →	
  T	
  *	
  num	
   	
  	
  
0	
               s3	
           1	
   2	
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
 r1	
          r1	
7
146




                         GOTO 	
                           reduce 3	
                                             I7	
      *	
   +	
 num	
 $	
        E	
   T	
    T	
  →	
  T	
  *	
  num	
   	
  	
  
0	
               s3	
           1	
   2	
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
 r1	
          r1	
7	
   r3	
 r3	
          r3
147




                         GOTO 	
      *	
   +	
 num	
 $	
        E	
   T	
0	
               s3	
           1	
   2	
1	
        s4	
          acc	
2	
   s5	
 r2	
           r2	
3	
   r4	
 r4	
           r4	
4	
               s3	
                 6	
5	
               s7	
6	
   s5	
 r1	
          r1	
7	
   r3	
 r3	
          r3
148




                              	
                    	
                 	
        	
            	
   O(n)	
                                     	
LR(0)	
          O(n)	
      LR(0)          	
SLR(1)	
         O(n)	
     SLR(1)          	
LALR(1)	
        O(n)	
    LALR(1)          	
         	
LR(1)            O(n)	
      LR(1)          	
GLR              O(n3)	
                    	
SDF      	


                                   O(n)
149




                          	

           	

LR(1)	
                               	
   LALR(1)	
          SLR(1)	
                LR(0)
150




              	
        expr	




2   +     3        *   4
151




                    	
              expr	


                         expr	




num	
   +	


 2      +       3         *       4
152




                    	
              expr	


                         expr	




num	
   +	
   num	
       *	
     num	


 2      +       3         *        4
153




                       	
•  (      )

•  Backtrack parsing

•  Packrat parsing
154




                                          	
         E	


1.  E	
  	
  →	
  T	
  E’	
  
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
             +	
          num	
        *	
     num
155




                                             	
              E	


1.  E	
  	
  →	
  T	
  E’	
  
                                          LL(1)         	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
             +	
          num	
           *	
          num
156




                                          	
         E	


1.  E	
  	
  →	
  T	
  E’	
  
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
              +	
         num	
        *	
     num
157




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
              +	
         num	
              *	
     num
158




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
             +	
          num	
              *	
     num
159




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
             +	
          num	
              *	
     num
160




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
             +	
          num	
              *	
     num
161




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
             +	
          num	
              *	
     num
162




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	



   num	
             +	
          num	
              *	
     num
163




                                                   	
         E	

                                                                    E’	
1.  E	
  	
  →	
  T	
  E’	
                  T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
        T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	

                     1                 +	

   num	
             +	
          num	
                 *	
     num
164




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
     num
165




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
     num
166




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
     num
167




                                                   	
         E	

                                                                    E’	
1.  E	
  	
  →	
  T	
  E’	
                  T	

2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
        T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                   ε	

                     1                 +	

   num	
             +	
          num	
                 *	
     num
168




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                           +	
          E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
     num
169




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                           +	
          E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
     num
170




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                           +	
          E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
     num
171




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                           +	
          E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
              +	
         num	
              *	
     num
172




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                           +	
          E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                 T	
          E’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
              +	
         num	
              *	
     num
173




                                                	
         E	

                                                                 E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                           +	
          E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                 T	
          E’	
3.  T	
  	
  →	
  num	
  T’	
  
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
     num
174




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
      num
175




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
      num
176




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
      num
177




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	




   num	
             +	
          num	
              *	
      num
178




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	

                                                 1                  *	

   num	
             +	
          num	
              *	
      num
179




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
           T	


   num	
             +	
          num	
              *	
      num
180




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
           T	


   num	
             +	
          num	
              *	
      num
181




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
           T	


   num	
             +	
          num	
              *	
      num
182




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
           E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
           E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
           T	


   num	
             +	
          num	
              *	
      num
183




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num
184




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num
185




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num
186




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num
187




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
              E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
              E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
            T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                   ε	
                                                1                  *	
 	
           T	

                                                                            num	
          T’	
   num	
             +	
          num	
              *	
      num
188




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
189




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
190




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
191




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
192




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
193




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
              E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
              E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
            T’	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                   ε	
                                                1                  *	
 	
           T	

                                                                            num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                           ε
194




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
           ε	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
195




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
           ε	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
196




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
           ε	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
197




                                                	
          E	

                                                                   E’	
1.  E	
  	
  →	
  T	
  E’	
               T	
                                                            +	
            E	
2.  E’	
  →	
  +	
  E	
  |	
  ε	
  
                                      num	
     T’	
                                                                   T	
            E’	
3.  T	
  	
  →	
  num	
  T’	
  
                                                           num	
          T’	
           ε	
4.  T’	
  →	
  *	
  T	
  |	
  ε	
                ε	
                                                                   *	
            T	

                                                                          num	
          T’	
   num	
             +	
          num	
              *	
      num	

                                                                                         ε
198




LL(1)    	
• 

• 
199




LL(1)                    	

E	
  →	
  T	
  +	
  E	
  |	
  T	
  
T	
  →	
  num	
  *	
  T	
  |	
  num	
  
200




LL(1)                    	

E	
  →	
  T	
  +	
  E	
  |	
  T	
  
T	
  →	
  num	
  *	
  T	
  |	
  num	
  


       E	
  →	
  T	
  E’	
  
       E’→	
  +	
  E	
  |	
  ε	
  
       T	
  →	
  num	
  *	
  T	
  |	
  num	
  
201




LL(1)                    	

E	
  →	
  T	
  +	
  E	
  |	
  T	
  
T	
  →	
  num	
  *	
  T	
  |	
  num	
  

                                                 E	
  →	
  T	
  E’	
  
       E	
  →	
  T	
  E’	
  
                                                 E’→	
  +	
  E	
  |	
  ε	
  
       E’→	
  +	
  E	
  |	
  ε	
  
                                                 T	
  →	
  num	
  T’	
  
       T	
  →	
  num	
  *	
  T	
  |	
  num	
  
                                                 T’→	
  *	
  T	
  |	
  ε	
  
202




LL(1)                    	

E	
  →	
  T	
  +	
  E	
  |	
  T	
  
                                                 LL(2)        	
T	
  →	
  num	
  *	
  T	
  |	
  num	
  

                                                   E	
  →	
  T	
  E’	
  
       E	
  →	
  T	
  E’	
  
                                                   E’→	
  +	
  E	
  |	
  ε	
  
       E’→	
  +	
  E	
  |	
  ε	
  
                                                   T	
  →	
  num	
  T’	
  
       T	
  →	
  num	
  *	
  T	
  |	
  num	
  
                                                   T’→	
  *	
  T	
  |	
  ε	
  
203




Backtrack parsing	
                           1.  E → T + E
          E	
              2.  E → T
                           3.  T → num * T
                           4.  T → num	




         num	
   +	
   num	
    *	
     num
204




Backtrack parsing	
                            1.  E → T + E
           E	
              2.  E → T
                            3.  T → num * T
    T	
    +	
    E	
       4.  T → num	




          num	
   +	
   num	
    *	
     num
205




Backtrack parsing	
                            1.  E → T + E
           E	
              2.  E → T
                            3.  T → num * T
    T	
    +	
    E	
       4.  T → num	




          num	
   +	
   num	
    *	
     num
206




 Backtrack parsing	
                                    1.  E → T + E
                E	
                 2.  E → T
                                    3.  T → num * T
        T	
         +	
   E	
       4.  T → num	


num	
   *	
   T	


               num	
      +	
   num	
    *	
     num
207




 Backtrack parsing	
                                    1.  E → T + E
                E	
                 2.  E → T
                                    3.  T → num * T
        T	
         +	
   E	
       4.  T → num	


num	
   *	
   T	


               num	
      +	
   num	
    *	
     num
208




 Backtrack parsing	
                                    1.  E → T + E
                E	
                 2.  E → T
                                    3.  T → num * T
        T	
         +	
   E	
       4.  T → num	


num	
   *	
   T	


               num	
      +	
   num	
    *	
     num
209




 Backtrack parsing	
                                    1.  E → T + E
                E	
                 2.  E → T
                                    3.  T → num * T
        T	
         +	
   E	
       4.  T → num	


num	
   *	
   T	


               num	
      +	
   num	
    *	
     num
210




 Backtrack parsing	
                                    1.  E → T + E
                E	
                 2.  E → T
                                    3.  T → num * T
        T	
         +	
   E	
       4.  T → num	


num	
   *	
   T	


               num	
      +	
   num	
    *	
     num
211




Backtrack parsing	
                             1.  E → T + E
           E	
               2.  E → T
                             3.  T → num * T
    T	
    +	
    E	
        4.  T → num	


                   Backtrack !	

          num	
   +	
    num	
     *	
    num
212




Backtrack parsing	
                            1.  E → T + E
           E	
              2.  E → T
                            3.  T → num * T
    T	
    +	
    E	
       4.  T → num	




          num	
   +	
   num	
    *	
     num
213




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
214




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
215




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
216




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
217




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
218




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
219




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
220




Backtrack parsing	
                                1.  E → T + E
            E	
                 2.  E → T
                                3.  T → num * T
    T	
     +	
     E	
         4.  T → num	


   num	
      T	
   +	
   E	


           num	
    +	
   num	
      *	
     num
221




Backtrack parsing	
                                1.  E → T + E
            E	
                 2.  E → T
                                3.  T → num * T
    T	
     +	
     E	
         4.  T → num	


   num	
      T	
   +	
   E	


           num	
    +	
   num	
      *	
     num
222

                  E	
Backtrack parsing	
                                          1.  E → T + E
    T	
           +	
         E	
                                          2.  E → T
                                          3.  T → num * T
   num	
            T	
       +	
   E	
                                          4.  T → num	

          num	
         *	
   T	



              num	
           +	
   num	
      *	
     num
223

                  E	
Backtrack parsing	
                                          1.  E → T + E
    T	
           +	
         E	
                                          2.  E → T
                                          3.  T → num * T
   num	
            T	
       +	
   E	
                                          4.  T → num	

          num	
         *	
   T	



              num	
           +	
   num	
      *	
     num
224

                  E	
Backtrack parsing	
                                          1.  E → T + E
    T	
           +	
         E	
                                          2.  E → T
                                          3.  T → num * T
   num	
            T	
       +	
   E	
                                          4.  T → num	

          num	
         *	
   T	



              num	
           +	
   num	
      *	
     num
225

                  E	
Backtrack parsing	
                                          1.  E → T + E
    T	
           +	
         E	
                                          2.  E → T
                                          3.  T → num * T
   num	
            T	
       +	
   E	
                                          4.  T → num	

          num	
         *	
   T	



              num	
           +	
   num	
      *	
     num
226

                  E	
Backtrack parsing	
                                          1.  E → T + E
    T	
           +	
         E	
                                          2.  E → T
                                          3.  T → num * T
   num	
            T	
       +	
   E	
                                          4.  T → num	

          num	
         *	
   T	



              num	
           +	
   num	
      *	
     num
227

                  E	
Backtrack parsing	
                                          1.  E → T + E
    T	
           +	
         E	
                                          2.  E → T
                                          3.  T → num * T
   num	
            T	
       +	
   E	
                                          4.  T → num	

          num	
         *	
   T	



              num	
           +	
   num	
      *	
     num
228

    T	
           +	
         E	

Backtrack parsing	
                                          1.  E → T + E
   num	
            T	
       +	
   E	
                                          2.  E → T

          num	
         *	
   T	
                                          3.  T → num * T
                                          4.  T → num	

                   num	
      *	
   T	



              num	
           +	
   num	
      *	
     num
229

    T	
           +	
         E	

Backtrack parsing	
                                          1.  E → T + E
   num	
            T	
       +	
   E	
                                          2.  E → T

          num	
         *	
   T	
                                          3.  T → num * T
                                          4.  T → num	

                   num	
      *	
   T	



              num	
           +	
   num	
      *	
     num
230

    T	
           +	
         E	

Backtrack parsing	
                                          1.  E → T + E
   num	
            T	
       +	
   E	
                                          2.  E → T

          num	
         *	
   T	
                                          3.  T → num * T
                                          4.  T → num	

                   num	
      *	
   T	



              num	
           +	
   num	
      *	
     num
231

    T	
           +	
         E	

Backtrack parsing	
                                          1.  E → T + E
   num	
            T	
       +	
   E	
                                          2.  E → T

          num	
         *	
   T	
                                          3.  T → num * T
                                          4.  T → num	

                   num	
      *	
   T	



              num	
           +	
   num	
      *	
     num
232

    T	
           +	
         E	

Backtrack parsing	
                                          1.  E → T + E
   num	
            T	
       +	
   E	
                                          2.  E → T

          num	
         *	
   T	
                                          3.  T → num * T
                                          4.  T → num	

                   num	
      *	
   T	



              num	
           +	
   num	
      *	
     num
233

    T	
           +	
         E	

Backtrack parsing	
                                          1.  E → T + E
   num	
            T	
       +	
   E	
                                          2.  E → T

          num	
         *	
   T	
                                          3.  T → num * T
                                          4.  T → num	


                                      Backtrack !	

              num	
           +	
   num	
      *	
     num
234

    T	
           +	
         E	

Backtrack parsing	
                                          1.  E → T + E
   num	
            T	
       +	
   E	
                                          2.  E → T

          num	
         *	
   T	
                                          3.  T → num * T
                                          4.  T → num	




              num	
           +	
   num	
      *	
     num
235

    T	
           +	
          E	

Backtrack parsing	
                                            1.  E → T + E
   num	
            T	
        +	
    E	
                                            2.  E → T

          num	
         *	
    T	
                                            3.  T → num * T
                                            4.  T → num	

                              num	



              num	
            +	
    num	
      *	
     num
236

    T	
           +	
          E	

Backtrack parsing	
                                            1.  E → T + E
   num	
            T	
        +	
    E	
                                            2.  E → T

          num	
         *	
    T	
                                            3.  T → num * T
                                            4.  T → num	

                              num	



              num	
            +	
    num	
      *	
     num
237

    T	
           +	
          E	

Backtrack parsing	
                                            1.  E → T + E
   num	
            T	
        +	
    E	
                                            2.  E → T

          num	
         *	
    T	
                                            3.  T → num * T
                                            4.  T → num	

                              num	



              num	
            +	
    num	
      *	
     num
238

    T	
           +	
          E	

Backtrack parsing	
                                            1.  E → T + E
   num	
            T	
        +	
    E	
                                            2.  E → T

          num	
         *	
    T	
                                            3.  T → num * T
                                            4.  T → num	

                              num	



              num	
            +	
    num	
      *	
     num
239

    T	
           +	
          E	

Backtrack parsing	
                                            1.  E → T + E
   num	
            T	
        +	
    E	
                                            2.  E → T

          num	
         *	
    T	
                                            3.  T → num * T
                                            4.  T → num	

                              num	



              num	
            +	
    num	
      *	
     num
240

    T	
           +	
          E	

Backtrack parsing	
                                            1.  E → T + E
   num	
            T	
        +	
    E	
                                            2.  E → T

          num	
         *	
    T	
                                            3.  T → num * T
                                            4.  T → num	

                              num	



              num	
            +	
    num	
      *	
     num
241

    T	
           +	
          E	

Backtrack parsing	
                                            1.  E → T + E
   num	
            T	
        +	
    E	
                                            2.  E → T

          num	
         *	
    T	
                                            3.  T → num * T
                                            4.  T → num	

                              num	



              num	
            +	
    num	
      *	
     num
242




Backtrack parsing	
                                   1.  E → T + E
            E	
                    2.  E → T
                                   3.  T → num * T
    T	
     +	
        E	
         4.  T → num	


   num	
           Backtrack !	


           num	
       +	
     num	
    *	
     num
243




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	


           num	
   +	
   num	
    *	
     num
244




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	
           T	


           num	
   +	
   num	
    *	
     num
245




Backtrack parsing	
                             1.  E → T + E
            E	
              2.  E → T
                             3.  T → num * T
    T	
     +	
    E	
       4.  T → num	


   num	
           T	


           num	
   +	
   num	
    *	
     num
246

            E	
Backtrack parsing	
                                 1.  E → T + E
    T	
     +	
      E	
                                 2.  E → T
                                 3.  T → num * T
   num	
             T	
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
247

            E	
Backtrack parsing	
                                 1.  E → T + E
    T	
     +	
      E	
                                 2.  E → T
                                 3.  T → num * T
   num	
             T	
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
248

            E	
Backtrack parsing	
                                 1.  E → T + E
    T	
     +	
      E	
                                 2.  E → T
                                 3.  T → num * T
   num	
             T	
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
249

            E	
Backtrack parsing	
                                 1.  E → T + E
    T	
     +	
      E	
                                 2.  E → T
                                 3.  T → num * T
   num	
             T	
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
250

            E	
Backtrack parsing	
                                 1.  E → T + E
    T	
     +	
      E	
                                 2.  E → T
                                 3.  T → num * T
   num	
             T	
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
251

            E	
Backtrack parsing	
                                 1.  E → T + E
    T	
     +	
      E	
                                 2.  E → T
                                 3.  T → num * T
   num	
             T	
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
252

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                 1.  E → T + E
   num	
                                 2.  E → T

             num	
   *	
   T	
   3.  T → num * T
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
253

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                 1.  E → T + E
   num	
                                 2.  E → T

             num	
   *	
   T	
   3.  T → num * T
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
254

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                 1.  E → T + E
   num	
                                 2.  E → T

             num	
   *	
   T	
   3.  T → num * T
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
255

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                 1.  E → T + E
   num	
                                 2.  E → T

             num	
   *	
   T	
   3.  T → num * T
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
256

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                 1.  E → T + E
   num	
                                 2.  E → T

             num	
   *	
   T	
   3.  T → num * T
                                 4.  T → num	

             num	
   *	
   T	



           num	
     +	
   num	
      *	
     num
257

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                   1.  E → T + E
   num	
                                   2.  E → T

             num	
   *	
   T	
     3.  T → num * T
                                   4.  T → num	


                                 Backtrack !	

           num	
     +	
   num	
         *	
      num
258

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                 1.  E → T + E
   num	
                                 2.  E → T

             num	
   *	
   T	
   3.  T → num * T
                                 4.  T → num	




           num	
     +	
   num	
      *	
     num
259

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                   1.  E → T + E
   num	
                                   2.  E → T

             num	
   *	
    T	
    3.  T → num * T
                                   4.  T → num	

                           num	



           num	
     +	
    num	
       *	
     num
260

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                   1.  E → T + E
   num	
                                   2.  E → T

             num	
   *	
    T	
    3.  T → num * T
                                   4.  T → num	

                           num	



           num	
     +	
    num	
       *	
     num
261

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                   1.  E → T + E
   num	
                                   2.  E → T

             num	
   *	
    T	
    3.  T → num * T
                                   4.  T → num	

                           num	



           num	
     +	
    num	
       *	
     num
262

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                   1.  E → T + E
   num	
                                   2.  E → T

             num	
   *	
    T	
    3.  T → num * T
                                   4.  T → num	

                           num	



           num	
     +	
    num	
       *	
     num
263

    T	
     +	
      E	

Backtrack parsing	
                     T	
                                   1.  E → T + E
   num	
                                   2.  E → T

             num	
   *	
    T	
    3.  T → num * T
                                   4.  T → num	

                           num	



           num	
     +	
    num	
       *	
     num
264
            E	

Backtrack parsing	
                                  1.  E → T + E
    T	
     +	
      E	
                                  2.  E → T

                     T	
                                  3.  T → num * T
   num	
                                  4.  T → num	

             num	
   *	
    T	



                           num	
           num	
     +	
     num	
     *	
     num
265
                 E	

Backtrack parsing	
                                       1.  E → T + E
    T	
          +	
      E	
                                       2.  E → T

                          T	
                                       3.  T → num * T
   num	
                                       4.  T → num	

                  num	
   *	
    T	
           	

                                num	
                num	
     +	
     num	
     *	
     num
266




                	
                                      E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
4.  	
  T	
  →	
  num
267




                	
                                            E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                      E	
   +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
4.  	
  T	
  →	
  num
268




                	
                                            E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                      E	
   +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
4.  	
  T	
  →	
  num
269




                	
                                                    E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                            E	
     +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
                                      E	
   +	
   T	
4.  	
  T	
  →	
  num
270




                	
                                                    E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                            E	
     +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
                                      E	
   +	
   T	
4.  	
  T	
  →	
  num
271




                	
                                                         E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                                 E	
     +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
                                          E	
    +	
   T	
4.  	
  T	
  →	
  num	

                                    E	
   +	
   T
272




                	
                                                         E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                                 E	
     +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
                                          E	
    +	
   T	
4.  	
  T	
  →	
  num	

                                    E	
   +	
   T
273




                	
                                                         E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                                 E	
     +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
                                          E	
    +	
   T	
4.  	
  T	
  →	
  num	

                                    E	
   +	
   T	



                          E	
       +	
   T
274




                	
                                                         E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                                 E	
     +	
         T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
                                          E	
    +	
   T	
4.  	
  T	
  →	
  num	

                                    E	
   +	
   T	



                          E	
       +	
   T
275




                	
                                                         E	


1.  	
  E	
  →	
  E	
  +	
  T	
  
                                                 E	
     +	
          T	
2.  	
  E	
  →	
  T	
  
3.  	
  T	
  →	
  T	
  *	
  num	
  
                                          E	
    +	
   T	
4.  	
  T	
  →	
  num	

                                    E	
   +	
   T	
                                                                     	

                          E	
       +	
   T
276




                               	

	
  E	
  →	
  E	
  +	
  T	
  |	
  T	
  
	
  T	
  →	
  T	
  *	
  num	
  |	
  num	
  
277




                               	

	
  E	
  →	
  E	
  +	
  T	
  |	
  T	
  
	
  T	
  →	
  T	
  *	
  num	
  |	
  num	
  



	
  E	
  →	
  T	
  E’	
  
	
  E’→	
  +	
  T	
  E’	
  |	
  ε	
  
	
  T	
  →	
  T	
  *	
  num	
  |	
  num	
  
278




                               	

	
  E	
  →	
  E	
  +	
  T	
  |	
  T	
  
	
  T	
  →	
  T	
  *	
  num	
  |	
  num	
  



	
  E	
  →	
  T	
  E’	
  
	
  E’→	
  +	
  T	
  E’	
  |	
  ε	
  
	
  T	
  →	
  T	
  *	
  num	
  |	
  num	
  
279




                               	
             E	
  → T	
  {	
  +	
  T	
  }	
  
                                              T	
  →	
  num	
  {	
  *	
  num	
  }	
  
                                              	
  
                                                    OK	
	
  E	
  →	
  E	
  +	
  T	
  |	
  T	
  
	
  T	
  →	
  T	
  *	
  num	
  |	
  num	
  

                                                	
  E	
  →	
  T	
  E’	
  
	
  E	
  →	
  T	
  E’	
                         	
  E’→	
  +	
  T	
  E’	
  |	
  ε	
  
	
  E’→	
  +	
  T	
  E’	
  |	
  ε	
             	
  T	
  →	
  num	
  T’	
  
	
  T	
  →	
  T	
  *	
  num	
  |	
  num	
       	
  T’→	
  *	
  num	
  T’	
  |	
  ε	
  
280



                    1.  E → T + E   3.  T → num * T
Packrat parsing	
                    2.  E → T       4.  T → num	

          E	




         num	
      +	
   num	
      *	
    num
281



                    1.  E → T + E   3.  T → num * T
Packrat parsing	
                    2.  E → T       4.  T → num	

           E	



    T	
    +	
    E	




          num	
     +	
   num	
      *	
    num
282



                    1.  E → T + E   3.  T → num * T
Packrat parsing	
                    2.  E → T       4.  T → num	

           E	



    T	
    +	
    E	




          num	
     +	
   num	
      *	
    num
283



                          1.  E → T + E   3.  T → num * T
 Packrat parsing	
                          2.  E → T       4.  T → num	

                E	



        T	
         +	
   E	


num	
   *	
   T	


               num	
      +	
   num	
      *	
    num
284



                          1.  E → T + E   3.  T → num * T
 Packrat parsing	
                          2.  E → T       4.  T → num	

                E	



        T	
         +	
   E	


num	
   *	
   T	


               num	
      +	
   num	
      *	
    num
285



                          1.  E → T + E      3.  T → num * T
 Packrat parsing	
                          2.  E → T          4.  T → num	

                E	
                       0 - 1	
 num	
         num	
                                 	


        T	
         +	
   E	


num	
   *	
   T	


               num	
      +	
   num	
           *	
        num
286



                          1.  E → T + E      3.  T → num * T
 Packrat parsing	
                          2.  E → T          4.  T → num	

                E	
                       0 - 1	
 num	
         num	



        T	
         +	
   E	


num	
   *	
   T	


               num	
      +	
   num	
           *	
        num
287



                    1.  E → T + E      3.  T → num * T
Packrat parsing	
                    2.  E → T          4.  T → num	

           E	
                      0 - 1	
 num	
         num	



    T	
    +	
     E	



                  Backtrack !	

          num	
     +	
    num	
          *	
        num
288



                    1.  E → T + E      3.  T → num * T
Packrat parsing	
                    2.  E → T          4.  T → num	

           E	
                      0 - 1	
 num	
         num	



    T	
    +	
    E	




          num	
     +	
   num	
           *	
        num
289



                    1.  E → T + E      3.  T → num * T
Packrat parsing	
                    2.  E → T          4.  T → num	

            E	
                     0 - 1	
 num	
         num	



    T	
     +	
    E	



   num	


           num	
    +	
   num	
           *	
        num
290



                    1.  E → T + E      3.  T → num * T
Packrat parsing	
                    2.  E → T          4.  T → num	

            E	
                     0 - 1	
 num	
         num	



    T	
     +	
    E	



   num	


           num	
    +	
   num	
           *	
        num
291



                    1.  E → T + E      3.  T → num * T
Packrat parsing	
                    2.  E → T          4.  T → num	

            E	
                     0 - 1	
 num	
         num	
                           	


    T	
     +	
    E	



   num	


           num	
    +	
   num	
           *	
        num
292



                    1.  E → T + E      3.  T → num * T
Packrat parsing	
                    2.  E → T          4.  T → num	

            E	
                     0 - 1	
 num	
         num	
                           	


    T	
     +	
    E	



   num	


           num	
    +	
   num	
           *	
        num
293



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                           	
       0 - 1	
         T	
         T(num)	


    T	
     +	
    E	



   num	


           num	
    +	
   num	
               *	
          num
294



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                                    0 - 1	
         T	
         T(num)	


    T	
     +	
    E	



   num	


           num	
    +	
   num	
               *	
          num
295



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                           	
       0 - 1	
         T	
         T(num)	
                                    1 - 2	
         +	
              +	
    T	
     +	
    E	



   num	


           num	
    +	
   num	
               *	
          num
296



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                                    0 - 1	
         T	
         T(num)	
                                    1 - 2	
         +	
              +	
    T	
     +	
    E	



   num	


           num	
    +	
   num	
               *	
          num
297



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                                    0 - 1	
         T	
         T(num)	
                                    1 - 2	
         +	
              +	
    T	
     +	
     E	



   num	
      T	
   +	
   E	


           num	
    +	
   num	
               *	
          num
298



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                                    0 - 1	
         T	
         T(num)	
                                    1 - 2	
         +	
              +	
    T	
     +	
     E	



   num	
      T	
   +	
   E	


           num	
    +	
   num	
               *	
          num
299

                  E	
                              1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T          4.  T → num	
    T	
           +	
         E	
                                              0 - 1	
 num	
                 num	
                                              0 - 1	
         T	
         T(num)	
                                              1 - 2	
         +	
              +	
   num	
            T	
       +	
    E	


          num	
         *	
   T	



              num	
           +	
    num	
              *	
          num
300

                  E	
                              1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T          4.  T → num	
    T	
           +	
         E	
                                              0 - 1	
 num	
                 num	
                                              0 - 1	
         T	
         T(num)	
                                              1 - 2	
         +	
              +	
   num	
            T	
       +	
    E	


          num	
         *	
   T	



              num	
           +	
    num	
              *	
          num
301

                  E	
                              1.  E → T + E         3.  T → num * T
Packrat parsing	
                               2.  E → T            4.  T → num	
    T	
           +	
         E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
                                                1 - 2	
         +	
              +	
   num	
            T	
       +	
    E	
                                                2 - 3	
 num	
                 num	

                                           	
          num	
         *	
   T	



              num	
           +	
    num	
                *	
          num
302

                  E	
                              1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T          4.  T → num	
    T	
           +	
         E	
                                              0 - 1	
 num	
                 num	
                                              0 - 1	
         T	
         T(num)	
                                              1 - 2	
         +	
              +	
   num	
            T	
       +	
    E	
                                              2 - 3	
 num	
                 num	


          num	
         *	
   T	



              num	
           +	
    num	
              *	
          num
303

                  E	
                              1.  E → T + E         3.  T → num * T
Packrat parsing	
                               2.  E → T            4.  T → num	
    T	
           +	
         E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
                                                1 - 2	
         +	
              +	
   num	
            T	
       +	
    E	
                                                2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	

          num	
         *	
   T	
                                           	


              num	
           +	
    num	
                *	
          num
304

                  E	
                              1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T          4.  T → num	
    T	
           +	
         E	
                                              0 - 1	
 num	
                 num	
                                              0 - 1	
         T	
         T(num)	
                                              1 - 2	
         +	
              +	
   num	
            T	
       +	
    E	
                                              2 - 3	
 num	
                 num	
                                              3 - 4	
         *	
               *	

          num	
         *	
   T	



              num	
           +	
    num	
              *	
          num
305

    T	
           +	
         E	
                               1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T           4.  T → num	
   num	
            T	
       +	
     E	
                                               0 - 1	
 num	
                 num	
                                               0 - 1	
         T	
         T(num)	
          num	
         *	
   T	
              1 - 2	
         +	
              +	
                                               2 - 3	
 num	
                 num	
                                               3 - 4	
         *	
               *	

                   num	
      *	
    T	



              num	
           +	
     num	
              *	
          num
306

    T	
           +	
         E	
                               1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T           4.  T → num	
   num	
            T	
       +	
     E	
                                               0 - 1	
 num	
                 num	
                                               0 - 1	
         T	
         T(num)	
          num	
         *	
   T	
              1 - 2	
         +	
              +	
                                               2 - 3	
 num	
                 num	
                                               3 - 4	
         *	
               *	

                   num	
      *	
    T	



              num	
           +	
     num	
              *	
          num
307

    T	
           +	
         E	
                               1.  E → T + E        3.  T → num * T
Packrat parsing	
                               2.  E → T            4.  T → num	
   num	
            T	
       +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
   T	
               1 - 2	
         +	
              +	
                                           	
   2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	
                                                4 - 5	
 num	
                 num	
                   num	
      *	
    T	



              num	
           +	
     num	
               *	
          num
308

    T	
           +	
         E	
                               1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T           4.  T → num	
   num	
            T	
       +	
     E	
                                               0 - 1	
 num	
                 num	
                                               0 - 1	
         T	
         T(num)	
          num	
         *	
   T	
              1 - 2	
         +	
              +	
                                               2 - 3	
 num	
                 num	
                                               3 - 4	
         *	
               *	
                                               4 - 5	
 num	
                 num	
                   num	
      *	
    T	



              num	
           +	
     num	
              *	
          num
309

    T	
           +	
         E	
                               1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T           4.  T → num	
   num	
            T	
       +	
     E	
                                               0 - 1	
 num	
                 num	
                                               0 - 1	
         T	
         T(num)	
          num	
         *	
   T	
              1 - 2	
         +	
              +	
                                               2 - 3	
 num	
                 num	
                                               3 - 4	
         *	
               *	
                                               4 - 5	
 num	
                 num	
                   num	
      *	
    T	



              num	
           +	
     num	
              *	
          num
310

    T	
           +	
         E	
                               1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T           4.  T → num	
   num	
            T	
       +	
     E	
                                               0 - 1	
 num	
                 num	
                                               0 - 1	
         T	
         T(num)	
          num	
         *	
   T	
              1 - 2	
         +	
              +	
                                               2 - 3	
 num	
                 num	
                                               3 - 4	
         *	
               *	
                                               4 - 5	
 num	
                 num	
                                            Backtrack !	

              num	
           +	
     num	
              *	
          num
311

    T	
           +	
         E	
                               1.  E → T + E       3.  T → num * T
Packrat parsing	
                               2.  E → T           4.  T → num	
   num	
            T	
       +	
     E	
                                               0 - 1	
 num	
                 num	
                                               0 - 1	
         T	
         T(num)	
          num	
         *	
   T	
              1 - 2	
         +	
              +	
                                               2 - 3	
 num	
                 num	
                                               3 - 4	
         *	
               *	
                                               4 - 5	
 num	
                 num	




              num	
           +	
     num	
              *	
          num
312

    T	
           +	
          E	
                                1.  E → T + E       3.  T → num * T
Packrat parsing	
                                2.  E → T           4.  T → num	
   num	
            T	
        +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
    T	
              1 - 2	
         +	
              +	
                                                2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	
                                                4 - 5	
 num	
                 num	
                              num	



              num	
            +	
     num	
              *	
          num
313

    T	
           +	
          E	
                                1.  E → T + E       3.  T → num * T
Packrat parsing	
                                2.  E → T           4.  T → num	
   num	
            T	
        +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
    T	
              1 - 2	
         +	
              +	
                                        	
      2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	
                                                4 - 5	
 num	
                 num	
                              num	



              num	
            +	
     num	
              *	
          num
314

    T	
           +	
          E	
                                1.  E → T + E       3.  T → num * T
Packrat parsing	
                                2.  E → T           4.  T → num	
   num	
            T	
        +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
    T	
              1 - 2	
         +	
              +	
                                        	
      2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	
                                                4 - 5	
 num	
                 num	
                              num	



              num	
            +	
     num	
              *	
          num
315

    T	
           +	
          E	
                                1.  E → T + E       3.  T → num * T
Packrat parsing	
                                2.  E → T           4.  T → num	
   num	
            T	
        +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
    T	
              1 - 2	
         +	
              +	
                                                2 - 3	
 num	
                 num	
                                         	
     3 - 4	
         *	
               *	
                                                4 - 5	
 num	
                 num	
                              num	
                                                4 - 5	
         T	
         T(num)	



              num	
            +	
     num	
              *	
          num
316

    T	
           +	
          E	
                                1.  E → T + E       3.  T → num * T
Packrat parsing	
                                2.  E → T           4.  T → num	
   num	
            T	
        +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
    T	
              1 - 2	
         +	
              +	
                                                2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	
                                         	
     4 - 5	
 num	
                 num	
                              num	
                                                4 - 5	
         T	
         T(num)	
                                                2 - 5	
         T	
 T(num, *, T)	

              num	
            +	
     num	
              *	
          num
317

    T	
           +	
          E	
                                1.  E → T + E       3.  T → num * T
Packrat parsing	
                                2.  E → T           4.  T → num	
   num	
            T	
        +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
    T	
              1 - 2	
         +	
              +	
                                                2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	
                                                4 - 5	
 num	
                 num	
                              num	
                                                4 - 5	
         T	
         T(num)	
                                                2 - 5	
         T	
 T(num, *, T)	

              num	
            +	
     num	
              *	
          num
318

    T	
           +	
          E	
                                1.  E → T + E       3.  T → num * T
Packrat parsing	
                                2.  E → T           4.  T → num	
   num	
            T	
        +	
     E	
                                                0 - 1	
 num	
                 num	
                                                0 - 1	
         T	
         T(num)	
          num	
         *	
    T	
              1 - 2	
         +	
              +	
                                                2 - 3	
 num	
                 num	
                                                3 - 4	
         *	
               *	
                                                4 - 5	
 num	
                 num	
                              num	
                                                4 - 5	
         T	
         T(num)	
                                                2 - 5	
         T	
 T(num, *, T)	

              num	
            +	
     num	
              *	
          num
319



                        1.  E → T + E       3.  T → num * T
Packrat parsing	
                        2.  E → T           4.  T → num	

            E	
                         0 - 1	
 num	
                 num	
                                        0 - 1	
         T	
         T(num)	
                                        1 - 2	
         +	
              +	
    T	
     +	
        E	
              2 - 3	
 num	
                 num	
                                        3 - 4	
         *	
               *	
                                        4 - 5	
 num	
                 num	

   num	
           Backtrack !	
        4 - 5	
         T	
         T(num)	
                                        2 - 5	
         T	
 T(num, *, T)	

           num	
       +	
     num	
              *	
          num
320



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                                    0 - 1	
         T	
         T(num)	
                                    1 - 2	
         +	
              +	
    T	
     +	
    E	
              2 - 3	
 num	
                 num	
                                    3 - 4	
         *	
               *	
                                    4 - 5	
 num	
                 num	
                                    4 - 5	
         T	
         T(num)	
   num	
                                    2 - 5	
         T	
 T(num, *, T)	

           num	
    +	
   num	
               *	
          num
321



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                                    0 - 1	
         T	
         T(num)	
                                    1 - 2	
         +	
              +	
    T	
     +	
    E	
              2 - 3	
 num	
                 num	
                                    3 - 4	
         *	
               *	
                                    4 - 5	
 num	
                 num	
                                    4 - 5	
         T	
         T(num)	
   num	
            T	
                                    2 - 5	
         T	
 T(num, *, T)	

           num	
    +	
   num	
               *	
          num
322



                    1.  E → T + E       3.  T → num * T
Packrat parsing	
                    2.  E → T           4.  T → num	

            E	
                     0 - 1	
 num	
                 num	
                                    0 - 1	
         T	
         T(num)	
                                    1 - 2	
         +	
              +	
    T	
     +	
    E	
              2 - 3	
 num	
                 num	
                                    3 - 4	
         *	
               *	
                                          	
                                    4 - 5	
 num	
                 num	
                                    4 - 5	
         T	
         T(num)	
   num	
            T	
                                    2 - 5	
         T	
 T(num, *, T)	

           num	
    +	
   num	
               *	
          num
323


            E	
      1.  E → T + E       3.  T → num * T
Packrat parsing	
                     2.  E → T           4.  T → num	

    T	
     +	
      E	
             0 - 1	
 num	
                 num	
                                     0 - 1	
         T	
         T(num)	
                                     1 - 2	
         +	
              +	
   num	
             T	
             2 - 3	
 num	
                 num	
                                     3 - 4	
         *	
               *	
                                           	
                                     4 - 5	
 num	
                 num	
             num	
   *	
    T	
      4 - 5	
         T	
         T(num)	
                                     2 - 5	
         T	
 T(num, *, T)	

           num	
     +	
     num	
             *	
          num	
                           num
324


            E	
      1.  E → T + E       3.  T → num * T
Packrat parsing	
                     2.  E → T           4.  T → num	

    T	
     +	
      E	
             0 - 1	
 num	
                 num	
                                     0 - 1	
         T	
         T(num)	
                                     1 - 2	
         +	
              +	
   num	
             T	
             2 - 3	
 num	
                 num	
                                     3 - 4	
         *	
               *	
                                     4 - 5	
 num	
                 num	
             num	
   *	
    T	
      4 - 5	
         T	
         T(num)	
                                     2 - 5	
         T	
 T(num, *, T)	
                                     2 - 5	
         E	
           E(T)	
           num	
     +	
     num	
             *	
          num	
                           num
325


            E	
      1.  E → T + E       3.  T → num * T
Packrat parsing	
                     2.  E → T           4.  T → num	

    T	
     +	
      E	
             0 - 1	
 num	
             num	
                                     0 - 1	
    T	
          T(num)	
                                     1 - 2	
    +	
               +	
   num	
             T	
             2 - 3	
 num	
             num	
                                     3 - 4	
     *	
               *	
                                     4 - 5	
 num	
             num	
             num	
   *	
    T	
      4 - 5	
   	
T	
         T(num)	
                                     2 - 5	
    T	
 T(num, *, T)	
                                     2 - 5	
    E	
            E(T)	
           num	
     +	
     num	
 0 - 5	
 *	
 E	
 num	
+ E)	
                                                     E(T
                           num
326




Packrat parsing	
•                   (PEG)

•       ☓
327



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	




num	
   +	
   num	
   *	
   num
328



                                               E→E+T|T
Packrat parsing +                         	
                                               T → T * num | num
               E	
                                           0 - 0	
 E	
         FAIL	



                      FAIL
                                     	




num	
   +	
   num	
   *	
    num
329



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	
                                     0 - 0	
 E	
         FAIL	

        E	
    +	
    T	




num	
   +	
   num	
   *	
   num
330



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	
                                     0 - 0	
 E	
         FAIL	

        E	
    +	
    T	




num	
   +	
   num	
   *	
   num
331



                                              E→E+T|T
Packrat parsing +                        	
                                              T → T * num | num
               E	
                                          0 - 0	
 E	
         FAIL	

        E	
    +	
    T	
                                    	




num	
   +	
   num	
   *	
   num
332



                                               E→E+T|T
Packrat parsing +                         	
                                               T → T * num | num
                E	
    	
                                           0 - 0	
 E	
         FAIL	

         E	
    +	
    T	
                                     	




num	
    +	
   num	
   *	
   num
333



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	
                                     0 - 0	
 E	
         FAIL	




num	
   +	
   num	
   *	
   num
334



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	
                                     0 - 0	
 E	
         FAIL	

               T	




num	
   +	
   num	
   *	
   num
335



                                               E→E+T|T
Packrat parsing +                         	
                                               T → T * num | num
               E	
                                           0 - 0	
 E	
         FAIL	
                                           0 - 0	
 T	
         FAIL	
               T	

                      FAIL
                                     	




num	
   +	
   num	
   *	
    num
336



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
                                       0 - 0	
 E	
         FAIL	
                                       0 - 0	
 T	
         FAIL	
               T	



        T	
    *	
    num	




num	
   +	
   num	
    *	
    num
337



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
                                       0 - 0	
 E	
         FAIL	
                                       0 - 0	
 T	
         FAIL	
               T	



        T	
    *	
    num	




num	
   +	
   num	
    *	
    num
338



                                                E→E+T|T
Packrat parsing +                          	
                                                T → T * num | num
               E	
                                            0 - 0	
 E	
         FAIL	
                                            0 - 0	
 T	
         FAIL	
               T	
                                      	

        T	
    *	
    num	




num	
   +	
   num	
    *	
    num
339



                                                 E→E+T|T
Packrat parsing +                           	
                                                 T → T * num | num
                E	
                                             0 - 0	
 E	
         FAIL	
                                             0 - 0	
 T	
         FAIL	
                T	
    	
                                       	

         T	
    *	
    num	




num	
    +	
   num	
    *	
    num
340



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	
                                     0 - 0	
 E	
         FAIL	
                                     0 - 0	
 T	
         FAIL	
               T	




num	
   +	
   num	
   *	
   num
341



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	
                                     0 - 0	
 E	
         FAIL	
                                     0 - 0	
 T	
         FAIL	
               T	



              num	




num	
   +	
   num	
   *	
   num
342



                                         E→E+T|T
Packrat parsing +                   	
                                         T → T * num | num
               E	
                                     0 - 0	
 E	
         FAIL	
                                     0 - 0	
 T	
         FAIL	
               T	



              num	




num	
   +	
   num	
   *	
   num
343



                                              E→E+T|T
Packrat parsing +                        	
                                              T → T * num | num
               E	
                                          0 - 0	
 E	
           FAIL	
                                          0 - 0	
 T	
           FAIL	
               T	
                  	
                                          0 - 1	
 num	
         num	


              num	




num	
   +	
   num	
   *	
   num
344



                                              E→E+T|T
Packrat parsing +                        	
                                              T → T * num | num
               E	
                                          0 - 0	
 E	
             FAIL	
                                          0 - 1	
 T	
           T(num)	
               T	
                  	
                                          0 - 1	
 num	
           num	


              num	




num	
   +	
   num	
   *	
   num
345



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                  E	
                                              0 - 0	
 E	
             FAIL	
        : 1	
                                              0 - 1	
 T	
           T(num)	
                  T	
                   	
    0 - 1	
 num	
           num	




          Backtrack !	


num	
      +	
   num	
    *	
   num
346



                                              E→E+T|T
Packrat parsing +                        	
                                              T → T * num | num
                  E	
                                          0 - 0	
 E	
             FAIL	
        : 1	
                                          0 - 1	
 T	
           T(num)	
                  T	
                                          0 - 1	
 num	
           num	


           T	
    *	
    num	




num	
      +	
   num	
    *	
    num
347



                                              E→E+T|T
Packrat parsing +                        	
                                              T → T * num | num
                  E	
                                          0 - 0	
 E	
             FAIL	
        : 1	
                                          0 - 1	
 T	
           T(num)	
                  T	
                                          0 - 1	
 num	
           num	


           T	
    *	
    num	




num	
      +	
   num	
    *	
    num
348



                                                    E→E+T|T
Packrat parsing +                              	
                                                    T → T * num | num
                  E	
                                                0 - 0	
 E	
             FAIL	
        : 1	
                                         !	
    0 - 1	
 T	
           T(num)	
                  T	
                                                0 - 1	
 num	
           num	


           T	
    *	
    num	




num	
      +	
   num	
    *	
    num
349



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                   E	
                                                 0 - 0	
 E	
             FAIL	
        : 1	
                                          !	
    0 - 1	
 T	
           T(num)	
                   T	
                                                 0 - 1	
 num	
           num	


           T	
     *	
    num	



          num	



num	
      +	
    num	
    *	
    num
350



                                               E→E+T|T
Packrat parsing +                         	
                                               T → T * num | num
                   E	
                                           0 - 0	
 E	
             FAIL	
        : 1	
                                           0 - 1	
 T	
           T(num)	
                   T	
                                           0 - 1	
 num	
           num	


           T	
     *	
    num	



          num	



num	
      +	
    num	
    *	
    num
351



                                               E→E+T|T
Packrat parsing +                         	
                                               T → T * num | num
                   E	
                                           0 - 0	
 E	
             FAIL	
        : 1	
                                           0 - 1	
 T	
           T(num)	
                   T	
                                           0 - 1	
 num	
           num	


           T	
     *	
    num	



          num	



num	
      +	
    num	
    *	
    num
352



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                  E	
                                         0 - 0	
 E	
             FAIL	
        : 1	
                                         0 - 1	
 T	
           T(num)	
                  T	
                                         0 - 1	
 num	
           num	




          Backtrack !	


num	
      +	
   num	
    *	
   num
353



                                            E→E+T|T
Packrat parsing +                      	
                                            T → T * num | num
                  E	
                                        0 - 0	
 E	
             FAIL	
        : 1	
                                        0 - 1	
 T	
           T(num)	
                  T	
                                        0 - 1	
 num	
           num	


                 num	




num	
      +	
   num	
   *	
   num
354



                                            E→E+T|T
Packrat parsing +                      	
                                            T → T * num | num
                  E	
                                        0 - 0	
 E	
             FAIL	
        : 1	
                                        0 - 1	
 T	
           T(num)	
                  T	
                                        0 - 1	
 num	
           num	


                 num	




num	
      +	
   num	
   *	
   num
355



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                  E	
                                              0 - 0	
 E	
             FAIL	
        : 1	
                                              0 - 1	
 T	
           T(num)	
                  T	
                                       !	
    0 - 1	
 num	
           num	


                 num	




num	
      +	
   num	
   *	
   num
356



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                  E	
                                              0 - 0	
 E	
             FAIL	
        : 1	
                                              0 - 1	
 T	
           T(num)	
                  T	
                                       !	
    0 - 1	
 num	
           num	


                 num	




num	
      +	
   num	
   *	
   num
357



                                            E→E+T|T
Packrat parsing +                      	
                                            T → T * num | num
                  E	
                                        0 - 0	
 E	
             FAIL	
        : 1	
                                        0 - 1	
 T	
           T(num)	
                  T	
                                        0 - 1	
 num	
           num	


                 num	




num	
      +	
   num	
   *	
   num
358



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                  E	
                                              0 - 0	
 E	
             FAIL	
        : 1	
                                              0 - 1	
 T	
           T(num)	
                  T	
                                              0 - 1	
 num	
           num	
                                       !	




num	
      +	
   num	
   *	
   num
359



                                              E→E+T|T
Packrat parsing +                        	
                                              T → T * num | num
               E	
                                    	
    0 - 0	
 E	
             FAIL	
                                          0 - 1	
 T	
           T(num)	
               T	
                                          0 - 1	
 num	
           num	


              num	




num	
   +	
   num	
   *	
   num
360



                                              E→E+T|T
Packrat parsing +                        	
                                              T → T * num | num
               E	
                                          0 - 1	
 E	
      E(T(num))	
                                    	
    0 - 1	
 T	
           T(num)	
               T	
                                          0 - 1	
 num	
           num	


              num	




num	
   +	
   num	
   *	
   num
361



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                                : 1	
         	
     E	
                                         0 - 1	
 E	
      E(T(num))	
                                         0 - 1	
 T	
           T(num)	
                                         0 - 1	
 num	
           num	




        Backtrack !	


num	
    +	
   num	
    *	
   num
362



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 1	
                                       0 - 1	
 E	
      E(T(num))	
                                       0 - 1	
 T	
           T(num)	
        E	
    +	
    T	
                                       0 - 1	
 num	
           num	




num	
   +	
   num	
   *	
   num
363



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 1	
                                       0 - 1	
 E	
      E(T(num))	
                                       0 - 1	
 T	
           T(num)	
        E	
    +	
    T	
                                       0 - 1	
 num	
           num	




num	
   +	
   num	
   *	
   num
364



                                                 E→E+T|T
Packrat parsing +                           	
                                                 T → T * num | num
               E	
            : 1	
                                             0 - 1	
 E	
      E(T(num))	
                                             0 - 1	
 T	
           T(num)	
        E	
    +	
    T	
                                      !	
    0 - 1	
 num	
           num	




num	
   +	
   num	
   *	
   num
365



                                                   E→E+T|T
Packrat parsing +                             	
                                                   T → T * num | num
                 E	
            : 1	
                                               0 - 1	
 E	
      E(T(num))	
                                               0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                        !	
    0 - 1	
 num	
           num	


         T	



        num	



num	
   +	
     num	
   *	
   num
366



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                 E	
            : 1	
                                         0 - 1	
 E	
      E(T(num))	
                                         0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                         0 - 1	
 num	
           num	


         T	



        num	



num	
   +	
     num	
   *	
   num
367



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                 E	
            : 1	
                                              0 - 1	
 E	
      E(T(num))	
                                              0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                        	
    0 - 1	
 num	
           num	
                                              1 - 2	
 +	
                +	
         T	



        num	



num	
   +	
     num	
   *	
   num
368



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                 E	
            : 1	
                                         0 - 1	
 E	
      E(T(num))	
                                         0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                         0 - 1	
 num	
           num	
                                         1 - 2	
 +	
                +	
         T	



        num	



num	
   +	
     num	
   *	
   num
369



                                                   E→E+T|T
Packrat parsing +                             	
                                                   T → T * num | num
                 E	
             : 1	
                                               0 - 1	
 E	
      E(T(num))	
                                               0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                               0 - 1	
 num	
           num	
                                               1 - 2	
 +	
                +	
         T	
                                   2 - 2	
 T	
             FAIL	


                        FAIL
        num	
                                         	


num	
   +	
     num	
   *	
    num
370



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                 E	
            : 1	
                                         0 - 1	
 E	
      E(T(num))	
                                         0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                         0 - 1	
 num	
           num	
                                         1 - 2	
 +	
                +	
         T	
                             2 - 2	
 T	
             FAIL	
                 T	
    *	
   num	



        num	



num	
   +	
     num	
   *	
   num
371



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                 E	
            : 1	
                                         0 - 1	
 E	
      E(T(num))	
                                         0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                         0 - 1	
 num	
           num	
                                         1 - 2	
 +	
                +	
         T	
                             2 - 2	
 T	
             FAIL	
                 T	
    *	
   num	



        num	



num	
   +	
     num	
   *	
   num
372



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                 E	
            : 1	
                                              0 - 1	
 E	
      E(T(num))	
                                              0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                              0 - 1	
 num	
           num	
                                              1 - 2	
 +	
                +	
         T	
                                  2 - 2	
 T	
             FAIL	
                 T	
    *	
   num	



        num	
                           	



num	
   +	
     num	
   *	
   num
373



                                                       E→E+T|T
Packrat parsing +                                 	
                                                       T → T * num | num
                      E	
            : 1	
                                                   0 - 1	
 E	
      E(T(num))	
                                                   0 - 1	
 T	
           T(num)	
         E	
          +	
    T	
                                                   0 - 1	
 num	
           num	
                	
                                                   1 - 2	
 +	
                +	
         T	
                                       2 - 2	
 T	
             FAIL	
                      T	
    *	
   num	



        num	
                                	



num	
   +	
          num	
   *	
   num
374



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                 E	
            : 1	
                                         0 - 1	
 E	
      E(T(num))	
                                         0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                         0 - 1	
 num	
           num	
                                         1 - 2	
 +	
                +	
         T	
                             2 - 2	
 T	
             FAIL	



        num	



num	
   +	
     num	
   *	
   num
375



                                               E→E+T|T
Packrat parsing +                         	
                                               T → T * num | num
                 E	
              : 1	
                                           0 - 1	
 E	
      E(T(num))	
                                           0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                           0 - 1	
 num	
           num	
                                           1 - 2	
 +	
                +	
         T	
            num	
              2 - 2	
 T	
             FAIL	



        num	



num	
   +	
     num	
    *	
    num
376



                                               E→E+T|T
Packrat parsing +                         	
                                               T → T * num | num
                 E	
              : 1	
                                           0 - 1	
 E	
      E(T(num))	
                                           0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                           0 - 1	
 num	
           num	
                                           1 - 2	
 +	
                +	
         T	
            num	
              2 - 2	
 T	
             FAIL	



        num	



num	
   +	
     num	
    *	
    num
377



                                                    E→E+T|T
Packrat parsing +                              	
                                                    T → T * num | num
                 E	
              : 1	
                                                0 - 1	
 E	
      E(T(num))	
                                                0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                0 - 1	
 num	
           num	
                                                1 - 2	
 +	
                +	
         T	
            num	
                   2 - 2	
 T	
             FAIL	
                                          	
                                                2 - 3	
 num	
           num	


        num	



num	
   +	
     num	
    *	
    num
378



                                                    E→E+T|T
Packrat parsing +                              	
                                                    T → T * num | num
                 E	
              : 1	
                                                0 - 1	
 E	
      E(T(num))	
                                                0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                0 - 1	
 num	
           num	
                                                1 - 2	
 +	
                +	
         T	
            num	
                   2 - 3	
 T	
           T(num)	
                                          	
    2 - 3	
 num	
           num	


        num	



num	
   +	
     num	
    *	
    num
379



                                                          E→E+T|T
Packrat parsing +                                    	
                                                          T → T * num | num
                 E	
            : 1	
                                                      0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                      0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                      0 - 1	
 num	
           num	
                                                	
                                                      1 - 2	
 +	
                +	
         T	
                                          2 - 3	
 T	
           T(num)	
                                                      2 - 3	
 num	
           num	


        num	
           Backtrack !	


num	
   +	
     num	
   *	
   num
380



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	


        num	



num	
   +	
     num	
   *	
   num
381



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	


        num	



num	
   +	
     num	
   *	
   num
382



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	

                                          !	
        num	



num	
   +	
     num	
   *	
   num
383



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	

                                          !	
        num	
   num	



num	
   +	
     num	
   *	
   num
384



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	


        num	
   num	



num	
   +	
     num	
   *	
   num
385



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	
                                                 3 - 4	
   *	
               *	
        num	
   num	
                     	



num	
   +	
     num	
   *	
   num
386



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	
                                                 3 - 4	
   *	
               *	
        num	
   num	



num	
   +	
     num	
   *	
   num
387



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	
                                                 3 - 4	
   *	
               *	
                                          	
        num	
   num	
                            4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
388



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 3	
 T	
           T(num)	
                                                 2 - 3	
 num	
           num	
                                                 3 - 4	
   *	
               *	
        num	
   num	
                            4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
389



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 3	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 5	
 T	
 T(T(num)*num)	
                                                 2 - 3	
 num	
           num	
                                          	
     3 - 4	
   *	
               *	
        num	
   num	
                            4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
390



                                                          E→E+T|T
Packrat parsing +                                    	
                                                          T → T * num | num
                 E	
            : 1	
                                                      0 - 1	
 E	
      E(T(num))	
                                        : 5	
                                                      0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                      0 - 1	
 num	
           num	
                                                	
                                                      1 - 2	
 +	
                +	
         T	
                                          2 - 5	
 T	
 T(T(num)*num)	
                                                      2 - 3	
 num	
           num	
                        Backtrack !	
                 3 - 4	
   *	
               *	
        num	
                                         4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
391



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 5	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 5	
 T	
 T(T(num)*num)	
                                                 2 - 3	
 num	
           num	
                                                 3 - 4	
   *	
               *	
        num	
                                    4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
392



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 5	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
              2 - 5	
 T	
 T(T(num)*num)	
                                                 2 - 3	
 num	
           num	
                                                 3 - 4	
   *	
               *	
        num	
                                    4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
393



                                                           E→E+T|T
Packrat parsing +                                     	
                                                           T → T * num | num
                 E	
            : 1	
                                                       0 - 1	
 E	
      E(T(num))	
                                        : 5	
                                                       0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                       0 - 1	
 num	
           num	
                                                       1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
                    2 - 5	
 T	
 T(T(num)*num)	
                                                       2 - 3	
 num	
           num	
                                                       3 - 4	
   *	
               *	
                                                !	
    4 - 5	
 num	
           num	
        num	



num	
   +	
     num	
   *	
   num
394



                                                              E→E+T|T
Packrat parsing +                                        	
                                                              T → T * num | num
                 E	
               : 1	
                                                          0 - 1	
 E	
      E(T(num))	
                                           : 5	
                                                          0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                          0 - 1	
 num	
           num	
                                                          1 - 2	
 +	
                +	
         T	
     T	
     *	
     num	
                    2 - 5	
 T	
 T(T(num)*num)	
                                                          2 - 3	
 num	
           num	
                                                          3 - 4	
   *	
               *	
                 T	
    *	
    num	
                                                   !	
    4 - 5	
 num	
           num	
        num	

                num	

num	
   +	
     num	
    *	
     num
395



                                                        E→E+T|T
Packrat parsing +                                  	
                                                        T → T * num | num
                 E	
               : 1	
                                                    0 - 1	
 E	
      E(T(num))	
                                           : 5	
                                                    0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                    0 - 1	
 num	
           num	
                                                    1 - 2	
 +	
                +	
         T	
     T	
     *	
     num	
              2 - 5	
 T	
 T(T(num)*num)	
                                                    2 - 3	
 num	
           num	
                                                    3 - 4	
   *	
               *	
                 T	
    *	
    num	
        num	
                                       4 - 5	
 num	
           num	

                num	

num	
   +	
     num	
    *	
     num
396



                                                        E→E+T|T
Packrat parsing +                                  	
                                                        T → T * num | num
                 E	
               : 1	
                                                    0 - 1	
 E	
      E(T(num))	
                                           : 5	
                                                    0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                    0 - 1	
 num	
           num	
                                                    1 - 2	
 +	
                +	
         T	
     T	
     *	
     num	
              2 - 5	
 T	
 T(T(num)*num)	
                                                    2 - 3	
 num	
           num	
                                                    3 - 4	
   *	
               *	
                 T	
    *	
    num	
        num	
                                       4 - 5	
 num	
           num	

                num	

num	
   +	
     num	
    *	
     num
397



                                                     E→E+T|T
Packrat parsing +                               	
                                                     T → T * num | num
                 E	
            : 1	
                                                 0 - 1	
 E	
      E(T(num))	
                                        : 5	
                                                 0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                 0 - 1	
 num	
           num	
                                                 1 - 2	
 +	
                +	
         T	
                                     2 - 5	
 T	
 T(T(num)*num)	
                                                 2 - 3	
 num	
           num	
                        Backtrack !	
            3 - 4	
   *	
               *	
        num	
                                    4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
398



                                                       E→E+T|T
Packrat parsing +                                 	
                                                       T → T * num | num
                 E	
              : 1	
                                                   0 - 1	
 E	
      E(T(num))	
                                          : 5	
                                                   0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                   0 - 1	
 num	
           num	
                                                   1 - 2	
 +	
                +	
         T	
            num	
                      2 - 5	
 T	
 T(T(num)*num)	
                                                   2 - 3	
 num	
           num	
                                                   3 - 4	
   *	
               *	
        num	
                                      4 - 5	
 num	
           num	




num	
   +	
     num	
    *	
    num
399



                                                       E→E+T|T
Packrat parsing +                                 	
                                                       T → T * num | num
                 E	
              : 1	
                                                   0 - 1	
 E	
      E(T(num))	
                                          : 5	
                                                   0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                   0 - 1	
 num	
           num	
                                                   1 - 2	
 +	
                +	
         T	
            num	
                      2 - 5	
 T	
 T(T(num)*num)	
                                                   2 - 3	
 num	
           num	
                                                   3 - 4	
   *	
               *	
        num	
                                      4 - 5	
 num	
           num	




num	
   +	
     num	
    *	
    num
400



                                                             E→E+T|T
Packrat parsing +                                       	
                                                             T → T * num | num
                 E	
              : 1	
                                                         0 - 1	
 E	
      E(T(num))	
                                          : 5	
                                                         0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                         0 - 1	
 num	
           num	
                                                         1 - 2	
 +	
                +	
         T	
            num	
                            2 - 5	
 T	
 T(T(num)*num)	
                                                         2 - 3	
 num	
           num	
                                                         3 - 4	
   *	
               *	
                                                  !	
    4 - 5	
 num	
           num	
        num	



num	
   +	
     num	
    *	
    num
401



                                                             E→E+T|T
Packrat parsing +                                       	
                                                             T → T * num | num
                 E	
              : 1	
                                                         0 - 1	
 E	
      E(T(num))	
                                          : 5	
                                                         0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                         0 - 1	
 num	
           num	
                                                         1 - 2	
 +	
                +	
         T	
            num	
                            2 - 5	
 T	
 T(T(num)*num)	
                                                         2 - 3	
 num	
           num	
                                                         3 - 4	
   *	
               *	
                                                  !	
    4 - 5	
 num	
           num	
        num	



num	
   +	
     num	
    *	
    num
402



                                                       E→E+T|T
Packrat parsing +                                 	
                                                       T → T * num | num
                 E	
              : 1	
                                                   0 - 1	
 E	
      E(T(num))	
                                          : 5	
                                                   0 - 1	
 T	
           T(num)	
         E	
     +	
     T	
                                                   0 - 1	
 num	
           num	
                                                   1 - 2	
 +	
                +	
         T	
            num	
                      2 - 5	
 T	
 T(T(num)*num)	
                                                   2 - 3	
 num	
           num	
                                                   3 - 4	
   *	
               *	
        num	
                                      4 - 5	
 num	
           num	
                                          	


num	
   +	
     num	
    *	
    num
403



                                                      E→E+T|T
Packrat parsing +                                	
                                                      T → T * num | num
                 E	
            : 1	
                                                  0 - 1	
 E	
      E(T(num))	
                                        : 5	
                                                  0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                                  0 - 1	
 num	
           num	
                                           !	
    1 - 2	
 +	
                +	
         T	
                                      2 - 5	
 T	
 T(T(num)*num)	
                                                  2 - 3	
 num	
           num	
                                                  3 - 4	
   *	
               *	
        num	
                                     4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
404



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                 E	
            : 1	
                                              0 - 1	
 E	
      E(T(num))	
                                              0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                              0 - 1	
 num	
           num	
                                        	
                                              1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
           2 - 5	
 T	
 T(T(num)*num)	
                                              2 - 3	
 num	
           num	
                                              3 - 4	
   *	
               *	
        num	
   num	
                         4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
405



                                             E→E+T|T
Packrat parsing +                       	
                                             T → T * num | num
                 E	
            : 1	
                                         0 - 1	
 E	
      E(T(num))	
                                         0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                         0 - 1	
 num	
           num	
                                         1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
      2 - 5	
 T	
 T(T(num)*num)	
                                         2 - 3	
 num	
           num	
                                         3 - 4	
   *	
               *	
        num	
   num	
                    4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
406



                                                  E→E+T|T
Packrat parsing +                            	
                                                  T → T * num | num
                 E	
            : 1	
                                              0 - 5	
 E	
 E(E(...)+T(...))	
                                              0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                        	
    0 - 1	
 num	
           num	
                                              1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
           2 - 5	
 T	
 T(T(num)*num)	
                                              2 - 3	
 num	
           num	
                                              3 - 4	
   *	
               *	
        num	
   num	
                         4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
407



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
        	
     E	
            : 5	
                                       0 - 5	
 E	
 E(E(...)+T(...))	
                                       0 - 1	
 T	
           T(num)	
                                       0 - 1	
 num	
           num	
                                       1 - 2	
 +	
                +	
                                       2 - 5	
 T	
 T(T(num)*num)	
                                       2 - 3	
 num	
           num	
                      Backtrack !	
                                       3 - 4	
   *	
               *	
                                       4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
408



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 5	
                                       0 - 5	
 E	
 E(E(...)+T(...))	
                                       0 - 1	
 T	
           T(num)	
        E	
    +	
    T	
                                       0 - 1	
 num	
           num	
                                       1 - 2	
 +	
                +	
                                       2 - 5	
 T	
 T(T(num)*num)	
                                       2 - 3	
 num	
           num	
                                       3 - 4	
   *	
               *	
                                       4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
409



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 5	
                                       0 - 5	
 E	
 E(E(...)+T(...))	
                                       0 - 1	
 T	
           T(num)	
        E	
    +	
    T	
                                       0 - 1	
 num	
           num	
                                       1 - 2	
 +	
                +	
                                       2 - 5	
 T	
 T(T(num)*num)	
                                       2 - 3	
 num	
           num	
                                       3 - 4	
   *	
               *	
                                       4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
410



                                                 E→E+T|T
Packrat parsing +                           	
                                                 T → T * num | num
               E	
            : 5	
                                             0 - 5	
 E	
 E(E(...)+T(...))	
                                             0 - 1	
 T	
           T(num)	
        E	
    +	
    T	
                                      !	
    0 - 1	
 num	
           num	
                                             1 - 2	
 +	
                +	
                                             2 - 5	
 T	
 T(T(num)*num)	
                                             2 - 3	
 num	
           num	
                                             3 - 4	
   *	
               *	
                                             4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
411



                                                      E→E+T|T
Packrat parsing +                                	
                                                      T → T * num | num
                  E	
              : 5	
                                                  0 - 5	
 E	
 E(E(...)+T(...))	
                                                  0 - 1	
 T	
           T(num)	
          E	
     +	
    T	
                                           !	
    0 - 1	
 num	
           num	
                                                  1 - 2	
 +	
                +	
  E	
     +	
     T	
                             2 - 5	
 T	
 T(T(num)*num)	
                                                  2 - 3	
 num	
           num	
  T	
     T	
     *	
    num	
                    3 - 4	
   *	
               *	
                                                  4 - 5	
 num	
           num	
 num	
   num	


num	
    +	
     num	
   *	
     num
412



                                                E→E+T|T
Packrat parsing +                          	
                                                T → T * num | num
                  E	
              : 5	
                                            0 - 5	
 E	
 E(E(...)+T(...))	
                                            0 - 1	
 T	
           T(num)	
          E	
     +	
    T	
                                            0 - 1	
 num	
           num	
                                            1 - 2	
 +	
                +	
  E	
     +	
     T	
                       2 - 5	
 T	
 T(T(num)*num)	
                                            2 - 3	
 num	
           num	
  T	
     T	
     *	
    num	
              3 - 4	
   *	
               *	
                                            4 - 5	
 num	
           num	
 num	
   num	


num	
    +	
     num	
   *	
     num
413



                                                E→E+T|T
Packrat parsing +                          	
                                                T → T * num | num
                  E	
              : 5	
                                            0 - 5	
 E	
 E(E(...)+T(...))	
                                            0 - 1	
 T	
           T(num)	
          E	
     +	
    T	
                                            0 - 1	
 num	
           num	
                                            1 - 2	
 +	
                +	
  E	
     +	
     T	
                       2 - 5	
 T	
 T(T(num)*num)	
                                            2 - 3	
 num	
           num	
  T	
     T	
     *	
    num	
              3 - 4	
   *	
               *	
                                            4 - 5	
 num	
           num	
 num	
   num	


num	
    +	
     num	
   *	
     num
414



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 5	
                                       0 - 5	
 E	
 E(E(...)+T(...))	
                                       0 - 1	
 T	
           T(num)	
                                       0 - 1	
 num	
           num	
                                       1 - 2	
 +	
                +	
                                       2 - 5	
 T	
 T(T(num)*num)	
                                       2 - 3	
 num	
           num	
                      Backtrack !	
                                       3 - 4	
   *	
               *	
                                       4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
415



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 5	
                                       0 - 5	
 E	
 E(E(...)+T(...))	
                                       0 - 1	
 T	
           T(num)	
               T	
                                       0 - 1	
 num	
           num	
                                       1 - 2	
 +	
                +	
                                       2 - 5	
 T	
 T(T(num)*num)	
                                       2 - 3	
 num	
           num	
                                       3 - 4	
   *	
               *	
                                       4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
416



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 5	
                                       0 - 5	
 E	
 E(E(...)+T(...))	
                                       0 - 1	
 T	
           T(num)	
               T	
                                       0 - 1	
 num	
           num	
                                       1 - 2	
 +	
                +	
                                       2 - 5	
 T	
 T(T(num)*num)	
                                       2 - 3	
 num	
           num	
                                       3 - 4	
   *	
               *	
                                       4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
417



                                                 E→E+T|T
Packrat parsing +                           	
                                                 T → T * num | num
               E	
            : 5	
                                             0 - 5	
 E	
 E(E(...)+T(...))	
                                             0 - 1	
 T	
           T(num)	
               T	
                                      !	
    0 - 1	
 num	
           num	
                                             1 - 2	
 +	
                +	
                                             2 - 5	
 T	
 T(T(num)*num)	
                                             2 - 3	
 num	
           num	
                                             3 - 4	
   *	
               *	
                                             4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
418



                                                 E→E+T|T
Packrat parsing +                           	
                                                 T → T * num | num
               E	
            : 5	
                                             0 - 5	
 E	
 E(E(...)+T(...))	
                                             0 - 1	
 T	
           T(num)	
               T	
                                      !	
    0 - 1	
 num	
           num	
                                             1 - 2	
 +	
                +	
                                             2 - 5	
 T	
 T(T(num)*num)	
              num	
                                             2 - 3	
 num	
           num	
                                             3 - 4	
   *	
               *	
                                             4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
419



                                                E→E+T|T
Packrat parsing +                          	
                                                T → T * num | num
               E	
            : 5	
                                            0 - 5	
 E	
 E(E(...)+T(...))	
                                            0 - 1	
 T	
           T(num)	
               T	
                                            0 - 1	
 num	
           num	
                                      	
    1 - 2	
 +	
                +	
                                            2 - 5	
 T	
 T(T(num)*num)	
              num	
                                            2 - 3	
 num	
           num	
                                            3 - 4	
   *	
               *	
                                            4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
420



                                           E→E+T|T
Packrat parsing +                     	
                                           T → T * num | num
               E	
            : 5	
                                       0 - 5	
 E	
 E(E(...)+T(...))	
                                       0 - 1	
 T	
           T(num)	
        !	
                            0 - 1	
 num	
           num	
                                       1 - 2	
 +	
                +	
                                       2 - 5	
 T	
 T(T(num)*num)	
                                       2 - 3	
 num	
           num	
                                       3 - 4	
   *	
               *	
                                       4 - 5	
 num	
           num	




num	
   +	
   num	
   *	
   num
421



                                                E→E+T|T
Packrat parsing +                          	
                                                T → T * num | num
                 E	
                  	
                                            0 - 5	
 E	
 E(E(...)+T(...))	
                                            0 - 1	
 T	
           T(num)	
         E	
     +	
    T	
                                            0 - 1	
 num	
           num	
                                            1 - 2	
 +	
                +	
         T	
     T	
    *	
   num	
         2 - 5	
 T	
 T(T(num)*num)	
                                            2 - 3	
 num	
           num	
                                            3 - 4	
   *	
               *	
        num	
   num	
                       4 - 5	
 num	
           num	




num	
   +	
     num	
   *	
   num
422




                              	
                 	
                   	
         	
        	
            	
     LL(k)                               	
Backtrack	
           	
                   	
Packrat	
             	
                   	
Rats!               	
Packrat + LR	
        	
   CFG&PEG ?
423




                  	

        	


LL(k)
424




             	
•                               – p.14
     •                 – p.18
     •  LR   – p.37
     •       – p.148

•                               – p.150
     •                      – p.154
     •  Backtrack parsing – p.203
     •  Packrat parsing – p.280
     •  Packrat parsing +         – p.327
     •       – p.422

More Related Content

PPTX
Power point array
PDF
Some examples of the 64-bit code errors
PDF
LR parsing
PDF
Lazyk
PPTX
Junit4
DOCX
PPT
Addandsubtractmixednumbers
PPT
FraCtiOnS muLtiPliCatiOns
Power point array
Some examples of the 64-bit code errors
LR parsing
Lazyk
Junit4
Addandsubtractmixednumbers
FraCtiOnS muLtiPliCatiOns

Similar to ビジュアル構文解析 (20)

PPT
Lesson 1.1 multiplication
PPTX
งานคณิตศาสตร์อาจารย์เค
PPTX
Algebra 1 chapter 1 complete notes
PDF
Math 4th grade multiplication
PPTX
Structures I session 18 11 8
PPTX
Multiplying Numbers with 11
DOCX
Pola nombor
DOCX
Pola nombor
DOCX
Pola nombor
DOCX
Pola nombor
PDF
Notes for structures I session 18 11 8
DOCX
Level 4 prompt
DOC
Dear Friends
PPT
Calculation techniques in numbers
PDF
Figures
PDF
Figures
PPT
The Beauty Of Math
PPT
Matematik rekreasi
PDF
Precal 20 S Adding And Subtracting Rational Expressions
PDF
Maths formula by [email protected]
Lesson 1.1 multiplication
งานคณิตศาสตร์อาจารย์เค
Algebra 1 chapter 1 complete notes
Math 4th grade multiplication
Structures I session 18 11 8
Multiplying Numbers with 11
Pola nombor
Pola nombor
Pola nombor
Pola nombor
Notes for structures I session 18 11 8
Level 4 prompt
Dear Friends
Calculation techniques in numbers
Figures
Figures
The Beauty Of Math
Matematik rekreasi
Precal 20 S Adding And Subtracting Rational Expressions
Maths formula by [email protected]
Ad

Recently uploaded (20)

PPTX
Microsoft User Copilot Training Slide Deck
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PPTX
Training Program for knowledge in solar cell and solar industry
PDF
SaaS reusability assessment using machine learning techniques
PDF
4 layer Arch & Reference Arch of IoT.pdf
PDF
Build Real-Time ML Apps with Python, Feast & NoSQL
PPTX
Build automations faster and more reliably with UiPath ScreenPlay
PDF
Ensemble model-based arrhythmia classification with local interpretable model...
PDF
LMS bot: enhanced learning management systems for improved student learning e...
PDF
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
PDF
Lung cancer patients survival prediction using outlier detection and optimize...
PDF
A symptom-driven medical diagnosis support model based on machine learning te...
PDF
Electrocardiogram sequences data analytics and classification using unsupervi...
PDF
Rapid Prototyping: A lecture on prototyping techniques for interface design
PDF
The AI Revolution in Customer Service - 2025
PDF
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PDF
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
PDF
Data Virtualization in Action: Scaling APIs and Apps with FME
PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
Microsoft User Copilot Training Slide Deck
Basics of Cloud Computing - Cloud Ecosystem
Training Program for knowledge in solar cell and solar industry
SaaS reusability assessment using machine learning techniques
4 layer Arch & Reference Arch of IoT.pdf
Build Real-Time ML Apps with Python, Feast & NoSQL
Build automations faster and more reliably with UiPath ScreenPlay
Ensemble model-based arrhythmia classification with local interpretable model...
LMS bot: enhanced learning management systems for improved student learning e...
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
Lung cancer patients survival prediction using outlier detection and optimize...
A symptom-driven medical diagnosis support model based on machine learning te...
Electrocardiogram sequences data analytics and classification using unsupervi...
Rapid Prototyping: A lecture on prototyping techniques for interface design
The AI Revolution in Customer Service - 2025
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
EIS-Webinar-Regulated-Industries-2025-08.pdf
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
Data Virtualization in Action: Scaling APIs and Apps with FME
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
Ad

ビジュアル構文解析

  • 1. 1
  • 2. 2
  • 3. 3
  • 4. 4
  • 5. 5
  • 6. 6
  • 7. 7
  • 8. 8
  • 9. 9
  • 10. 10
  • 11. 11
  • 12. 12
  • 13. 13 •  • 
  • 14. 14 num + num * num 2 + 3 * 4
  • 15. 15 expr num + num * num 2 + 3 * 4
  • 16. 16 expr expr num + num * num 2 + 3 * 4
  • 17. 17 •  •  LR •  SLR •  LALR •  GLR •  etc...
  • 18. 18 num + * num x > > + < > < * < > > num + num * num
  • 19. 19 num + * num x > > + < > < * < > > num + num * num
  • 20. 20 num > + num + * num x > > + < > < * < > > num + num * num
  • 21. 21 num > + num + * num x > > + < > < * < > > num + num * num
  • 22. 22 num + * num x > > + < > < * < > > num + num * num
  • 23. 23 + < num num + * num x > > + < > < * < > > num + num * num
  • 24. 24 + < num num + * num x > > + < > < * < > > num num + * num
  • 25. 25 num + * num x > > + < > < * < > > num num + * num
  • 26. 26 num > * num + * num x > > + < > < * < > > num num + * num
  • 27. 27 num > * num + * num x > > + < > < * < > > num num + * num
  • 28. 28 num + * num x > > + < > < * < > > + < * num num + * num
  • 29. 29 num + * num x > > + < > < * < > > + < * num num * + num
  • 30. 30 num + * num x > > + < > < * < > > num num * + num
  • 31. 31 num + * num x > > + < > < * < > > * < num num num * + num
  • 32. 32 num + * num x > > + < > < * < > > * < num num num num * +
  • 33. 33 num + * num x > > + < > < * < > > num num num * +
  • 34. 34 num + * num x > > + < > < * < > > num num num * +
  • 35. 35 num + * num x > > + < > < * < > > num num num * +
  • 36. 36 num + * num x > > + < > < * < > > num num num * +
  • 37. 37 LR 1.  E → E + T 2.  E → T 3.  T → T * num 4.  T → num
  • 38. 38 LR 1.  E → E + T 2.  E → T 3.  T → T * num 4.  T → num
  • 39. 39 LR GOTO * + num $ E T 0 s3 1 2 1 s4 acc 1.  E → E + T 2 s5 r2 r2 2.  E → T 3 r4 r4 r4 4 s3 6 3.  T → T * num 5 s7 4.  T → num 6 s5 r1 r1 7 r3 r3 r3
  • 40. 40 LR * + num $ E T 0 s3 1 2 0 num + num * num
  • 41. 41 LR * + num $ E T 0 s3 1 2 shift 3 0 num + num * num
  • 42. 42 LR * + num $ E T 0 s3 1 2 shift 3 0 + num * num
  • 43. 43 LR * + num $ E T 0 s3 1 2 shift 3 3 3 0 + num * num
  • 44. 44 LR * + num $ E T 3 r4 r4 r4 3 0 + num * num
  • 45. 45 LR * + num $ E T 3 r4 r4 r4 reduce 4 3 0 + num * num
  • 46. 46 LR * + num $ E T 3 r4 r4 r4 reduce 4 4 4 3 0 + num * num
  • 47. 47 LR * + num $ E T 3 r4 r4 r4 T → num reduce 4 4 3 0 + num * num
  • 48. 48 LR * + num $ E T 3 r4 r4 r4 T → num reduce 4 4 0 + num * num
  • 49. 49 LR * + num $ E T 3 r4 r4 r4 0 s3 1 2 T → num reduce 4 4 0 + num * num
  • 50. 50 LR * + num $ E T 3 r4 r4 r4 0 s3 1 2 T → num reduce 4 go to 2 4 0 + num * num
  • 51. 51 LR * + num $ E T 3 r4 r4 r4 0 s3 1 2 T → num reduce 4 2 go to 2 4 2 0 + num * num
  • 52. 52 LR * + num $ E T 2 s5 r2 r2 4 2 0 + num * num
  • 53. 53 LR * + num $ E T 2 s5 r2 r2 reduce 2 4 2 0 + num * num
  • 54. 54 LR * + num $ E T 2 s5 r2 r2 reduce 2 4 2 2 0 + num * num
  • 55. 55 LR * + num $ E T 2 s5 r2 r2 E → T reduce 2 4 2 2 0 + num * num
  • 56. 56 LR * + num $ E T 2 s5 r2 r2 E → T reduce 2 4 2 0 + num * num
  • 57. 57 LR * + num $ E T 2 s5 r2 r2 0 s3 1 2 E → T reduce 2 4 2 0 + num * num
  • 58. 58 LR * + num $ E T 2 s5 r2 r2 0 s3 1 2 E → T reduce 2 go to 1 4 2 0 + num * num
  • 59. 59 LR * + num $ E T 2 s5 r2 r2 0 s3 1 2 E → T reduce 2 go to 1 4 2 1 0 + num * num
  • 60. 60 LR * + num $ E T 1 s4 acc 4 2 1 0 + num * num
  • 61. 61 LR * + num $ E T 1 s4 acc shift 4 4 2 1 0 + num * num
  • 62. 62 LR * + num $ E T 1 s4 acc shift 4 4 2 1 0 num * num
  • 63. 63 LR * + num $ E T 1 s4 acc shift 4 4 4 2 1 0 num * num
  • 64. 64 LR * + num $ E T 4 s3 6 4 4 2 1 0 num * num
  • 65. 65 LR * + num $ E T 4 s3 6 shift 3 4 4 2 1 0 num * num
  • 66. 66 LR * + num $ E T 4 s3 6 shift 3 4 4 2 1 0 * num
  • 67. 67 LR * + num $ E T 4 s3 6 shift 3 3 4 4 2 1 0 * num
  • 68. 68 LR * + num $ E T 3 r4 r4 r4 3 4 4 2 1 0 * num
  • 69. 69 LR * + num $ E T 3 r4 r4 r4 reduce 4 3 4 4 2 1 0 * num
  • 70. 70 LR * + num $ E T 3 r4 r4 r4 reduce 4 T → N 3 4 4 2 4 1 0 * num
  • 71. 71 LR * + num $ E T 3 r4 r4 r4 reduce 4 T → N 4 4 2 4 1 0 * num
  • 72. 72 LR * + num $ E T 3 r4 r4 r4 4 s3 6 reduce 4 T → N 4 4 2 4 1 0 * num
  • 73. 73 LR * + num $ E T 3 r4 r4 r4 4 s3 6 reduce 4 T → N go to 6 4 4 2 4 1 0 * num
  • 74. 74 LR * + num $ E T 3 r4 r4 r4 4 s3 6 reduce 4 T → N 6 go to 6 4 4 2 4 1 0 * num
  • 75. 75 LR * + num $ E T 6 s5 r1 r1 6 4 4 2 4 1 0 * num
  • 76. 76 LR * + num $ E T 6 s5 r1 r1 shift 5 6 4 4 2 4 1 0 * num
  • 77. 77 LR * + num $ E T 6 s5 r1 r1 shift 5 6 4 4 2 4 1 0 num
  • 78. 78 LR * + num $ E T 6 s5 r1 r1 5 shift 5 6 4 4 2 4 1 0 num
  • 79. 79 LR * + num $ E T 5 s7 5 6 4 4 2 4 1 0 num
  • 80. 80 LR * + num $ E T 5 s7 5 shift 7 6 4 4 2 4 1 0 num
  • 81. 81 LR * + num $ E T 5 s7 5 shift 7 6 4 4 2 4 1 0
  • 82. 82 LR 7 * + num $ E T 5 s7 5 shift 7 6 4 4 2 4 1 0
  • 83. 83 LR 7 * + num $ E T 7 r3 r3 r3 5 6 4 4 2 4 1 0
  • 84. 84 LR 7 * + num $ E T 7 r3 r3 r3 5 reduce 3 6 4 4 2 4 1 0
  • 85. 85 LR 7 * + num $ E T 7 r3 r3 r3 5 reduce 3 6 4 4 2 4 3 1 0
  • 86. 86 LR 7 * + num $ E T 7 r3 r3 r3 5 reduce 3 6 4 4 2 4 3 1 0 T → T * N
  • 87. 87 LR * + num $ E T 7 r3 r3 r3 reduce 3 4 4 2 4 3 1 0 T → T * N
  • 88. 88 LR * + num $ E T 7 r3 r3 r3 4 s3 6 reduce 3 4 4 2 4 3 1 0 T → T * N
  • 89. 89 LR * + num $ E T 7 r3 r3 r3 4 s3 6 reduce 3 go to 6 4 4 2 4 3 1 0 T → T * N
  • 90. 90 LR * + num $ E T 7 r3 r3 r3 4 s3 6 reduce 3 6 go to 6 4 4 2 4 3 1 0 T → T * N
  • 91. 91 LR * + num $ E T 6 s5 r1 r1 6 4 4 2 4 3 1 0
  • 92. 92 LR * + num $ E T 6 s5 r1 r1 reduce 1 6 4 4 2 4 3 1 0
  • 93. 93 LR * + num $ E T 6 s5 r1 r1 reduce 1 6 4 4 2 4 3 1 1 0
  • 94. 94 LR * + num $ E T 6 s5 r1 r1 reduce 1 6 4 4 2 4 3 1 1 0 E → E + T
  • 95. 95 LR * + num $ E T 6 s5 r1 r1 reduce 1 4 2 4 3 1 0 E → E + T
  • 96. 96 LR * + num $ E T 6 s5 r1 r1 0 s3 1 2 reduce 1 4 2 4 3 1 0 E → E + T
  • 97. 97 LR * + num $ E T 6 s5 r1 r1 0 s3 1 2 reduce 1 go to 1 4 2 4 3 1 0 E → E + T
  • 98. 98 LR * + num $ E T 6 s5 r1 r1 0 s3 1 2 reduce 1 go to 1 4 2 4 3 1 1 0 E → E + T
  • 99. 99 LR * + num $ E T 1 s4 acc 4 2 4 3 1 1 0
  • 100. 100 LR * + num $ E T 1 s4 acc accept ! 4 2 4 3 1 1 0
  • 101. 101 GOTO 1.  E → E + T 2.  E → T 3.  T → T * num 4.  T → num
  • 102. 102 GOTO 0. S → E 1.  E → E + T 2.  E → T 3.  T → T * num 4.  T → num
  • 103. 103 GOTO 0. S → E 1.  E → E + T LR(0) 2.  E → T 3.  T → T * num 4.  T → num
  • 104. 104 GOTO 0. S → E 1.  E → E + T LR(0) LR(0) 2.  E → T 3.  T → T * num 4.  T → num
  • 105. 105 GOTO 0. S → E 1.  E → E + T LR(0) LR(0) 2.  E → T 3.  T → T * num 4.  T → num GOTO
  • 106. 106 LR(0) E → E + T
  • 107. 107 LR(0) E → E + T 1)  E → E+T 2)  E → E +T 3)  E → E + T 4)  E → E + T
  • 108. 108 LR(0) E → E + T 1)  E → E+T 2)  E → E +T 3)  E → E + T 4)  E → E + T
  • 109. 109 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 S  →   E    
  • 110. 110 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 S  →   E   E  →   E  +  T   E  →   T    
  • 111. 111 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 S  →   E   E  →   E  +  T   E  →   T   T  →   T  *  num   T  →   num
  • 112. 112 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 S  →   E   E  →   E  +  T   E  →   T   T  →   T  *  num   T  →   num E I1 S  →  E     E  →  E    +  T  
  • 113. 113 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   T  →   T  *  num   T  →   num E I1 S  →  E     E  →  E    +  T  
  • 114. 114 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   T  →   T  *  num   T  →   num num I3 E T  →  num       I1 S  →  E     E  →  E    +  T  
  • 115. 115 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   T  →   T  *  num   T  →   num num I3 E T  →  num       E  →  E  +   T   I1 S  →  E     I4 + E  →  E    +  T  
  • 116. 116 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   T  →   T  *  num   T  →   num num I3 E T  →  num       E  →  E  +   T   T  →   T  *  num   I1 T  →   num   S  →  E     I4 + E  →  E    +  T  
  • 117. 117 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   T  →   T  *  num   T  →   num num I3 E T  →  num       E  →  E  +   T   num T  →   T  *  num   I1 T  →   num   S  →  E     I4 + E  →  E    +  T  
  • 118. 118 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   I5 * T  →   T  *  num   T  →   num T  →  T  *   num   num I3 E T  →  num       E  →  E  +   T   num T  →   T  *  num   I1 T  →   num   S  →  E     I4 + E  →  E    +  T  
  • 119. 119 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   I5 * T  →   T  *  num   T  →   num T  →  T  *   num   num I6 I3 E  →  E  +  T     E T  →  num       E  →  E  +   T   T  →  T    *  num   num T  →   T  *  num   T I1 T  →   num   S  →  E     I4 + E  →  E    +  T  
  • 120. 120 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   T E  →   T   I5 * T  →   T  *  num   T  →   num T  →  T  *   num   num * I6 I3 E  →  E  +  T     E T  →  num       E  →  E  +   T   T  →  T    *  num   num T  →   T  *  num   T I1 T  →   num   S  →  E     I4 + E  →  E    +  T  
  • 121. 121 0.  S  →  E   3.  T  →  T  *  N   LR(0) 1.  E  →  E  +  T   4.  T  →  N 2.  E  →  T   I0 I2 S  →   E   E  →  T     E  →   E  +  T   T  →  T    *  num   I7 T E  →   T   T  →  T  *  num       I5 * T  →   T  *  num   T  →   num num T  →  T  *   num   num * I6 I3 E  →  E  +  T     E T  →  num       E  →  E  +   T   T  →  T    *  num   num T  →   T  *  num   T I1 T  →   num   S  →  E     I4 + E  →  E    +  T  
  • 122. 122 LR(0) T I0 I2 I7 num * num E I3 I5 num * + T I1 I4 I6
  • 123. 123 LR(0) * + num E T 0 3 1 2 1 4 2 5 3 4 3 6 5 7 6 5 7
  • 124. 124 GOTO * + num $ E T 0 s3 1 2 1 s4 2 s5 3 4 s3 6 5 s7 6 s5 7
  • 125. 125 GOTO * + num $ E T 0 s3 1 2 I1 1 s4 S  →  E     2 s5 E  →  E    +  T   3 4 s3 6 5 s7 6 s5 7
  • 126. 126 GOTO * + num $ E T 0 s3 1 2 I1 1 s4 acc S  →  E     2 s5 E  →  E    +  T   3 4 s3 6 5 s7 6 s5 7
  • 127. 127 GOTO I2 * + num $ E T E  →  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 3 4 s3 6 5 s7 6 s5 7
  • 128. 128 GOTO 2 I2 * + num $ E T E  →  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 3 4 s3 6 5 s7 6 s5 7
  • 129. 129 GOTO reduce 2 I2 * + num $ E T E  →  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 3 4 s3 6 5 s7 6 s5 7
  • 130. 130 GOTO reduce 2 I2 * + num $ E T E  →  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 3 shift 5 4 s3 6 5 s7 6 s5 7
  • 131. 131 GOTO reduce 2 I2 * + num $ E T E  →  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 3 shift 5 4 s3 6 5 s7 shift-reduce 6 s5 conflict 7
  • 132. 132 shift-reduce conflict (SLR ) 0.  S  →  E   1.  E  →  E  +  T   2.  E  →  T   3.  T  →  T  *  N   4.  T  →  N
  • 133. 133 shift-reduce conflict (SLR ) 0.  S  →  E   1.  E  →  E  +  T   2.  E  →  T   3.  T  →  T  *  N   4.  T  →  N
  • 134. 134 shift-reduce conflict (SLR ) 0.  S  →  E   E 1.  E  →  E  +  T   + $ 2.  E  →  T   3.  T  →  T  *  N   4.  T  →  N •  + $ reduce •  * shift
  • 135. 135 GOTO reduce 2 I2 * + num $ E T E  →  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 r2 r2 3 shift 5 4 s3 6 5 s7 shift reduce 6 s5 conflict 7
  • 136. 136 GOTO I3 * + num $ E T T  →  num       0 s3 1 2 1 s4 acc 2 s5 r2 r2 3 4 s3 6 5 s7 6 s5 7
  • 137. 137 GOTO reduce 4 I3 * + num $ E T T  →  num       0 s3 1 2 1 s4 acc 2 s5 r2 r2 3 4 s3 6 5 s7 6 s5 7
  • 138. 138 GOTO reduce 4 I3 * + num $ E T T  →  num       0 s3 1 2 1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 4 s3 6 5 s7 6 s5 7
  • 139. 139 GOTO I6 * + num $ E T E  →  E  +  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 4 s3 6 5 s7 6 s5 7
  • 140. 140 GOTO reduce 1 I6 * + num $ E T E  →  E  +  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 4 s3 6 5 s7 6 s5 7
  • 141. 141 GOTO reduce 1 I6 * + num $ E T E  →  E  +  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 shift 5 4 s3 6 5 s7 6 s5 7
  • 142. 142 GOTO reduce 1 I6 * + num $ E T E  →  E  +  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 shift 5 4 s3 6 5 s7 6 s5 E 7 + $
  • 143. 143 GOTO reduce 1 I6 * + num $ E T E  →  E  +  T     0 s3 1 2 T  →  T    *  num   1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 shift 5 4 s3 6 5 s7 6 s5 r1 r1 E 7 + $
  • 144. 144 GOTO I7 * + num $ E T T  →  T  *  num       0 s3 1 2 1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 4 s3 6 5 s7 6 s5 r1 r1 7
  • 145. 145 GOTO reduce 3 I7 * + num $ E T T  →  T  *  num       0 s3 1 2 1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 4 s3 6 5 s7 6 s5 r1 r1 7
  • 146. 146 GOTO reduce 3 I7 * + num $ E T T  →  T  *  num       0 s3 1 2 1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 4 s3 6 5 s7 6 s5 r1 r1 7 r3 r3 r3
  • 147. 147 GOTO * + num $ E T 0 s3 1 2 1 s4 acc 2 s5 r2 r2 3 r4 r4 r4 4 s3 6 5 s7 6 s5 r1 r1 7 r3 r3 r3
  • 148. 148 O(n) LR(0) O(n) LR(0) SLR(1) O(n) SLR(1) LALR(1) O(n) LALR(1) LR(1) O(n) LR(1) GLR O(n3) SDF O(n)
  • 149. 149 LR(1) LALR(1) SLR(1) LR(0)
  • 150. 150 expr 2 + 3 * 4
  • 151. 151 expr expr num + 2 + 3 * 4
  • 152. 152 expr expr num + num * num 2 + 3 * 4
  • 153. 153 •  ( ) •  Backtrack parsing •  Packrat parsing
  • 154. 154 E 1.  E    →  T  E’   2.  E’  →  +  E  |  ε   3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 155. 155 E 1.  E    →  T  E’   LL(1) 2.  E’  →  +  E  |  ε   3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 156. 156 E 1.  E    →  T  E’   2.  E’  →  +  E  |  ε   3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 157. 157 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 158. 158 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 159. 159 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 160. 160 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 161. 161 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 162. 162 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε num + num * num
  • 163. 163 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε 1 + num + num * num
  • 164. 164 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 165. 165 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 166. 166 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 167. 167 E E’ 1.  E    →  T  E’   T 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε 1 + num + num * num
  • 168. 168 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 169. 169 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 170. 170 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 171. 171 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 172. 172 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 173. 173 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   4.  T’  →  *  T  |  ε ε num + num * num
  • 174. 174 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε num + num * num
  • 175. 175 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε num + num * num
  • 176. 176 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε num + num * num
  • 177. 177 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε num + num * num
  • 178. 178 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε 1 * num + num * num
  • 179. 179 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num + num * num
  • 180. 180 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num + num * num
  • 181. 181 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num + num * num
  • 182. 182 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num + num * num
  • 183. 183 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num
  • 184. 184 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num
  • 185. 185 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num
  • 186. 186 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num
  • 187. 187 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε 1 * T num T’ num + num * num
  • 188. 188 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 189. 189 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 190. 190 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 191. 191 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 192. 192 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 193. 193 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ 4.  T’  →  *  T  |  ε ε 1 * T num T’ num + num * num ε
  • 194. 194 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ ε 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 195. 195 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ ε 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 196. 196 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ ε 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 197. 197 E E’ 1.  E    →  T  E’   T + E 2.  E’  →  +  E  |  ε   num T’ T E’ 3.  T    →  num  T’   num T’ ε 4.  T’  →  *  T  |  ε ε * T num T’ num + num * num ε
  • 198. 198 LL(1) •  • 
  • 199. 199 LL(1) E  →  T  +  E  |  T   T  →  num  *  T  |  num  
  • 200. 200 LL(1) E  →  T  +  E  |  T   T  →  num  *  T  |  num   E  →  T  E’   E’→  +  E  |  ε   T  →  num  *  T  |  num  
  • 201. 201 LL(1) E  →  T  +  E  |  T   T  →  num  *  T  |  num   E  →  T  E’   E  →  T  E’   E’→  +  E  |  ε   E’→  +  E  |  ε   T  →  num  T’   T  →  num  *  T  |  num   T’→  *  T  |  ε  
  • 202. 202 LL(1) E  →  T  +  E  |  T   LL(2) T  →  num  *  T  |  num   E  →  T  E’   E  →  T  E’   E’→  +  E  |  ε   E’→  +  E  |  ε   T  →  num  T’   T  →  num  *  T  |  num   T’→  *  T  |  ε  
  • 203. 203 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T 4.  T → num num + num * num
  • 204. 204 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num + num * num
  • 205. 205 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num + num * num
  • 206. 206 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num * T num + num * num
  • 207. 207 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num * T num + num * num
  • 208. 208 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num * T num + num * num
  • 209. 209 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num * T num + num * num
  • 210. 210 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num * T num + num * num
  • 211. 211 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num Backtrack ! num + num * num
  • 212. 212 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num + num * num
  • 213. 213 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 214. 214 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 215. 215 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 216. 216 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 217. 217 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 218. 218 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 219. 219 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 220. 220 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num T + E num + num * num
  • 221. 221 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num T + E num + num * num
  • 222. 222 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T + E 4.  T → num num * T num + num * num
  • 223. 223 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T + E 4.  T → num num * T num + num * num
  • 224. 224 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T + E 4.  T → num num * T num + num * num
  • 225. 225 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T + E 4.  T → num num * T num + num * num
  • 226. 226 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T + E 4.  T → num num * T num + num * num
  • 227. 227 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T + E 4.  T → num num * T num + num * num
  • 228. 228 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 229. 229 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 230. 230 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 231. 231 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 232. 232 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 233. 233 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num Backtrack ! num + num * num
  • 234. 234 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num + num * num
  • 235. 235 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 236. 236 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 237. 237 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 238. 238 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 239. 239 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 240. 240 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 241. 241 T + E Backtrack parsing 1.  E → T + E num T + E 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 242. 242 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num Backtrack ! num + num * num
  • 243. 243 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num num + num * num
  • 244. 244 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num T num + num * num
  • 245. 245 Backtrack parsing 1.  E → T + E E 2.  E → T 3.  T → num * T T + E 4.  T → num num T num + num * num
  • 246. 246 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T 4.  T → num num * T num + num * num
  • 247. 247 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T 4.  T → num num * T num + num * num
  • 248. 248 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T 4.  T → num num * T num + num * num
  • 249. 249 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T 4.  T → num num * T num + num * num
  • 250. 250 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T 4.  T → num num * T num + num * num
  • 251. 251 E Backtrack parsing 1.  E → T + E T + E 2.  E → T 3.  T → num * T num T 4.  T → num num * T num + num * num
  • 252. 252 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 253. 253 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 254. 254 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 255. 255 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 256. 256 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num * T num + num * num
  • 257. 257 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num Backtrack ! num + num * num
  • 258. 258 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num + num * num
  • 259. 259 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 260. 260 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 261. 261 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 262. 262 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 263. 263 T + E Backtrack parsing T 1.  E → T + E num 2.  E → T num * T 3.  T → num * T 4.  T → num num num + num * num
  • 264. 264 E Backtrack parsing 1.  E → T + E T + E 2.  E → T T 3.  T → num * T num 4.  T → num num * T num num + num * num
  • 265. 265 E Backtrack parsing 1.  E → T + E T + E 2.  E → T T 3.  T → num * T num 4.  T → num num * T num num + num * num
  • 266. 266 E 1.   E  →  E  +  T   2.   E  →  T   3.   T  →  T  *  num   4.   T  →  num
  • 267. 267 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   4.   T  →  num
  • 268. 268 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   4.   T  →  num
  • 269. 269 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   E + T 4.   T  →  num
  • 270. 270 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   E + T 4.   T  →  num
  • 271. 271 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   E + T 4.   T  →  num E + T
  • 272. 272 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   E + T 4.   T  →  num E + T
  • 273. 273 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   E + T 4.   T  →  num E + T E + T
  • 274. 274 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   E + T 4.   T  →  num E + T E + T
  • 275. 275 E 1.   E  →  E  +  T   E + T 2.   E  →  T   3.   T  →  T  *  num   E + T 4.   T  →  num E + T E + T
  • 276. 276  E  →  E  +  T  |  T    T  →  T  *  num  |  num  
  • 277. 277  E  →  E  +  T  |  T    T  →  T  *  num  |  num    E  →  T  E’    E’→  +  T  E’  |  ε    T  →  T  *  num  |  num  
  • 278. 278  E  →  E  +  T  |  T    T  →  T  *  num  |  num    E  →  T  E’    E’→  +  T  E’  |  ε    T  →  T  *  num  |  num  
  • 279. 279 E  → T  {  +  T  }   T  →  num  {  *  num  }     OK  E  →  E  +  T  |  T    T  →  T  *  num  |  num    E  →  T  E’    E  →  T  E’    E’→  +  T  E’  |  ε    E’→  +  T  E’  |  ε    T  →  num  T’    T  →  T  *  num  |  num    T’→  *  num  T’  |  ε  
  • 280. 280 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E num + num * num
  • 281. 281 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E T + E num + num * num
  • 282. 282 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E T + E num + num * num
  • 283. 283 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E T + E num * T num + num * num
  • 284. 284 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E T + E num * T num + num * num
  • 285. 285 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E num * T num + num * num
  • 286. 286 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E num * T num + num * num
  • 287. 287 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E Backtrack ! num + num * num
  • 288. 288 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E num + num * num
  • 289. 289 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E num num + num * num
  • 290. 290 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E num num + num * num
  • 291. 291 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E num num + num * num
  • 292. 292 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num T + E num num + num * num
  • 293. 293 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) T + E num num + num * num
  • 294. 294 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) T + E num num + num * num
  • 295. 295 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E num num + num * num
  • 296. 296 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E num num + num * num
  • 297. 297 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E num T + E num + num * num
  • 298. 298 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E num T + E num + num * num
  • 299. 299 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T + E num * T num + num * num
  • 300. 300 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T + E num * T num + num * num
  • 301. 301 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T + E 2 - 3 num num num * T num + num * num
  • 302. 302 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T + E 2 - 3 num num num * T num + num * num
  • 303. 303 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T + E 2 - 3 num num 3 - 4 * * num * T num + num * num
  • 304. 304 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T + E 2 - 3 num num 3 - 4 * * num * T num + num * num
  • 305. 305 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * num * T num + num * num
  • 306. 306 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * num * T num + num * num
  • 307. 307 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num * T num + num * num
  • 308. 308 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num * T num + num * num
  • 309. 309 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num * T num + num * num
  • 310. 310 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num Backtrack ! num + num * num
  • 311. 311 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 312. 312 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num num + num * num
  • 313. 313 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num num + num * num
  • 314. 314 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num num + num * num
  • 315. 315 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num 4 - 5 T T(num) num + num * num
  • 316. 316 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num 4 - 5 T T(num) 2 - 5 T T(num, *, T) num + num * num
  • 317. 317 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num 4 - 5 T T(num) 2 - 5 T T(num, *, T) num + num * num
  • 318. 318 T + E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num num T + E 0 - 1 num num 0 - 1 T T(num) num * T 1 - 2 + + 2 - 3 num num 3 - 4 * * 4 - 5 num num num 4 - 5 T T(num) 2 - 5 T T(num, *, T) num + num * num
  • 319. 319 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E 2 - 3 num num 3 - 4 * * 4 - 5 num num num Backtrack ! 4 - 5 T T(num) 2 - 5 T T(num, *, T) num + num * num
  • 320. 320 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E 2 - 3 num num 3 - 4 * * 4 - 5 num num 4 - 5 T T(num) num 2 - 5 T T(num, *, T) num + num * num
  • 321. 321 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E 2 - 3 num num 3 - 4 * * 4 - 5 num num 4 - 5 T T(num) num T 2 - 5 T T(num, *, T) num + num * num
  • 322. 322 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + T + E 2 - 3 num num 3 - 4 * * 4 - 5 num num 4 - 5 T T(num) num T 2 - 5 T T(num, *, T) num + num * num
  • 323. 323 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T 2 - 3 num num 3 - 4 * * 4 - 5 num num num * T 4 - 5 T T(num) 2 - 5 T T(num, *, T) num + num * num num
  • 324. 324 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T 2 - 3 num num 3 - 4 * * 4 - 5 num num num * T 4 - 5 T T(num) 2 - 5 T T(num, *, T) 2 - 5 E E(T) num + num * num num
  • 325. 325 E 1.  E → T + E 3.  T → num * T Packrat parsing 2.  E → T 4.  T → num T + E 0 - 1 num num 0 - 1 T T(num) 1 - 2 + + num T 2 - 3 num num 3 - 4 * * 4 - 5 num num num * T 4 - 5 T T(num) 2 - 5 T T(num, *, T) 2 - 5 E E(T) num + num 0 - 5 * E num + E) E(T num
  • 326. 326 Packrat parsing •  (PEG) •  ☓
  • 327. 327 E→E+T|T Packrat parsing + T → T * num | num E num + num * num
  • 328. 328 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL FAIL num + num * num
  • 329. 329 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL E + T num + num * num
  • 330. 330 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL E + T num + num * num
  • 331. 331 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL E + T num + num * num
  • 332. 332 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL E + T num + num * num
  • 333. 333 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL num + num * num
  • 334. 334 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL T num + num * num
  • 335. 335 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T FAIL num + num * num
  • 336. 336 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T T * num num + num * num
  • 337. 337 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T T * num num + num * num
  • 338. 338 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T T * num num + num * num
  • 339. 339 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T T * num num + num * num
  • 340. 340 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T num + num * num
  • 341. 341 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T num num + num * num
  • 342. 342 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T num num + num * num
  • 343. 343 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 0 T FAIL T 0 - 1 num num num num + num * num
  • 344. 344 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 1 T T(num) T 0 - 1 num num num num + num * num
  • 345. 345 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num Backtrack ! num + num * num
  • 346. 346 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num T * num num + num * num
  • 347. 347 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num T * num num + num * num
  • 348. 348 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 ! 0 - 1 T T(num) T 0 - 1 num num T * num num + num * num
  • 349. 349 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 ! 0 - 1 T T(num) T 0 - 1 num num T * num num num + num * num
  • 350. 350 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num T * num num num + num * num
  • 351. 351 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num T * num num num + num * num
  • 352. 352 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num Backtrack ! num + num * num
  • 353. 353 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num num num + num * num
  • 354. 354 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num num num + num * num
  • 355. 355 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T ! 0 - 1 num num num num + num * num
  • 356. 356 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T ! 0 - 1 num num num num + num * num
  • 357. 357 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num num num + num * num
  • 358. 358 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL : 1 0 - 1 T T(num) T 0 - 1 num num ! num + num * num
  • 359. 359 E→E+T|T Packrat parsing + T → T * num | num E 0 - 0 E FAIL 0 - 1 T T(num) T 0 - 1 num num num num + num * num
  • 360. 360 E→E+T|T Packrat parsing + T → T * num | num E 0 - 1 E E(T(num)) 0 - 1 T T(num) T 0 - 1 num num num num + num * num
  • 361. 361 E→E+T|T Packrat parsing + T → T * num | num : 1 E 0 - 1 E E(T(num)) 0 - 1 T T(num) 0 - 1 num num Backtrack ! num + num * num
  • 362. 362 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num num + num * num
  • 363. 363 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num num + num * num
  • 364. 364 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T ! 0 - 1 num num num + num * num
  • 365. 365 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T ! 0 - 1 num num T num num + num * num
  • 366. 366 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num T num num + num * num
  • 367. 367 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num num + num * num
  • 368. 368 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num num + num * num
  • 369. 369 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 2 T FAIL FAIL num num + num * num
  • 370. 370 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 2 T FAIL T * num num num + num * num
  • 371. 371 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 2 T FAIL T * num num num + num * num
  • 372. 372 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 2 T FAIL T * num num num + num * num
  • 373. 373 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 2 T FAIL T * num num num + num * num
  • 374. 374 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 2 T FAIL num num + num * num
  • 375. 375 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 2 T FAIL num num + num * num
  • 376. 376 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 2 T FAIL num num + num * num
  • 377. 377 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 2 T FAIL 2 - 3 num num num num + num * num
  • 378. 378 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 3 T T(num) 2 - 3 num num num num + num * num
  • 379. 379 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 3 T T(num) 2 - 3 num num num Backtrack ! num + num * num
  • 380. 380 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num num num + num * num
  • 381. 381 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num num num + num * num
  • 382. 382 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num ! num num + num * num
  • 383. 383 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num ! num num num + num * num
  • 384. 384 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num num num num + num * num
  • 385. 385 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num 3 - 4 * * num num num + num * num
  • 386. 386 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num 3 - 4 * * num num num + num * num
  • 387. 387 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num 3 - 4 * * num num 4 - 5 num num num + num * num
  • 388. 388 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 3 T T(num) 2 - 3 num num 3 - 4 * * num num 4 - 5 num num num + num * num
  • 389. 389 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 3 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num num 4 - 5 num num num + num * num
  • 390. 390 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 5 T T(T(num)*num) 2 - 3 num num Backtrack ! 3 - 4 * * num 4 - 5 num num num + num * num
  • 391. 391 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num 4 - 5 num num num + num * num
  • 392. 392 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num 4 - 5 num num num + num * num
  • 393. 393 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * ! 4 - 5 num num num num + num * num
  • 394. 394 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * T * num ! 4 - 5 num num num num num + num * num
  • 395. 395 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * T * num num 4 - 5 num num num num + num * num
  • 396. 396 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * T * num num 4 - 5 num num num num + num * num
  • 397. 397 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T 2 - 5 T T(T(num)*num) 2 - 3 num num Backtrack ! 3 - 4 * * num 4 - 5 num num num + num * num
  • 398. 398 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num 4 - 5 num num num + num * num
  • 399. 399 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num 4 - 5 num num num + num * num
  • 400. 400 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * ! 4 - 5 num num num num + num * num
  • 401. 401 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * ! 4 - 5 num num num num + num * num
  • 402. 402 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num 4 - 5 num num num + num * num
  • 403. 403 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) : 5 0 - 1 T T(num) E + T 0 - 1 num num ! 1 - 2 + + T 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num 4 - 5 num num num + num * num
  • 404. 404 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num num 4 - 5 num num num + num * num
  • 405. 405 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 1 E E(T(num)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num num 4 - 5 num num num + num * num
  • 406. 406 E→E+T|T Packrat parsing + T → T * num | num E : 1 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num num 4 - 5 num num num + num * num
  • 407. 407 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num Backtrack ! 3 - 4 * * 4 - 5 num num num + num * num
  • 408. 408 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 409. 409 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 410. 410 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T ! 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 411. 411 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T ! 0 - 1 num num 1 - 2 + + E + T 2 - 5 T T(T(num)*num) 2 - 3 num num T T * num 3 - 4 * * 4 - 5 num num num num num + num * num
  • 412. 412 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + E + T 2 - 5 T T(T(num)*num) 2 - 3 num num T T * num 3 - 4 * * 4 - 5 num num num num num + num * num
  • 413. 413 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + E + T 2 - 5 T T(T(num)*num) 2 - 3 num num T T * num 3 - 4 * * 4 - 5 num num num num num + num * num
  • 414. 414 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num Backtrack ! 3 - 4 * * 4 - 5 num num num + num * num
  • 415. 415 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) T 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 416. 416 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) T 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 417. 417 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) T ! 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 418. 418 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) T ! 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) num 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 419. 419 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) T 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) num 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 420. 420 E→E+T|T Packrat parsing + T → T * num | num E : 5 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) ! 0 - 1 num num 1 - 2 + + 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * 4 - 5 num num num + num * num
  • 421. 421 E→E+T|T Packrat parsing + T → T * num | num E 0 - 5 E E(E(...)+T(...)) 0 - 1 T T(num) E + T 0 - 1 num num 1 - 2 + + T T * num 2 - 5 T T(T(num)*num) 2 - 3 num num 3 - 4 * * num num 4 - 5 num num num + num * num
  • 422. 422 LL(k) Backtrack Packrat Rats! Packrat + LR CFG&PEG ?
  • 423. 423 LL(k)
  • 424. 424 •  – p.14 •  – p.18 •  LR – p.37 •  – p.148 •  – p.150 •  – p.154 •  Backtrack parsing – p.203 •  Packrat parsing – p.280 •  Packrat parsing + – p.327 •  – p.422