blog 文章

2016/07/13

eval 4 line expression

eval
x=1;
y=x+2;
x*y+1;
5-3*2+(1+2);
eval
             root
              |
             prog
 _____________|______________
 |        |        |        |
 =        =        +        +
_|__     _|__     _|__   ___|___
|  |     |  |     |  |   |     |
x  1     y  +     *  1   -     +
           _|__  _|__   _|__  _|__
           |  |  |  |   |  |  |  |
           x  2  x  y   5  *  1  2
                          _|__
                          |  |
                          3  2
num: 24
cur node: root
 op: root
cur node: prog
cur node: =
op is =
 op: prog, op child: =, eval op child: =
===========================
             root
              |
             prog
 _____________|______________
 |        |        |        |
 =        =        +        +
_|__     _|__     _|__   ___|___
|  |     |  |     |  |   |     |
x  1     y  +     *  1   -     +
           _|__  _|__   _|__  _|__
           |  |  |  |   |  |  |  |
           x  2  x  y   5  *  1  2
                          _|__
                          |  |
                          3  2
---------------------------
cur node: =
op is =
cur node: +
eval name n: 1
xx cur: +
c1: 1
c2: 2
eval: 1 + 2 = 3
~ASTNode: 8: +
~ASTNode: 7: x
~ASTNode: 9: 2
===========================
            root
             |
            prog
 ____________|____________
 |       |       |       |
 =       =       +       +
_|__    _|__    _|__  ___|___
|  |    |  |    |  |  |     |
x  1    y  3    *  1  -     +
               _|__  _|__  _|__
               |  |  |  |  |  |
               x  y  5  *  1  2
                       _|__
                       |  |
                       3  2
---------------------------
 op: prog, op child: =, eval op child: =
===========================
            root
             |
            prog
 ____________|____________
 |       |       |       |
 =       =       +       +
_|__    _|__    _|__  ___|___
|  |    |  |    |  |  |     |
x  1    y  3    *  1  -     +
               _|__  _|__  _|__
               |  |  |  |  |  |
               x  y  5  *  1  2
                       _|__
                       |  |
                       3  2
---------------------------
cur node: +
cur node: *
eval name n: 1
xx cur: *
c1: 1
eval name n: 3
c2: 3
eval: 1 * 3 = 3
xx cur: +
c1: 3
c2: 1
~ASTNode: 11: *
~ASTNode: 10: x
~ASTNode: 12: y
===========================
            root
             |
            prog
 ____________|____________
 |       |       |       |
 =       =       +       +
_|__    _|__    _|__  ___|___
|  |    |  |    |  |  |     |
x  1    y  3    3  1  -     +
                     _|__  _|__
                     |  |  |  |
                     5  *  1  2
                       _|__
                       |  |
                       3  2
---------------------------
eval: 3 + 1 = 4
 op: prog, op child: +, eval op child: 4
~ASTNode: 13: +
~ASTNode: 25: 3
~ASTNode: 14: 1
===========================
         root
          |
         prog
 _________|_________
 |     |     |     |
 =     =     4     +
_|__  _|__      ___|___
|  |  |  |      |     |
x  1  y  3      -     +
               _|__  _|__
               |  |  |  |
               5  *  1  2
                 _|__
                 |  |
                 3  2
---------------------------
cur node: +
cur node: -
xx cur: -
c1: 5
cur node: *
xx cur: *
c1: 3
c2: 2
eval: 3 * 2 = 6
c2: 6
~ASTNode: 18: *
~ASTNode: 17: 3
~ASTNode: 19: 2
===========================
         root
          |
         prog
 _________|_________
 |     |     |     |
 =     =     4     +
_|__  _|__      ___|___
|  |  |  |      |     |
x  1  y  3      -     +
               _|__  _|__
               |  |  |  |
               5  6  1  2
---------------------------
eval: 5 - 6 = -1
xx cur: +
c1: -1
cur node: +
xx cur: +
c1: 1
c2: 2
eval: 1 + 2 = 3
c2: 3
~ASTNode: 16: -
~ASTNode: 15: 5
~ASTNode: 27: 6
===========================
         root
          |
         prog
 _________|_________
 |     |     |     |
 =     =     4     +
_|__  _|__       __|__
|  |  |  |       |   |
x  1  y  3       -1  +
                    _|__
                    |  |
                    1  2
---------------------------
~ASTNode: 22: +
~ASTNode: 21: 1
~ASTNode: 23: 2
===========================
         root
          |
         prog
 _________|_________
 |     |     |     |
 =     =     4     +
_|__  _|__       __|__
|  |  |  |       |   |
x  1  y  3       -1  3
---------------------------
eval: -1 + 3 = 2
 op: prog, op child: +, eval op child: 2
~ASTNode: 20: +
~ASTNode: 28: -1
~ASTNode: 29: 3
===========================
         root
          |
         prog
 _________|_________
 |     |     |     |
 =     =     4     2
_|__  _|__
|  |  |  |
x  1  y  3
---------------------------
xx n: prog
 yy op: root
===========================
         root
          |
         prog
 _________|_________
 |     |     |     |
 =     =     4     2
_|__  _|__
|  |  |  |
x  1  y  3
---------------------------
~ASTNode: 0: root
~ASTNode: 1: prog
~ASTNode: 3: =
~ASTNode: 2: x
~ASTNode: 4: 1
~ASTNode: 6: =
~ASTNode: 5: y
~ASTNode: 24: 3
~ASTNode: 26: 4
~ASTNode: 30: 2

沒有留言:

張貼留言