diff --git a/Code/a.txt b/Code/a.txt
index 14ce08a1f7034a19e15cfea83d3ab36d0d7c3ead..60f81b389f3957cca8ca3c5899b9b624912211e5 100644
--- a/Code/a.txt
+++ b/Code/a.txt
@@ -1,1088 +1,52 @@
-Program (3)
-  ExtDefList (3)
-    ExtDef (3)
-      Specifier (3)
-        TYPE: int
-      ExtDecList (3)
-        VarDec (3)
-          ID: global1
-        COMMA
-        ExtDecList (3)
-          VarDec (3)
-            ID: global2
-      SEMI
-    ExtDefList (5)
-      ExtDef (5)
-        Specifier (5)
-          TYPE: int
-        SEMI
-      ExtDefList (8)
-        ExtDef (8)
-          Specifier (8)
-            StructSpecifier (8)
-              STRUCT
-              LC
-              DefList (10)
-                Def (10)
-                  Specifier (10)
-                    TYPE: int
-                  DecList (10)
-                    Dec (10)
-                      VarDec (10)
-                        ID: field1
-                  SEMI
-              RC
-          SEMI
-        ExtDefList (13)
-          ExtDef (13)
-            Specifier (13)
-              StructSpecifier (13)
-                STRUCT
-                LC
-                DefList (15)
-                  Def (15)
-                    Specifier (15)
-                      TYPE: int
-                    DecList (15)
-                      Dec (15)
-                        VarDec (15)
-                          ID: field1
-                    SEMI
-                  DefList (16)
-                    Def (16)
-                      Specifier (16)
-                        TYPE: float
-                      DecList (16)
-                        Dec (16)
-                          VarDec (16)
-                            ID: field2
-                      SEMI
-                RC
-            ExtDecList (17)
-              VarDec (17)
-                ID: s1
-              COMMA
-              ExtDecList (17)
-                VarDec (17)
-                  ID: s2
-            SEMI
-          ExtDefList (20)
-            ExtDef (20)
-              Specifier (20)
-                StructSpecifier (20)
-                  STRUCT
-                  OptTag (20)
-                    ID: Complex
-                  LC
-                  DefList (22)
-                    Def (22)
-                      Specifier (22)
-                        TYPE: int
-                      DecList (22)
-                        Dec (22)
-                          VarDec (22)
-                            ID: real
-                      SEMI
-                    DefList (23)
-                      Def (23)
-                        Specifier (23)
-                          TYPE: int
-                        DecList (23)
-                          Dec (23)
-                            VarDec (23)
-                              ID: imag
-                        SEMI
-                  RC
-              ExtDecList (24)
-                VarDec (24)
-                  ID: c1
-                COMMA
-                ExtDecList (24)
-                  VarDec (24)
-                    ID: c2
-                  COMMA
-                  ExtDecList (24)
-                    VarDec (24)
-                      VarDec (24)
-                        ID: carray
-                      LB
-                      INT: 100
-                      RB
-                    COMMA
-                    ExtDecList (24)
-                      VarDec (24)
-                        VarDec (24)
-                          VarDec (24)
-                            VarDec (24)
-                              ID: multi_dim
-                            LB
-                            INT: 1
-                            RB
-                          LB
-                          INT: 2
-                          RB
+Program (1)
+  ExtDefList (1)
+    ExtDef (1)
+      Specifier (1)
+        StructSpecifier (1)
+          STRUCT
+          OptTag (1)
+            ID: asda
+          LC
+          DefList (3)
+            Def (3)
+              Specifier (3)
+                TYPE: int
+              DecList (3)
+                Dec (3)
+                  VarDec (3)
+                    VarDec (3)
+                      VarDec (3)
+                        VarDec (3)
+                          ID: a
                         LB
-                        INT: 3
+                        INT: 23
                         RB
+                      LB
+                      INT: 345
+                      RB
+                    LB
+                    INT: 43
+                    RB
               SEMI
-            ExtDefList (27)
-              ExtDef (27)
-                Specifier (27)
-                  StructSpecifier (27)
-                    STRUCT
-                    OptTag (27)
-                      ID: Complex_pair
-                    LC
-                    DefList (29)
-                      Def (29)
-                        Specifier (29)
-                          StructSpecifier (29)
-                            STRUCT
-                            Tag (29)
-                              ID: Complex
-                        DecList (29)
-                          Dec (29)
-                            VarDec (29)
-                              ID: x
-                        SEMI
-                      DefList (30)
-                        Def (30)
-                          Specifier (30)
-                            StructSpecifier (30)
-                              STRUCT
-                              Tag (30)
-                                ID: Complex
-                          DecList (30)
-                            Dec (30)
-                              VarDec (30)
-                                ID: y
-                          SEMI
-                        DefList (31)
-                          Def (31)
-                            Specifier (31)
-                              StructSpecifier (31)
-                                STRUCT
-                                OptTag (31)
-                                  ID: withname
-                                LC
-                                DefList (33)
-                                  Def (33)
-                                    Specifier (33)
-                                      TYPE: int
-                                    DecList (33)
-                                      Dec (33)
-                                        VarDec (33)
-                                          ID: field
-                                    SEMI
-                                RC
-                            DecList (34)
-                              Dec (34)
-                                VarDec (34)
-                                  ID: s1
-                            SEMI
-                          DefList (35)
-                            Def (35)
-                              Specifier (35)
-                                StructSpecifier (35)
-                                  STRUCT
-                                  LC
-                                  DefList (37)
-                                    Def (37)
-                                      Specifier (37)
-                                        TYPE: float
-                                      DecList (37)
-                                        Dec (37)
-                                          VarDec (37)
-                                            ID: field
-                                      SEMI
-                                  RC
-                              DecList (38)
-                                Dec (38)
-                                  VarDec (38)
-                                    ID: s2
-                              SEMI
-                    RC
+            DefList (4)
+              Def (4)
+                Specifier (4)
+                  TYPE: float
+                DecList (4)
+                  Dec (4)
+                    VarDec (4)
+                      ID: b
                 SEMI
-              ExtDefList (43)
-                ExtDef (43)
-                  Specifier (43)
-                    TYPE: int
-                  FunDec (43)
-                    ID: main
-                    LP
-                    RP
-                  CompSt (44)
-                    LC
-                    DefList (46)
-                      Def (46)
-                        Specifier (46)
-                          TYPE: int
-                        DecList (46)
-                          Dec (46)
-                            VarDec (46)
-                              ID: a
-                        SEMI
-                      DefList (47)
-                        Def (47)
-                          Specifier (47)
-                            TYPE: int
-                          DecList (47)
-                            Dec (47)
-                              VarDec (47)
-                                VarDec (47)
-                                  VarDec (47)
-                                    ID: barray
-                                  LB
-                                  INT: 10
-                                  RB
-                                LB
-                                INT: 2
-                                RB
-                          SEMI
-                        DefList (48)
-                          Def (48)
-                            Specifier (48)
-                              TYPE: int
-                            DecList (48)
-                              Dec (48)
-                                VarDec (48)
-                                  ID: i
-                                ASSIGNOP
-                                Exp (48)
-                                  INT: 0
-                            SEMI
-                          DefList (49)
-                            Def (49)
-                              Specifier (49)
-                                TYPE: int
-                              DecList (49)
-                                Dec (49)
-                                  VarDec (49)
-                                    ID: a1
-                                COMMA
-                                DecList (49)
-                                  Dec (49)
-                                    VarDec (49)
-                                      ID: a2
-                                  COMMA
-                                  DecList (49)
-                                    Dec (49)
-                                      VarDec (49)
-                                        ID: a3
-                              SEMI
-                            DefList (50)
-                              Def (50)
-                                Specifier (50)
-                                  StructSpecifier (50)
-                                    STRUCT
-                                    Tag (50)
-                                      ID: Complex
-                                DecList (50)
-                                  Dec (50)
-                                    VarDec (50)
-                                      ID: c
-                                SEMI
-                              DefList (51)
-                                Def (51)
-                                  Specifier (51)
-                                    StructSpecifier (51)
-                                      STRUCT
-                                      Tag (51)
-                                        ID: Complex_pair
-                                  DecList (51)
-                                    Dec (51)
-                                      VarDec (51)
-                                        ID: cp
-                                  SEMI
-                    StmtList (54)
-                      Stmt (54)
-                        Exp (54)
-                          ID: nonexist_func
-                          LP
-                          Args (54)
-                            Exp (54)
-                              INT: 1
-                            COMMA
-                            Args (54)
-                              Exp (54)
-                                INT: 2
-                              COMMA
-                              Args (54)
-                                Exp (54)
-                                  ID: a
-                                COMMA
-                                Args (54)
-                                  Exp (54)
-                                    Exp (54)
-                                      ID: barray
-                                    LB
-                                    Exp (54)
-                                      INT: 1
-                                    RB
-                                  COMMA
-                                  Args (54)
-                                    Exp (54)
-                                      ID: barray
-                          RP
-                        SEMI
-                      StmtList (55)
-                        Stmt (55)
-                          Exp (55)
-                            INT: 1
-                          SEMI
-                        StmtList (56)
-                          Stmt (56)
-                            CompSt (56)
-                              LC
-                              DefList (57)
-                                Def (57)
-                                  Specifier (57)
-                                    TYPE: int
-                                  DecList (57)
-                                    Dec (57)
-                                      VarDec (57)
-                                        ID: x
-                                  SEMI
-                              RC
-                          StmtList (60)
-                            Stmt (60)
-                              Exp (60)
-                                Exp (60)
-                                  ID: true
-                                ASSIGNOP
-                                Exp (60)
-                                  INT: 1
-                              SEMI
-                            StmtList (61)
-                              Stmt (61)
-                                Exp (61)
-                                  Exp (61)
-                                    ID: false
-                                  ASSIGNOP
-                                  Exp (61)
-                                    Exp (61)
-                                      ID: true
-                                    MINUS
-                                    Exp (61)
-                                      INT: 1
-                                SEMI
-                              StmtList (62)
-                                Stmt (62)
-                                  IF
-                                  LP
-                                  Exp (62)
-                                    ID: true
-                                  RP
-                                  Stmt (62)
-                                    CompSt (62)
-                                      LC
-                                      StmtList (63)
-                                        Stmt (63)
-                                          RETURN
-                                          Exp (63)
-                                            ID: false
-                                          SEMI
-                                      RC
-                                StmtList (67)
-                                  Stmt (67)
-                                    IF
-                                    LP
-                                    Exp (67)
-                                      Exp (67)
-                                        ID: a
-                                      AND
-                                      Exp (67)
-                                        ID: true
-                                    RP
-                                    Stmt (68)
-                                      IF
-                                      LP
-                                      Exp (68)
-                                        Exp (68)
-                                          ID: a
-                                        AND
-                                        Exp (68)
-                                          ID: false
-                                      RP
-                                      Stmt (69)
-                                        RETURN
-                                        Exp (69)
-                                          ID: true
-                                        SEMI
-                                      ELSE
-                                      Stmt (71)
-                                        RETURN
-                                        Exp (71)
-                                          ID: which_if
-                                        SEMI
-                                  StmtList (73)
-                                    Stmt (73)
-                                      WHILE
-                                      LP
-                                      Exp (73)
-                                        Exp (73)
-                                          ID: i
-                                        RELOP
-                                        Exp (73)
-                                          INT: 0
-                                      RP
-                                      Stmt (73)
-                                        CompSt (73)
-                                          LC
-                                          StmtList (74)
-                                            Stmt (74)
-                                              Exp (74)
-                                                Exp (74)
-                                                  ID: i
-                                                ASSIGNOP
-                                                Exp (74)
-                                                  Exp (74)
-                                                    ID: i
-                                                  PLUS
-                                                  Exp (74)
-                                                    INT: 1
-                                              SEMI
-                                            StmtList (75)
-                                              Stmt (75)
-                                                IF
-                                                LP
-                                                Exp (75)
-                                                  ID: some_condition
-                                                  LP
-                                                  Args (75)
-                                                    Exp (75)
-                                                      INT: 1
-                                                    COMMA
-                                                    Args (75)
-                                                      Exp (75)
-                                                        INT: 2
-                                                      COMMA
-                                                      Args (75)
-                                                        Exp (75)
-                                                          INT: 3
-                                                  RP
-                                                RP
-                                                Stmt (75)
-                                                  CompSt (75)
-                                                    LC
-                                                    StmtList (76)
-                                                      Stmt (76)
-                                                        Exp (76)
-                                                          ID: do_nothing
-                                                          LP
-                                                          RP
-                                                        SEMI
-                                                    RC
-                                          RC
-                                    StmtList (81)
-                                      Stmt (81)
-                                        Exp (81)
-                                          Exp (81)
-                                            Exp (81)
-                                              ID: c
-                                            DOT
-                                            ID: imag
-                                          ASSIGNOP
-                                          Exp (81)
-                                            INT: 1
-                                        SEMI
-                                      StmtList (82)
-                                        Stmt (82)
-                                          Exp (82)
-                                            Exp (82)
-                                              Exp (82)
-                                                ID: c
-                                              DOT
-                                              ID: real
-                                            ASSIGNOP
-                                            Exp (82)
-                                              INT: 2
-                                          SEMI
-                                        StmtList (83)
-                                          Stmt (83)
-                                            Exp (83)
-                                              Exp (83)
-                                                Exp (83)
-                                                  ID: c
-                                                DOT
-                                                ID: real
-                                              ASSIGNOP
-                                              Exp (83)
-                                                Exp (83)
-                                                  Exp (83)
-                                                    ID: c
-                                                  DOT
-                                                  ID: imag
-                                                PLUS
-                                                Exp (83)
-                                                  Exp (83)
-                                                    ID: c
-                                                  DOT
-                                                  ID: real
-                                            SEMI
-                                          StmtList (84)
-                                            Stmt (84)
-                                              Exp (84)
-                                                Exp (84)
-                                                  Exp (84)
-                                                    Exp (84)
-                                                      ID: cp
-                                                    DOT
-                                                    ID: s1
-                                                  DOT
-                                                  ID: field
-                                                ASSIGNOP
-                                                Exp (84)
-                                                  INT: 1
-                                              SEMI
-                                            StmtList (85)
-                                              Stmt (85)
-                                                Exp (85)
-                                                  Exp (85)
-                                                    Exp (85)
-                                                      Exp (85)
-                                                        Exp (85)
-                                                          Exp (85)
-                                                            ID: multi_dim
-                                                          LB
-                                                          Exp (85)
-                                                            INT: 0
-                                                          RB
-                                                        LB
-                                                        Exp (85)
-                                                          ID: some_func
-                                                          LP
-                                                          RP
-                                                        RB
-                                                      LB
-                                                      Exp (85)
-                                                        INT: 0
-                                                      RB
-                                                    DOT
-                                                    ID: real
-                                                  ASSIGNOP
-                                                  Exp (85)
-                                                    INT: 1
-                                                SEMI
-                                              StmtList (88)
-                                                Stmt (88)
-                                                  Exp (88)
-                                                    Exp (88)
-                                                      ID: non_exist_bool
-                                                    ASSIGNOP
-                                                    Exp (88)
-                                                      Exp (88)
-                                                        Exp (88)
-                                                          Exp (88)
-                                                            ID: true
-                                                          AND
-                                                          Exp (88)
-                                                            ID: false
-                                                        OR
-                                                        Exp (88)
-                                                          Exp (88)
-                                                            Exp (88)
-                                                              Exp (88)
-                                                                LP
-                                                                Exp (88)
-                                                                  Exp (88)
-                                                                    INT: 1
-                                                                  PLUS
-                                                                  Exp (88)
-                                                                    INT: 2
-                                                                RP
-                                                              RELOP
-                                                              Exp (88)
-                                                                LP
-                                                                Exp (88)
-                                                                  Exp (88)
-                                                                    INT: 1
-                                                                  PLUS
-                                                                  Exp (88)
-                                                                    Exp (88)
-                                                                      INT: 2
-                                                                    STAR
-                                                                    Exp (88)
-                                                                      INT: 3
-                                                                RP
-                                                            RELOP
-                                                            Exp (89)
-                                                              Exp (89)
-                                                                ID: barray
-                                                              LB
-                                                              Exp (89)
-                                                                INT: 7
-                                                              RB
-                                                          RELOP
-                                                          Exp (89)
-                                                            Exp (89)
-                                                              ID: c
-                                                            DOT
-                                                            ID: imag
-                                                      ASSIGNOP
-                                                      Exp (89)
-                                                        Exp (89)
-                                                          LP
-                                                          Exp (89)
-                                                            Exp (89)
-                                                              NOT
-                                                              Exp (89)
-                                                                ID: a
-                                                            DIV
-                                                            Exp (89)
-                                                              INT: 8
-                                                          RP
-                                                        RELOP
-                                                        Exp (89)
-                                                          INT: 9
-                                                  SEMI
-                                                StmtList (92)
-                                                  Stmt (92)
-                                                    Exp (92)
-                                                      Exp (92)
-                                                        ID: a
-                                                      ASSIGNOP
-                                                      Exp (92)
-                                                        MINUS
-                                                        Exp (92)
-                                                          MINUS
-                                                          Exp (92)
-                                                            MINUS
-                                                            Exp (92)
-                                                              MINUS
-                                                              Exp (92)
-                                                                ID: b
-                                                    SEMI
-                                                  StmtList (93)
-                                                    Stmt (93)
-                                                      Exp (93)
-                                                        Exp (93)
-                                                          ID: a
-                                                        ASSIGNOP
-                                                        Exp (93)
-                                                          NOT
-                                                          Exp (93)
-                                                            NOT
-                                                            Exp (93)
-                                                              NOT
-                                                              Exp (93)
-                                                                NOT
-                                                                Exp (93)
-                                                                  NOT
-                                                                  Exp (93)
-                                                                    ID: b
-                                                      SEMI
-                                                    StmtList (94)
-                                                      Stmt (94)
-                                                        Exp (94)
-                                                          Exp (94)
-                                                            ID: a
-                                                          ASSIGNOP
-                                                          Exp (94)
-                                                            Exp (94)
-                                                              Exp (94)
-                                                                ID: b
-                                                              STAR
-                                                              Exp (94)
-                                                                ID: c
-                                                            STAR
-                                                            Exp (94)
-                                                              ID: d
-                                                        SEMI
-                                                      StmtList (95)
-                                                        Stmt (95)
-                                                          Exp (95)
-                                                            Exp (95)
-                                                              ID: a
-                                                            ASSIGNOP
-                                                            Exp (95)
-                                                              Exp (95)
-                                                                Exp (95)
-                                                                  ID: b
-                                                                DIV
-                                                                Exp (95)
-                                                                  ID: c
-                                                              DIV
-                                                              Exp (95)
-                                                                ID: d
-                                                          SEMI
-                                                        StmtList (96)
-                                                          Stmt (96)
-                                                            Exp (96)
-                                                              Exp (96)
-                                                                ID: a
-                                                              ASSIGNOP
-                                                              Exp (96)
-                                                                Exp (96)
-                                                                  Exp (96)
-                                                                    ID: b
-                                                                  PLUS
-                                                                  Exp (96)
-                                                                    ID: c
-                                                                PLUS
-                                                                Exp (96)
-                                                                  ID: d
-                                                            SEMI
-                                                          StmtList (97)
-                                                            Stmt (97)
-                                                              Exp (97)
-                                                                Exp (97)
-                                                                  ID: a
-                                                                ASSIGNOP
-                                                                Exp (97)
-                                                                  Exp (97)
-                                                                    Exp (97)
-                                                                      ID: b
-                                                                    MINUS
-                                                                    Exp (97)
-                                                                      ID: c
-                                                                  MINUS
-                                                                  Exp (97)
-                                                                    ID: d
-                                                              SEMI
-                                                            StmtList (98)
-                                                              Stmt (98)
-                                                                Exp (98)
-                                                                  Exp (98)
-                                                                    ID: a
-                                                                  ASSIGNOP
-                                                                  Exp (98)
-                                                                    Exp (98)
-                                                                      Exp (98)
-                                                                        ID: b
-                                                                      RELOP
-                                                                      Exp (98)
-                                                                        ID: c
-                                                                    RELOP
-                                                                    Exp (98)
-                                                                      ID: d
-                                                                SEMI
-                                                              StmtList (99)
-                                                                Stmt (99)
-                                                                  Exp (99)
-                                                                    Exp (99)
-                                                                      ID: a
-                                                                    ASSIGNOP
-                                                                    Exp (99)
-                                                                      Exp (99)
-                                                                        Exp (99)
-                                                                          ID: b
-                                                                        RELOP
-                                                                        Exp (99)
-                                                                          ID: c
-                                                                      RELOP
-                                                                      Exp (99)
-                                                                        ID: d
-                                                                  SEMI
-                                                                StmtList (100)
-                                                                  Stmt (100)
-                                                                    Exp (100)
-                                                                      Exp (100)
-                                                                        ID: a
-                                                                      ASSIGNOP
-                                                                      Exp (100)
-                                                                        Exp (100)
-                                                                          Exp (100)
-                                                                            ID: b
-                                                                          RELOP
-                                                                          Exp (100)
-                                                                            ID: c
-                                                                        RELOP
-                                                                        Exp (100)
-                                                                          ID: d
-                                                                    SEMI
-                                                                  StmtList (101)
-                                                                    Stmt (101)
-                                                                      Exp (101)
-                                                                        Exp (101)
-                                                                          ID: a
-                                                                        ASSIGNOP
-                                                                        Exp (101)
-                                                                          Exp (101)
-                                                                            Exp (101)
-                                                                              ID: b
-                                                                            RELOP
-                                                                            Exp (101)
-                                                                              ID: c
-                                                                          RELOP
-                                                                          Exp (101)
-                                                                            ID: d
-                                                                      SEMI
-                                                                    StmtList (102)
-                                                                      Stmt (102)
-                                                                        Exp (102)
-                                                                          Exp (102)
-                                                                            ID: a
-                                                                          ASSIGNOP
-                                                                          Exp (102)
-                                                                            Exp (102)
-                                                                              Exp (102)
-                                                                                ID: b
-                                                                              RELOP
-                                                                              Exp (102)
-                                                                                ID: c
-                                                                            RELOP
-                                                                            Exp (102)
-                                                                              ID: d
-                                                                        SEMI
-                                                                      StmtList (103)
-                                                                        Stmt (103)
-                                                                          Exp (103)
-                                                                            Exp (103)
-                                                                              ID: a
-                                                                            ASSIGNOP
-                                                                            Exp (103)
-                                                                              Exp (103)
-                                                                                Exp (103)
-                                                                                  ID: b
-                                                                                RELOP
-                                                                                Exp (103)
-                                                                                  ID: c
-                                                                              RELOP
-                                                                              Exp (103)
-                                                                                ID: d
-                                                                          SEMI
-                                                                        StmtList (104)
-                                                                          Stmt (104)
-                                                                            Exp (104)
-                                                                              Exp (104)
-                                                                                ID: a
-                                                                              ASSIGNOP
-                                                                              Exp (104)
-                                                                                Exp (104)
-                                                                                  Exp (104)
-                                                                                    ID: b
-                                                                                  AND
-                                                                                  Exp (104)
-                                                                                    ID: c
-                                                                                AND
-                                                                                Exp (104)
-                                                                                  ID: d
-                                                                            SEMI
-                                                                          StmtList (105)
-                                                                            Stmt (105)
-                                                                              Exp (105)
-                                                                                Exp (105)
-                                                                                  ID: a
-                                                                                ASSIGNOP
-                                                                                Exp (105)
-                                                                                  Exp (105)
-                                                                                    Exp (105)
-                                                                                      ID: b
-                                                                                    OR
-                                                                                    Exp (105)
-                                                                                      ID: c
-                                                                                  OR
-                                                                                  Exp (105)
-                                                                                    ID: d
-                                                                              SEMI
-                                                                            StmtList (106)
-                                                                              Stmt (106)
-                                                                                Exp (106)
-                                                                                  Exp (106)
-                                                                                    ID: a
-                                                                                  ASSIGNOP
-                                                                                  Exp (106)
-                                                                                    Exp (106)
-                                                                                      ID: b
-                                                                                    ASSIGNOP
-                                                                                    Exp (106)
-                                                                                      Exp (106)
-                                                                                        ID: c
-                                                                                      ASSIGNOP
-                                                                                      Exp (106)
-                                                                                        Exp (106)
-                                                                                          ID: d
-                                                                                        ASSIGNOP
-                                                                                        Exp (106)
-                                                                                          INT: 1
-                                                                                SEMI
-                                                                              StmtList (108)
-                                                                                Stmt (108)
-                                                                                  RETURN
-                                                                                  Exp (108)
-                                                                                    ID: nonexist_func
-                                                                                    LP
-                                                                                    RP
-                                                                                  SEMI
-                    RC
-                ExtDefList (119)
-                  ExtDef (119)
-                    Specifier (119)
-                      TYPE: int
-                    FunDec (119)
-                      ID: func
-                      LP
-                      VarList (119)
-                        ParamDec (119)
-                          Specifier (119)
-                            TYPE: int
-                          VarDec (119)
-                            ID: ival
-                        COMMA
-                        VarList (119)
-                          ParamDec (119)
-                            Specifier (119)
-                              TYPE: float
-                            VarDec (119)
-                              ID: fval
-                          COMMA
-                          VarList (119)
-                            ParamDec (119)
-                              Specifier (119)
-                                TYPE: float
-                              VarDec (119)
-                                VarDec (119)
-                                  ID: arr
-                                LB
-                                INT: 10
-                                RB
-                      RP
-                    CompSt (120)
-                      LC
-                      DefList (121)
-                        Def (121)
-                          Specifier (121)
-                            TYPE: int
-                          DecList (121)
-                            Dec (121)
-                              VarDec (121)
-                                ID: a
-                              ASSIGNOP
-                              Exp (121)
-                                INT: 1
-                          SEMI
-                      RC
-                  ExtDefList (126)
-                    ExtDef (126)
-                      Specifier (126)
-                        TYPE: int
-                      FunDec (126)
-                        ID: extra
-                        LP
-                        RP
-                      CompSt (127)
-                        LC
-                        DefList (128)
-                          Def (128)
-                            Specifier (128)
-                              TYPE: int
-                            DecList (128)
-                              Dec (128)
-                                VarDec (128)
-                                  ID: oct1
-                                ASSIGNOP
-                                Exp (128)
-                                  INT: 83
-                            SEMI
-                          DefList (129)
-                            Def (129)
-                              Specifier (129)
-                                TYPE: int
-                              DecList (129)
-                                Dec (129)
-                                  VarDec (129)
-                                    ID: oct2
-                                  ASSIGNOP
-                                  Exp (129)
-                                    INT: 8
-                              SEMI
-                            DefList (130)
-                              Def (130)
-                                Specifier (130)
-                                  TYPE: int
-                                DecList (130)
-                                  Dec (130)
-                                    VarDec (130)
-                                      ID: oct3
-                                    ASSIGNOP
-                                    Exp (130)
-                                      MINUS
-                                      Exp (130)
-                                        INT: 7
-                                SEMI
-                              DefList (131)
-                                Def (131)
-                                  Specifier (131)
-                                    TYPE: int
-                                  DecList (131)
-                                    Dec (131)
-                                      VarDec (131)
-                                        ID: hex1
-                                      ASSIGNOP
-                                      Exp (131)
-                                        INT: 63
-                                  SEMI
-                                DefList (132)
-                                  Def (132)
-                                    Specifier (132)
-                                      TYPE: int
-                                    DecList (132)
-                                      Dec (132)
-                                        VarDec (132)
-                                          ID: hex2
-                                        ASSIGNOP
-                                        Exp (132)
-                                          INT: 11259375
-                                    SEMI
-                                  DefList (133)
-                                    Def (133)
-                                      Specifier (133)
-                                        TYPE: int
-                                      DecList (133)
-                                        Dec (133)
-                                          VarDec (133)
-                                            ID: hex3
-                                          ASSIGNOP
-                                          Exp (133)
-                                            INT: 11259375
-                                      SEMI
-                                    DefList (134)
-                                      Def (134)
-                                        Specifier (134)
-                                          TYPE: float
-                                        DecList (134)
-                                          Dec (134)
-                                            VarDec (134)
-                                              ID: f1
-                                            ASSIGNOP
-                                            Exp (134)
-                                              FLOAT: 0.000105
-                                        SEMI
-                                      DefList (135)
-                                        Def (135)
-                                          Specifier (135)
-                                            TYPE: float
-                                          DecList (135)
-                                            Dec (135)
-                                              VarDec (135)
-                                                ID: f2
-                                              ASSIGNOP
-                                              Exp (135)
-                                                FLOAT: inf
-                                          SEMI
-                                        DefList (136)
-                                          Def (136)
-                                            Specifier (136)
-                                              TYPE: float
-                                            DecList (136)
-                                              Dec (136)
-                                                VarDec (136)
-                                                  ID: f3
-                                                ASSIGNOP
-                                                Exp (136)
-                                                  FLOAT: inf
-                                            SEMI
-                                          DefList (137)
-                                            Def (137)
-                                              Specifier (137)
-                                                TYPE: float
-                                              DecList (137)
-                                                Dec (137)
-                                                  VarDec (137)
-                                                    ID: f4
-                                                  ASSIGNOP
-                                                  Exp (137)
-                                                    FLOAT: 699999977472.000000
-                                              SEMI
-                        RC
+          RC
+      ExtDecList (5)
+        VarDec (5)
+          VarDec (5)
+            ID: s1
+          LB
+          INT: 3
+          RB
+        COMMA
+        ExtDecList (5)
+          VarDec (5)
+            ID: s2
+      SEMI
diff --git a/Code/data.c b/Code/data.c
index 1c19a7dab175f721a2fb89fb9b0449954ba41e3c..deecd7cbaa1b1ec3c883395434fac35c61065543 100644
--- a/Code/data.c
+++ b/Code/data.c
@@ -2,7 +2,7 @@
 #include "debug.h"
 
 static MultiwayTree_t * MultiwayTree_init(MultiwayTree_t * t) {
-    t->root = tree->Node_alloc("begin",0);
+//    t->root = tree->Node_alloc("begin",0);
     return t;
 }
 
@@ -14,6 +14,7 @@ static Node_t * MultiwayTree_leftmostinsert(Node_t * cur ,Node_t * node) {
         cur->lchild = node;
         node->right = lastleft;
         lastleft->left = node;
+        node->left = NULL;
     }
     return cur;
 }
@@ -28,6 +29,7 @@ static Node_t * MultiwayTree_rightmostinsert(Node_t * cur ,Node_t * node) {
         cur->rchild = node;
         node->left = lastright;
         lastright->right = node;
+        node->right = NULL;
     }
     return cur;
 }
@@ -39,17 +41,14 @@ static Node_t * MultiwayTree_remove(Node_t * cur ,Node_t * node) {
 
 static Node_t * MultiwayTree_Node_alloc(char * content,int line) {
     Node_t * new_node = (Node_t*)malloc(sizeof(Node_t));
+    //char * newstr = (char *)malloc(strlen(content)+5);
 
-    char * newstr = (char *)malloc(strlen(content)+5);
-    
-    new_node->text[0] = 0;
+    memset(new_node->text,0,NAME_LENGTH);
     // Log("%s %d",content,line);
-    strcpy(newstr,content);
-    new_node->content = newstr;
+    strcpy(new_node->content,content);
     new_node->line = line;
-    new_node->type = NONE;
-    new_node->rchild = new_node->lchild = new_node->right = new_node->left = NULL;
 
+    new_node->rchild = new_node->lchild = new_node->right = new_node->left = NULL;
 
     return new_node;
 }
diff --git a/Code/data.h b/Code/data.h
index 71aad0a50311ddca2036e534cba8ba2c3948b0d4..dce2faf18a01a78bedb1631ab21467e3a6e1ee38 100644
--- a/Code/data.h
+++ b/Code/data.h
@@ -15,12 +15,9 @@
 //璇硶鏍戠粨鏋�
 
 typedef struct Tree_node_t {
-    char * content;
-    enum {
-        NONE,Sentinel,
-    }type;
+    char  content[NAME_LENGTH];
     int line;
-    char text[32];
+    char text[NAME_LENGTH];
     struct Tree_node_t * lchild,* rchild,* left,* right;
 }Node_t;
 
diff --git a/Code/lex.yy.c b/Code/lex.yy.c
index 94b77ff733867140565b2c5f5655bdbe3119859c..c8e8b398718e392fe97820e88c2493892448858c 100644
--- a/Code/lex.yy.c
+++ b/Code/lex.yy.c
@@ -1,6 +1,6 @@
-#line 1 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lex.yy.c"
+#line 1 "./lex.yy.c"
 
-#line 3 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lex.yy.c"
+#line 3 "./lex.yy.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -523,8 +523,8 @@ int yy_flex_debug = 0;
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
-#line 2 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 1 "./lexical.l"
+#line 2 "./lexical.l"
     #include <stdio.h>
     #include "debug.h"
     #include "syntax.tab.h"
@@ -535,8 +535,8 @@ char *yytext;
     extern int syntax;
     int last_lineno = 0,cur_lineno = 0;
     static Node_t* add_node_text(char * content,char *text,int len);
-#line 538 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lex.yy.c"
-#line 539 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lex.yy.c"
+#line 538 "./lex.yy.c"
+#line 539 "./lex.yy.c"
 
 #define INITIAL 0
 
@@ -753,9 +753,9 @@ YY_DECL
 		}
 
 	{
-#line 44 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 44 "./lexical.l"
 
-#line 758 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lex.yy.c"
+#line 758 "./lex.yy.c"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -814,163 +814,163 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 45 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 45 "./lexical.l"
 { ELEMENT("STRUCT"); return STRUCT; }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 46 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 46 "./lexical.l"
 { ELEMENT("RETURN"); return RETURN; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 47 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 47 "./lexical.l"
 { ELEMENT("IF"); return IF; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 48 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 48 "./lexical.l"
 { ELEMENT("ELSE"); return ELSE; }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 49 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 49 "./lexical.l"
 { ELEMENT("WHILE"); return WHILE; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 50 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 50 "./lexical.l"
 { ELEMENT("TYPE"); return TYPE; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 51 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 51 "./lexical.l"
 { ELEMENT("INT"); return INT;}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 52 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 52 "./lexical.l"
 { ELEMENT("FLOAT"); return FLOAT;}
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 53 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 53 "./lexical.l"
 { ELEMENT("ID"); return ID; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 54 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 54 "./lexical.l"
 { ELEMENT("SEMI"); return SEMI;}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 55 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 55 "./lexical.l"
 { ELEMENT("COMMA"); return COMMA;}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 56 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 56 "./lexical.l"
 { ELEMENT("ASSIGNOP"); return ASSIGNOP;}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 57 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 57 "./lexical.l"
 { ELEMENT("RELOP"); return RELOP;}
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 58 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 58 "./lexical.l"
 { ELEMENT("PLUS"); return PLUS;}
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 59 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 59 "./lexical.l"
 { ELEMENT("MINUS"); return MINUS;}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 60 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 60 "./lexical.l"
 { ELEMENT("STAR"); return STAR;}
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 61 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 61 "./lexical.l"
 { ELEMENT("DIV"); return DIV;}
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 62 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 62 "./lexical.l"
 { ELEMENT("AND"); return AND;}
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 63 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 63 "./lexical.l"
 { ELEMENT("OR"); return OR;}
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 64 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 64 "./lexical.l"
 { ELEMENT("DOT"); return DOT;}
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 65 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 65 "./lexical.l"
 { ELEMENT("NOT"); return NOT;}
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 66 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 66 "./lexical.l"
 { ELEMENT("LP"); return LP;}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 67 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 67 "./lexical.l"
 { ELEMENT("RP"); return RP;}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 68 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 68 "./lexical.l"
 { ELEMENT("LB"); return LB;}
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 69 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 69 "./lexical.l"
 { ELEMENT("RB"); return RB;}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 70 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 70 "./lexical.l"
 { ELEMENT("LC"); return LC;}
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 71 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 71 "./lexical.l"
 { ELEMENT("RC"); return RC;}
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 72 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 72 "./lexical.l"
 { strcat(linetext," ");}
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 73 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 73 "./lexical.l"
 { yycolumn += 3; strcat(linetext,"\t");}
 	YY_BREAK
 case 30:
 /* rule 30 can match eol */
 YY_RULE_SETUP
-#line 74 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 74 "./lexical.l"
 { yycolumn = 1; yylineno += 1; memset(linetext,0,sizeof(linetext)); }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 75 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 75 "./lexical.l"
 { char c = input(); while(c != '\n') { c = input(); } yylineno += 1; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 76 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 76 "./lexical.l"
 {   
                 char c1 = input(),c2 = input();
                 if (c1 == '\n') {
@@ -993,15 +993,15 @@ YY_RULE_SETUP
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 95 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 95 "./lexical.l"
 { LexicalError("%s",yytext); syntax++; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 97 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 97 "./lexical.l"
 ECHO;
 	YY_BREAK
-#line 1004 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lex.yy.c"
+#line 1004 "./lex.yy.c"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2006,7 +2006,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 97 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/lexical.l"
+#line 97 "./lexical.l"
 
 
 extern int syntax;
diff --git a/Code/main.c b/Code/main.c
index 1850dab83160cec1329166fbbc4a9422b935739c..f4193ecd92a5f4831bd2bda9beda8ceade91fc3e 100755
--- a/Code/main.c
+++ b/Code/main.c
@@ -9,7 +9,7 @@ void yyerror(char* s);
 
 int syntax = 0;
 extern int yycolumn,yylineno;
-void end_free();
+static void end_free();
 
 
 int main(int argc,char *argv[]) {
@@ -40,15 +40,23 @@ int main(int argc,char *argv[]) {
             test->main();
         }
         end_free();
-#ifndef FINAL
-        if(syntax != 0)
-            tree->traverse(tree->root,0);
-#endif
     }
     return 0;
 }
 
-void end_free() {
+
+static void free_Traverse(Node_t * cur) {
+    if (cur == NULL) return;
+    Node_t * child = cur->lchild, * temp;
+    while (child != NULL) {
+        temp = child->right;
+        free_Traverse(child);
+        child = temp;
+    }
+    free(cur);
+}
+
+static void end_free() {
     for(int i = 0;i < symbol_table->table_size;i++) {
         if(symbol_table->table[i]) {
             free(symbol_table->table[i]->head.name);
@@ -56,4 +64,6 @@ void end_free() {
             free(symbol_table->table[i]);
         }
     }
-}
\ No newline at end of file
+    free(symbol_table->table);
+    free_Traverse(tree->root);
+}
diff --git a/Code/parser b/Code/parser
index 95046cc4bacb32f6956cfa194ae1be30d984f4e8..8512791898f9c61de7cc072c92f7306fa95136ab 100755
Binary files a/Code/parser and b/Code/parser differ
diff --git a/Code/syntax.tab.c b/Code/syntax.tab.c
index f4495d2d77fb36d827669756bfc85c2bb863cb3b..b046cbd9045206a91572c7c6e3676ee2f65a1b24 100644
--- a/Code/syntax.tab.c
+++ b/Code/syntax.tab.c
@@ -67,7 +67,7 @@
 
 
 /* First part of user prologue.  */
-#line 1 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 1 "./syntax.y"
 
     int yycolumn = 1;
     char linetext[128];
@@ -78,7 +78,7 @@
                 yycolumn += yyleng;
     //#define YYDEBUG 1
     //int yydebug = 1;
-#line 13 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 13 "./syntax.y"
 
     #include <stdio.h>
     #include "lex.yy.c"
@@ -93,7 +93,7 @@
     extern int syntax;
 
 
-#line 97 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 97 "./syntax.tab.c"
 
 # ifndef YY_CAST
 #  ifdef __cplusplus
@@ -1367,457 +1367,457 @@ yyreduce:
   switch (yyn)
     {
   case 2: /* Program: ExtDefList  */
-#line 105 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 105 "./syntax.y"
                                     { tree->root = (yyval.node) = Operator((yyval.node),"Program",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1373 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1373 "./syntax.tab.c"
     break;
 
   case 3: /* ExtDefList: ExtDef ExtDefList  */
-#line 107 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 107 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDefList",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1379 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1379 "./syntax.tab.c"
     break;
 
   case 4: /* ExtDefList: %empty  */
-#line 108 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 108 "./syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1385 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1385 "./syntax.tab.c"
     break;
 
   case 5: /* ExtDef: Specifier ExtDecList SEMI  */
-#line 110 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 110 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDef",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1391 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1391 "./syntax.tab.c"
     break;
 
   case 6: /* ExtDef: Specifier SEMI  */
-#line 111 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 111 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDef",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1397 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1397 "./syntax.tab.c"
     break;
 
   case 7: /* ExtDef: Specifier FunDec CompSt  */
-#line 112 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 112 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDef",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1403 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1403 "./syntax.tab.c"
     break;
 
   case 8: /* ExtDef: Specifier FunDec SEMI  */
-#line 113 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 113 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDef",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1409 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1409 "./syntax.tab.c"
     break;
 
   case 9: /* ExtDef: error SEMI  */
-#line 114 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 114 "./syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef"); }
-#line 1415 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1415 "./syntax.tab.c"
     break;
 
   case 10: /* ExtDef: Specifier error  */
-#line 115 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 115 "./syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef,missing ;"); }
-#line 1421 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1421 "./syntax.tab.c"
     break;
 
   case 11: /* ExtDef: Specifier error SEMI  */
-#line 116 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 116 "./syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef"); }
-#line 1427 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1427 "./syntax.tab.c"
     break;
 
   case 12: /* ExtDef: Specifier error CompSt  */
-#line 117 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 117 "./syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef"); }
-#line 1433 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1433 "./syntax.tab.c"
     break;
 
   case 13: /* ExtDecList: VarDec  */
-#line 119 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 119 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDecList",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1439 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1439 "./syntax.tab.c"
     break;
 
   case 14: /* ExtDecList: VarDec COMMA ExtDecList  */
-#line 120 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 120 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDecList",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1445 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1445 "./syntax.tab.c"
     break;
 
   case 15: /* Specifier: TYPE  */
-#line 125 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 125 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Specifier",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1451 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1451 "./syntax.tab.c"
     break;
 
   case 16: /* Specifier: StructSpecifier  */
-#line 126 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 126 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Specifier",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1457 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1457 "./syntax.tab.c"
     break;
 
   case 17: /* StructSpecifier: STRUCT OptTag LC DefList RC  */
-#line 128 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 128 "./syntax.y"
                                                 { (yyval.node) = Operator((yyval.node),"StructSpecifier",(yyloc).first_line,5,(yyvsp[-4].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1463 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1463 "./syntax.tab.c"
     break;
 
   case 18: /* StructSpecifier: STRUCT Tag  */
-#line 129 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 129 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"StructSpecifier",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1469 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1469 "./syntax.tab.c"
     break;
 
   case 19: /* OptTag: ID  */
-#line 131 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 131 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"OptTag",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1475 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1475 "./syntax.tab.c"
     break;
 
   case 20: /* OptTag: %empty  */
-#line 132 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 132 "./syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1481 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1481 "./syntax.tab.c"
     break;
 
   case 21: /* Tag: ID  */
-#line 134 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 134 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Tag",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1487 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1487 "./syntax.tab.c"
     break;
 
   case 22: /* VarDec: ID  */
-#line 138 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 138 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"VarDec",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1493 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1493 "./syntax.tab.c"
     break;
 
   case 23: /* VarDec: VarDec LB INT RB  */
-#line 139 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 139 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"VarDec",(yyloc).first_line,4,(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1499 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1499 "./syntax.tab.c"
     break;
 
   case 24: /* VarDec: VarDec LB error RB  */
-#line 140 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 140 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("VarDec"); }
-#line 1505 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1505 "./syntax.tab.c"
     break;
 
   case 25: /* FunDec: ID LP VarList RP  */
-#line 142 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 142 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"FunDec",(yyloc).first_line,4,(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1511 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1511 "./syntax.tab.c"
     break;
 
   case 26: /* FunDec: ID LP RP  */
-#line 143 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 143 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"FunDec",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1517 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1517 "./syntax.tab.c"
     break;
 
   case 27: /* FunDec: ID LP error RP  */
-#line 144 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 144 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("FunDec"); }
-#line 1523 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1523 "./syntax.tab.c"
     break;
 
   case 28: /* FunDec: error LP VarList RP  */
-#line 145 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 145 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("FunDec"); }
-#line 1529 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1529 "./syntax.tab.c"
     break;
 
   case 29: /* VarList: ParamDec COMMA VarList  */
-#line 147 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 147 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"VarList",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1535 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1535 "./syntax.tab.c"
     break;
 
   case 30: /* VarList: ParamDec  */
-#line 148 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 148 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"VarList",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1541 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1541 "./syntax.tab.c"
     break;
 
   case 31: /* ParamDec: Specifier VarDec  */
-#line 150 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 150 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ParamDec",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1547 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1547 "./syntax.tab.c"
     break;
 
   case 32: /* CompSt: LC DefList StmtList RC  */
-#line 155 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 155 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"CompSt",(yyloc).first_line,4,(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1553 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1553 "./syntax.tab.c"
     break;
 
   case 33: /* CompSt: LC DefList error RC  */
-#line 156 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 156 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("CompSt"); }
-#line 1559 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1559 "./syntax.tab.c"
     break;
 
   case 34: /* StmtList: Stmt StmtList  */
-#line 158 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 158 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"StmtList",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1565 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1565 "./syntax.tab.c"
     break;
 
   case 35: /* StmtList: %empty  */
-#line 159 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 159 "./syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1571 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1571 "./syntax.tab.c"
     break;
 
   case 36: /* Stmt: Exp SEMI  */
-#line 161 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 161 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1577 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1577 "./syntax.tab.c"
     break;
 
   case 37: /* Stmt: CompSt  */
-#line 162 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 162 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1583 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1583 "./syntax.tab.c"
     break;
 
   case 38: /* Stmt: RETURN Exp SEMI  */
-#line 163 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 163 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1589 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1589 "./syntax.tab.c"
     break;
 
   case 39: /* Stmt: IF LP Exp RP Stmt  */
-#line 164 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 164 "./syntax.y"
                                                 { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,5,(yyvsp[-4].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1595 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1595 "./syntax.tab.c"
     break;
 
   case 40: /* Stmt: IF LP Exp RP Stmt ELSE Stmt  */
-#line 165 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 165 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,7,(yyvsp[-6].node),(yyvsp[-5].node),(yyvsp[-4].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1601 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1601 "./syntax.tab.c"
     break;
 
   case 41: /* Stmt: WHILE LP Exp RP Stmt  */
-#line 166 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 166 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,5,(yyvsp[-4].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1607 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1607 "./syntax.tab.c"
     break;
 
   case 42: /* Stmt: error SEMI  */
-#line 167 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 167 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("1Stmt"); }
-#line 1613 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1613 "./syntax.tab.c"
     break;
 
   case 43: /* Stmt: Exp error  */
-#line 168 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 168 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("2Stmt"); }
-#line 1619 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1619 "./syntax.tab.c"
     break;
 
   case 44: /* Stmt: IF LP Exp error RP Stmt  */
-#line 169 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 169 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("3Stmt"); }
-#line 1625 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1625 "./syntax.tab.c"
     break;
 
   case 45: /* Stmt: RETURN error SEMI  */
-#line 170 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 170 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("4Stmt"); }
-#line 1631 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1631 "./syntax.tab.c"
     break;
 
   case 46: /* Stmt: RETURN Exp error  */
-#line 171 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 171 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("5Stmt"); }
-#line 1637 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1637 "./syntax.tab.c"
     break;
 
   case 47: /* DefList: Def DefList  */
-#line 176 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 176 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"DefList",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1643 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1643 "./syntax.tab.c"
     break;
 
   case 48: /* DefList: %empty  */
-#line 177 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 177 "./syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1649 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1649 "./syntax.tab.c"
     break;
 
   case 49: /* Def: Specifier DecList SEMI  */
-#line 179 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 179 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Def",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1655 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1655 "./syntax.tab.c"
     break;
 
   case 50: /* Def: Specifier error SEMI  */
-#line 180 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 180 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("Def"); }
-#line 1661 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1661 "./syntax.tab.c"
     break;
 
   case 51: /* Def: Specifier DecList error SEMI  */
-#line 181 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 181 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("Def"); }
-#line 1667 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1667 "./syntax.tab.c"
     break;
 
   case 52: /* DecList: Dec  */
-#line 183 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 183 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"DecList",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1673 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1673 "./syntax.tab.c"
     break;
 
   case 53: /* DecList: Dec COMMA DecList  */
-#line 184 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 184 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"DecList",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1679 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1679 "./syntax.tab.c"
     break;
 
   case 54: /* Dec: VarDec  */
-#line 186 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 186 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Dec",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1685 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1685 "./syntax.tab.c"
     break;
 
   case 55: /* Dec: VarDec ASSIGNOP Exp  */
-#line 187 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 187 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Dec",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1691 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1691 "./syntax.tab.c"
     break;
 
   case 56: /* Exp: Exp ASSIGNOP Exp  */
-#line 192 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 192 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1697 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1697 "./syntax.tab.c"
     break;
 
   case 57: /* Exp: Exp AND Exp  */
-#line 193 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 193 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1703 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1703 "./syntax.tab.c"
     break;
 
   case 58: /* Exp: Exp OR Exp  */
-#line 194 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 194 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1709 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1709 "./syntax.tab.c"
     break;
 
   case 59: /* Exp: Exp RELOP Exp  */
-#line 195 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 195 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1715 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1715 "./syntax.tab.c"
     break;
 
   case 60: /* Exp: Exp PLUS Exp  */
-#line 196 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 196 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1721 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1721 "./syntax.tab.c"
     break;
 
   case 61: /* Exp: Exp MINUS Exp  */
-#line 197 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 197 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1727 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1727 "./syntax.tab.c"
     break;
 
   case 62: /* Exp: Exp STAR Exp  */
-#line 198 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 198 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1733 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1733 "./syntax.tab.c"
     break;
 
   case 63: /* Exp: Exp DIV Exp  */
-#line 199 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 199 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1739 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1739 "./syntax.tab.c"
     break;
 
   case 64: /* Exp: LP Exp RP  */
-#line 200 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 200 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1745 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1745 "./syntax.tab.c"
     break;
 
   case 65: /* Exp: MINUS Exp  */
-#line 201 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 201 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1751 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1751 "./syntax.tab.c"
     break;
 
   case 66: /* Exp: NOT Exp  */
-#line 202 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 202 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1757 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1757 "./syntax.tab.c"
     break;
 
   case 67: /* Exp: ID LP Args RP  */
-#line 203 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 203 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,4,(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1763 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1763 "./syntax.tab.c"
     break;
 
   case 68: /* Exp: ID LP RP  */
-#line 204 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 204 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1769 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1769 "./syntax.tab.c"
     break;
 
   case 69: /* Exp: Exp LB Exp RB  */
-#line 205 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 205 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,4,(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1775 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1775 "./syntax.tab.c"
     break;
 
   case 70: /* Exp: Exp DOT ID  */
-#line 206 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 206 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1781 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1781 "./syntax.tab.c"
     break;
 
   case 71: /* Exp: ID  */
-#line 207 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 207 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1787 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1787 "./syntax.tab.c"
     break;
 
   case 72: /* Exp: INT  */
-#line 208 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 208 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1793 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1793 "./syntax.tab.c"
     break;
 
   case 73: /* Exp: FLOAT  */
-#line 209 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 209 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1799 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1799 "./syntax.tab.c"
     break;
 
   case 74: /* Args: Exp COMMA Args  */
-#line 211 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 211 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Args",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1805 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1805 "./syntax.tab.c"
     break;
 
   case 75: /* Args: Exp  */
-#line 212 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 212 "./syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Args",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1811 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1811 "./syntax.tab.c"
     break;
 
   case 76: /* Args: error Args  */
-#line 213 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 213 "./syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Args"); }
-#line 1817 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1817 "./syntax.tab.c"
     break;
 
 
-#line 1821 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.c"
+#line 1821 "./syntax.tab.c"
 
       default: break;
     }
@@ -2015,7 +2015,7 @@ yyreturnlab:
   return yyresult;
 }
 
-#line 216 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 216 "./syntax.y"
 
 
 
diff --git a/Code/syntax.tab.h b/Code/syntax.tab.h
index 618859ae5241cbc9f7aa8147b8acbbbd195c9cd7..0847e109a997c9e1bc29a08b4d776214aeaf5cc7 100644
--- a/Code/syntax.tab.h
+++ b/Code/syntax.tab.h
@@ -35,8 +35,8 @@
    especially those whose name start with YY_ or yy_.  They are
    private implementation details that can be changed or removed.  */
 
-#ifndef YY_YY_HOME_PPX_ZHAOCHAOYI_COMPILER_LAB2_CODE_SYNTAX_TAB_H_INCLUDED
-# define YY_YY_HOME_PPX_ZHAOCHAOYI_COMPILER_LAB2_CODE_SYNTAX_TAB_H_INCLUDED
+#ifndef YY_YY_SYNTAX_TAB_H_INCLUDED
+# define YY_YY_SYNTAX_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -91,11 +91,11 @@ extern int yydebug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 union YYSTYPE
 {
-#line 29 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.y"
+#line 29 "./syntax.y"
 
     struct Tree_node_t * node;
 
-#line 99 "/home/ppx/zhaochaoyi/Compiler/Lab2/Code/syntax.tab.h"
+#line 99 "./syntax.tab.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -124,4 +124,4 @@ extern YYLTYPE yylloc;
 int yyparse (void);
 
 
-#endif /* !YY_YY_HOME_PPX_ZHAOCHAOYI_COMPILER_LAB2_CODE_SYNTAX_TAB_H_INCLUDED  */
+#endif /* !YY_YY_SYNTAX_TAB_H_INCLUDED  */