diff --git a/.gitignore b/.gitignore
index 6bb439d82c938d9c582f221585bed1e45df6ca53..62836b15c2bfa58ec47dfa56ad3a18e53c9e77a5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,4 @@ Project*.pdf
 */*.output
 !*/CMakeLists.txt
 */*.txt
-*/cmake-build-debug/
+cmake-build-debug/
diff --git a/Appendix_A.pdf b/Appendix_A.pdf
deleted file mode 100644
index a8a893f90d101efd80146e479a1acfbd817e04d3..0000000000000000000000000000000000000000
Binary files a/Appendix_A.pdf and /dev/null differ
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..86d8b2ffaea3f8599ab93ea24051451c31469a83
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 3.21)
+project(Lab_compiler C)
+
+set(CMAKE_C_STANDARD 99)
+
+
+include_directories(${PROJECT_SOURCE_DIR}/Code)
+
+if (CMAKE_SYSTEM_NAME MATCHES "Linux")
+    set(CMAKE_C_FLAGS "-lfl -ly")
+elseif (CMAKE_SYSTEM_NAME MATCHES "Windows")
+    set(CMAKE_C_FLAGS "-LC:/GnuWin32/lib/")
+endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
+
+file(GLOB LEX_FILE ${PROJECT_SOURCE_DIR}/Code/*.l)
+
+add_custom_target(TEMP)
+
+add_custom_command(TARGET TEMP
+PRE_BUILD
+COMMAND flex -o ${PROJECT_SOURCE_DIR}/Code/lex.yy.c ${PROJECT_SOURCE_DIR}/Code/lexical.l
+COMMAND bison -o ${PROJECT_SOURCE_DIR}/Code/syntax.tab.c -d -v ${PROJECT_SOURCE_DIR}/Code/syntax.y
+)
+
+
+file(GLOB SRC_LIST ${PROJECT_SOURCE_DIR}/Code/*.c)
+file(GLOB UNUSED ${PROJECT_SOURCE_DIR}/Code/lex.yy.c)
+
+list(REMOVE_ITEM SRC_LIST ${UNUSED})
+
+add_executable(parse ${SRC_LIST})
+message("files:${SRC_LIST}")
+message("Exclude:${UNUSED}")
+
diff --git a/Code/a.txt b/Code/a.txt
index 1c74da1fb8b9181bb358f4c64cbef63878a86e95..19c24c741a9819974a2405e139354ab03b0f57f5 100644
--- a/Code/a.txt
+++ b/Code/a.txt
@@ -1,3 +1,7 @@
+
+
+
+../Test/test0.cmm:
 Program (1)
   ExtDefList (1)
     ExtDef (1)
@@ -34,6 +38,10 @@ Program (1)
                     INT: 2
               SEMI
         RC
+
+
+
+../Test/test1.cmm:
 Program (1)
   ExtDefList (1)
     ExtDef (1)
@@ -70,8 +78,14 @@ Program (1)
                     INT: 63
               SEMI
         RC
-Error type B at Line 3: Syntax error. '9'
-Error type B at Line 4: Syntax error. 'G'
+
+
+
+../Test/test2.cmm:
+
+
+
+../Test/test3.cmm:
 Program (1)
   ExtDefList (1)
     ExtDef (1)
@@ -96,7 +110,14 @@ Program (1)
                   FLOAT: 0.000105
             SEMI
         RC
-Error type B at Line 3: Syntax error. 'e'
+
+
+
+../Test/test4.cmm:
+
+
+
+../Test/test5.cmm:
 Program (1)
   ExtDefList (1)
     ExtDef (1)
diff --git a/Code/lex.yy.c b/Code/lex.yy.c
index 7b850e94b83587d01e46d0e00b54fbf77a8e4729..9c80741923c8b4b1513e27a5d3bf256795fb5485 100644
--- a/Code/lex.yy.c
+++ b/Code/lex.yy.c
@@ -1,6 +1,6 @@
-#line 1 "./lex.yy.c"
+#line 1 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lex.yy.c"
 
-#line 3 "./lex.yy.c"
+#line 3 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lex.yy.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -527,8 +527,8 @@ int yy_flex_debug = 0;
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "./lexical.l"
-#line 2 "./lexical.l"
+#line 1 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
+#line 2 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
     #include <stdio.h>
     #include "debug.h"
     #include "syntax.tab.h"
@@ -538,8 +538,8 @@ char *yytext;
     int Iscomments = 0;
     extern int syntax;
     static Node_t* add_node_text(char * content,char *text,int len);
-#line 541 "./lex.yy.c"
-#line 542 "./lex.yy.c"
+#line 541 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lex.yy.c"
+#line 542 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lex.yy.c"
 
 #define INITIAL 0
 
@@ -756,9 +756,9 @@ YY_DECL
 		}
 
 	{
-#line 43 "./lexical.l"
+#line 43 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 
-#line 761 "./lex.yy.c"
+#line 761 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lex.yy.c"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -817,159 +817,159 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 44 "./lexical.l"
+#line 44 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("STRUCT"); return STRUCT; }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 45 "./lexical.l"
+#line 45 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("RETURN"); return RETURN; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 46 "./lexical.l"
+#line 46 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("IF"); return IF; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 47 "./lexical.l"
+#line 47 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("ELSE"); return ELSE; }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 48 "./lexical.l"
+#line 48 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("WHILE"); return WHILE; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 49 "./lexical.l"
+#line 49 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("TYPE"); return TYPE; }
 	YY_BREAK
 case 7:
 /* rule 7 can match eol */
 YY_RULE_SETUP
-#line 50 "./lexical.l"
+#line 50 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { unput(yytext[yyleng-1]); yycolumn--,yytext[yyleng-1] = 0;ELEMENT("INT"); return INT;}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 51 "./lexical.l"
+#line 51 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("FLOAT"); return FLOAT;}
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 52 "./lexical.l"
+#line 52 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("ID"); return ID; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 53 "./lexical.l"
+#line 53 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("SEMI"); return SEMI;}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 54 "./lexical.l"
+#line 54 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("COMMA"); return COMMA;}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 55 "./lexical.l"
+#line 55 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("ASSIGNOP"); return ASSIGNOP;}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 56 "./lexical.l"
+#line 56 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("PLUS"); return PLUS;}
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 57 "./lexical.l"
+#line 57 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("MINUS"); return MINUS;}
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 58 "./lexical.l"
+#line 58 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("STAR"); return STAR;}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 59 "./lexical.l"
+#line 59 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("DIV"); return DIV;}
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 60 "./lexical.l"
+#line 60 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("AND"); return AND;}
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 61 "./lexical.l"
+#line 61 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("OR"); return OR;}
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 62 "./lexical.l"
+#line 62 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("DOT"); return DOT;}
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 63 "./lexical.l"
+#line 63 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("NOT"); return NOT;}
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 64 "./lexical.l"
+#line 64 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("LP"); return LP;}
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 65 "./lexical.l"
+#line 65 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("RP"); return RP;}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 66 "./lexical.l"
+#line 66 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("LB"); return LB;}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 67 "./lexical.l"
+#line 67 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("RB"); return RB;}
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 68 "./lexical.l"
+#line 68 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("LC"); return LC;}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 69 "./lexical.l"
+#line 69 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { ELEMENT("RC"); return RC;}
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 70 "./lexical.l"
+#line 70 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { strcat(linetext," ");}
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 71 "./lexical.l"
+#line 71 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { yycolumn += 3; strcat(linetext,"\t");}
 	YY_BREAK
 case 29:
 /* rule 29 can match eol */
 YY_RULE_SETUP
-#line 72 "./lexical.l"
+#line 72 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { yycolumn = 1; yylineno += 1; memset(linetext,0,sizeof(linetext)); }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 73 "./lexical.l"
+#line 73 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { char c = input(); while(c != '\n') { c = input(); } yylineno += 1; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 74 "./lexical.l"
+#line 74 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 {   
                 char c1 = input(),c2 = input();
                 if (c1 == '\n') {
@@ -992,15 +992,15 @@ YY_RULE_SETUP
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 93 "./lexical.l"
+#line 93 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 { LexicalError("%s",yytext); syntax++; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 95 "./lexical.l"
+#line 95 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 ECHO;
 	YY_BREAK
-#line 1003 "./lex.yy.c"
+#line 1003 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lex.yy.c"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2005,7 +2005,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 95 "./lexical.l"
+#line 95 "/home/ppx/zhaochaoyi/Lab-compiler/Code/lexical.l"
 
 
 extern int syntax;
@@ -2015,7 +2015,7 @@ void yyerror(char* msg) {
     if(strcmp(msg,"syntax error") == 0) {
         SyntaxError("%s : %s\n\t%s\n",msg,yytext,linetext);
     } else {
-        //SyntaxError("(from syntax.y): %s\n",msg);
+        SyntaxError("(from syntax.y): %s\n",msg);
     }
 }
 
@@ -2028,16 +2028,3 @@ static Node_t* add_node_text(char * content,char *text,int len) {
 
 
 
-// #ifdef SCANNER_DEBUG
-// int main(int argc,char* argv[]) {
-//     if(argc > 1) {
-//         if(!(yyin = fopen(argv[1],"r"))) {
-//             perror(argv[1]);
-//             return 1;
-//         }
-//     }
-//     while (yylex() != 0);
-//     return 0;
-// }
-// #endif
-
diff --git a/Code/lexical.l b/Code/lexical.l
index eee1aca8b99ef429943ec3ec72cc1ab40bba461d..cc9486cfe5cdb209b432152f6dcb9c16f9c2f33c 100755
--- a/Code/lexical.l
+++ b/Code/lexical.l
@@ -101,7 +101,7 @@ void yyerror(char* msg) {
     if(strcmp(msg,"syntax error") == 0) {
         SyntaxError("%s : %s\n\t%s\n",msg,yytext,linetext);
     } else {
-        //SyntaxError("(from syntax.y): %s\n",msg);
+        SyntaxError("(from syntax.y): %s\n",msg);
     }
 }
 
@@ -113,16 +113,3 @@ static Node_t* add_node_text(char * content,char *text,int len) {
 }
 
 
-
-// #ifdef SCANNER_DEBUG
-// int main(int argc,char* argv[]) {
-//     if(argc > 1) {
-//         if(!(yyin = fopen(argv[1],"r"))) {
-//             perror(argv[1]);
-//             return 1;
-//         }
-//     }
-//     while (yylex() != 0);
-//     return 0;
-// }
-// #endif
diff --git a/Code/main.c b/Code/main.c
index 2099e969ef16fd079d03690477029449dc52a15c..0160941287bbdc72f39fe1da73aa19359bd2637f 100755
--- a/Code/main.c
+++ b/Code/main.c
@@ -15,12 +15,10 @@ int main(int argc,char *argv[]) {
         printf("Usage:%s $FILE\n",argv[0]);
     }
     for (int i = 1;i < argc;i++) {
-        #ifndef FINAL
-            fprintf(stderr,"\n\n\n");
-            fprintf(stderr,"%s:\n",argv[i]);
-            printf("\n\n\n");
-            printf("%s:\n",argv[i]);
-        #endif
+    #ifndef FINAL
+        printf("\n\n\n");
+        printf("%s:\n",argv[i]);
+    #endif
         syntax = 0;
         yycolumn = 1;
         yylineno = 1;
diff --git a/Code/parser b/Code/parser
deleted file mode 100755
index 9b268a6d6824073daf49497d4585a6df83d5288b..0000000000000000000000000000000000000000
Binary files a/Code/parser and /dev/null differ
diff --git a/Code/syntax.tab.c b/Code/syntax.tab.c
index 0a87d9122538f701fca109d65455f3f44c48265c..66f0b6d29c5ae30cfcf504a64adf0f0aa6e07c0f 100644
--- a/Code/syntax.tab.c
+++ b/Code/syntax.tab.c
@@ -67,7 +67,7 @@
 
 
 /* First part of user prologue.  */
-#line 3 "./syntax.y"
+#line 3 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
 
     int yycolumn = 1;
     char linetext[128];
@@ -78,7 +78,7 @@
                 yycolumn += yyleng;
     //#define YYDEBUG 1
     //int yydebug = 1;
-#line 15 "./syntax.y"
+#line 15 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
 
     #include <stdio.h>
     #include "lex.yy.c"
@@ -93,7 +93,7 @@
     extern int syntax;
 
 
-#line 97 "./syntax.tab.c"
+#line 97 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
 
 # ifndef YY_CAST
 #  ifdef __cplusplus
@@ -1406,535 +1406,535 @@ yyreduce:
   switch (yyn)
     {
   case 2: /* Program: ExtDefList  */
-#line 110 "./syntax.y"
+#line 110 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { tree->root = (yyval.node) = Operator((yyval.node),"Program",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1412 "./syntax.tab.c"
+#line 1412 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 3: /* ExtDefList: ExtDef ExtDefList  */
-#line 112 "./syntax.y"
+#line 112 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDefList",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1418 "./syntax.tab.c"
+#line 1418 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 4: /* ExtDefList: %empty  */
-#line 113 "./syntax.y"
+#line 113 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1424 "./syntax.tab.c"
+#line 1424 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 5: /* ExtDef: Specifier ExtDecList SEMI  */
-#line 115 "./syntax.y"
+#line 115 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDef",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1430 "./syntax.tab.c"
+#line 1430 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 6: /* ExtDef: Specifier SEMI  */
-#line 116 "./syntax.y"
+#line 116 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDef",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1436 "./syntax.tab.c"
+#line 1436 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 7: /* ExtDef: Specifier FunDec CompSt  */
-#line 117 "./syntax.y"
+#line 117 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDef",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1442 "./syntax.tab.c"
+#line 1442 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 8: /* ExtDef: error SEMI  */
-#line 118 "./syntax.y"
+#line 118 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef"); }
-#line 1448 "./syntax.tab.c"
+#line 1448 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 9: /* ExtDef: Specifier error SEMI  */
-#line 119 "./syntax.y"
+#line 119 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef"); }
-#line 1454 "./syntax.tab.c"
+#line 1454 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 10: /* ExtDef: Specifier error  */
-#line 120 "./syntax.y"
+#line 120 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef,missing ;"); }
-#line 1460 "./syntax.tab.c"
+#line 1460 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 11: /* ExtDef: Specifier error CompSt  */
-#line 121 "./syntax.y"
+#line 121 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL;yyerror("ExtDef"); }
-#line 1466 "./syntax.tab.c"
+#line 1466 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 12: /* ExtDecList: VarDec  */
-#line 123 "./syntax.y"
+#line 123 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDecList",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1472 "./syntax.tab.c"
+#line 1472 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 13: /* ExtDecList: VarDec COMMA ExtDecList  */
-#line 124 "./syntax.y"
+#line 124 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ExtDecList",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1478 "./syntax.tab.c"
+#line 1478 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 14: /* Specifier: TYPE  */
-#line 129 "./syntax.y"
+#line 129 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Specifier",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1484 "./syntax.tab.c"
+#line 1484 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 15: /* Specifier: StructSpecifier  */
-#line 130 "./syntax.y"
+#line 130 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Specifier",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1490 "./syntax.tab.c"
+#line 1490 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 16: /* StructSpecifier: STRUCT OptTag LC DefList RC  */
-#line 132 "./syntax.y"
+#line 132 "/home/ppx/zhaochaoyi/Lab-compiler/Code/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 1496 "./syntax.tab.c"
+#line 1496 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 17: /* StructSpecifier: STRUCT Tag  */
-#line 133 "./syntax.y"
+#line 133 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"StructSpecifier",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1502 "./syntax.tab.c"
+#line 1502 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 18: /* OptTag: ID  */
-#line 135 "./syntax.y"
+#line 135 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"OptTag",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1508 "./syntax.tab.c"
+#line 1508 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 19: /* OptTag: %empty  */
-#line 136 "./syntax.y"
+#line 136 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1514 "./syntax.tab.c"
+#line 1514 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 20: /* Tag: ID  */
-#line 138 "./syntax.y"
+#line 138 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Tag",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1520 "./syntax.tab.c"
+#line 1520 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 21: /* VarDec: ID  */
-#line 142 "./syntax.y"
+#line 142 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"VarDec",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1526 "./syntax.tab.c"
+#line 1526 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 22: /* VarDec: VarDec LB INT RB  */
-#line 143 "./syntax.y"
+#line 143 "/home/ppx/zhaochaoyi/Lab-compiler/Code/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 1532 "./syntax.tab.c"
+#line 1532 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 23: /* VarDec: VarDec LB error RB  */
-#line 144 "./syntax.y"
+#line 144 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("VarDec"); }
-#line 1538 "./syntax.tab.c"
+#line 1538 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 24: /* FunDec: ID LP VarList RP  */
-#line 146 "./syntax.y"
+#line 146 "/home/ppx/zhaochaoyi/Lab-compiler/Code/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 1544 "./syntax.tab.c"
+#line 1544 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 25: /* FunDec: ID LP RP  */
-#line 147 "./syntax.y"
+#line 147 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"FunDec",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1550 "./syntax.tab.c"
+#line 1550 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 26: /* FunDec: ID LP error RP  */
-#line 148 "./syntax.y"
+#line 148 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("FunDec"); }
-#line 1556 "./syntax.tab.c"
+#line 1556 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 27: /* FunDec: error LP VarList RP  */
-#line 149 "./syntax.y"
+#line 149 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("FunDec"); }
-#line 1562 "./syntax.tab.c"
+#line 1562 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 28: /* VarList: ParamDec COMMA VarList  */
-#line 151 "./syntax.y"
+#line 151 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"VarList",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1568 "./syntax.tab.c"
+#line 1568 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 29: /* VarList: ParamDec  */
-#line 152 "./syntax.y"
+#line 152 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ParamDec",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1574 "./syntax.tab.c"
+#line 1574 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 30: /* ParamDec: Specifier VarDec  */
-#line 154 "./syntax.y"
+#line 154 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"ParamDec",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1580 "./syntax.tab.c"
+#line 1580 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 31: /* CompSt: LC DefList StmtList RC  */
-#line 159 "./syntax.y"
+#line 159 "/home/ppx/zhaochaoyi/Lab-compiler/Code/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 1586 "./syntax.tab.c"
+#line 1586 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 32: /* CompSt: LC DefList error RC  */
-#line 160 "./syntax.y"
+#line 160 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("CompSt"); }
-#line 1592 "./syntax.tab.c"
+#line 1592 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 33: /* StmtList: Stmt StmtList  */
-#line 162 "./syntax.y"
+#line 162 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"StmtList",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1598 "./syntax.tab.c"
+#line 1598 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 34: /* StmtList: %empty  */
-#line 163 "./syntax.y"
+#line 163 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1604 "./syntax.tab.c"
+#line 1604 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 35: /* Stmt: Exp SEMI  */
-#line 165 "./syntax.y"
+#line 165 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1610 "./syntax.tab.c"
+#line 1610 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 36: /* Stmt: CompSt  */
-#line 166 "./syntax.y"
+#line 166 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1616 "./syntax.tab.c"
+#line 1616 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 37: /* Stmt: RETURN Exp SEMI  */
-#line 167 "./syntax.y"
+#line 167 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1622 "./syntax.tab.c"
+#line 1622 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 38: /* Stmt: IF LP Exp RP Stmt  */
-#line 168 "./syntax.y"
+#line 168 "/home/ppx/zhaochaoyi/Lab-compiler/Code/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 1628 "./syntax.tab.c"
+#line 1628 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 39: /* Stmt: IF LP Exp RP Stmt ELSE Stmt  */
-#line 169 "./syntax.y"
+#line 169 "/home/ppx/zhaochaoyi/Lab-compiler/Code/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 1634 "./syntax.tab.c"
+#line 1634 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 40: /* Stmt: WHILE LP Exp RP Stmt  */
-#line 170 "./syntax.y"
+#line 170 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Stmt",(yyloc).first_line,5,(yyvsp[-4].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[-2].node),(yyvsp[-1].node)); }
-#line 1640 "./syntax.tab.c"
+#line 1640 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 41: /* Stmt: error SEMI  */
-#line 171 "./syntax.y"
+#line 171 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Stmt"); }
-#line 1646 "./syntax.tab.c"
+#line 1646 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 42: /* Stmt: Exp error  */
-#line 172 "./syntax.y"
+#line 172 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Stmt"); }
-#line 1652 "./syntax.tab.c"
+#line 1652 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 43: /* Stmt: IF error Stmt  */
-#line 173 "./syntax.y"
+#line 173 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Stmt"); }
-#line 1658 "./syntax.tab.c"
+#line 1658 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 44: /* Stmt: IF LP Exp RP Stmt ELSE error  */
-#line 174 "./syntax.y"
+#line 174 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Stmt"); }
-#line 1664 "./syntax.tab.c"
+#line 1664 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 45: /* Stmt: RETURN error SEMI  */
-#line 175 "./syntax.y"
+#line 175 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Stmt"); }
-#line 1670 "./syntax.tab.c"
+#line 1670 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 46: /* Stmt: RETURN Exp error  */
-#line 176 "./syntax.y"
+#line 176 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Stmt"); }
-#line 1676 "./syntax.tab.c"
+#line 1676 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 47: /* DefList: Def DefList  */
-#line 181 "./syntax.y"
+#line 181 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"DefList",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1682 "./syntax.tab.c"
+#line 1682 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 48: /* DefList: %empty  */
-#line 182 "./syntax.y"
+#line 182 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; }
-#line 1688 "./syntax.tab.c"
+#line 1688 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 49: /* Def: Specifier DecList SEMI  */
-#line 184 "./syntax.y"
+#line 184 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Def",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1694 "./syntax.tab.c"
+#line 1694 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 50: /* Def: Specifier error SEMI  */
-#line 185 "./syntax.y"
+#line 185 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Def,missing ;"); }
-#line 1700 "./syntax.tab.c"
+#line 1700 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 51: /* Def: Specifier DecList error SEMI  */
-#line 186 "./syntax.y"
+#line 186 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Def,missing ; 3"); }
-#line 1706 "./syntax.tab.c"
+#line 1706 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 52: /* DecList: Dec  */
-#line 188 "./syntax.y"
+#line 188 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"DecList",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1712 "./syntax.tab.c"
+#line 1712 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 53: /* DecList: Dec COMMA DecList  */
-#line 189 "./syntax.y"
+#line 189 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"DecList",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1718 "./syntax.tab.c"
+#line 1718 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 54: /* Dec: VarDec  */
-#line 191 "./syntax.y"
+#line 191 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Dec",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1724 "./syntax.tab.c"
+#line 1724 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 55: /* Dec: VarDec ASSIGNOP Exp  */
-#line 192 "./syntax.y"
+#line 192 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Dec",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1730 "./syntax.tab.c"
+#line 1730 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 56: /* Exp: Exp ASSIGNOP Exp  */
-#line 197 "./syntax.y"
+#line 197 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1736 "./syntax.tab.c"
+#line 1736 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 57: /* Exp: Exp AND Exp  */
-#line 198 "./syntax.y"
+#line 198 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1742 "./syntax.tab.c"
+#line 1742 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 58: /* Exp: Exp OR Exp  */
-#line 199 "./syntax.y"
+#line 199 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1748 "./syntax.tab.c"
+#line 1748 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 59: /* Exp: Exp RELOP Exp  */
-#line 200 "./syntax.y"
+#line 200 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1754 "./syntax.tab.c"
+#line 1754 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 60: /* Exp: Exp PLUS Exp  */
-#line 201 "./syntax.y"
+#line 201 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1760 "./syntax.tab.c"
+#line 1760 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 61: /* Exp: Exp MINUS Exp  */
-#line 202 "./syntax.y"
+#line 202 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1766 "./syntax.tab.c"
+#line 1766 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 62: /* Exp: Exp STAR Exp  */
-#line 203 "./syntax.y"
+#line 203 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1772 "./syntax.tab.c"
+#line 1772 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 63: /* Exp: Exp DIV Exp  */
-#line 204 "./syntax.y"
+#line 204 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1778 "./syntax.tab.c"
+#line 1778 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 64: /* Exp: LP Exp RP  */
-#line 205 "./syntax.y"
+#line 205 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1784 "./syntax.tab.c"
+#line 1784 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 65: /* Exp: MINUS Exp  */
-#line 206 "./syntax.y"
+#line 206 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1790 "./syntax.tab.c"
+#line 1790 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 66: /* Exp: NOT Exp  */
-#line 207 "./syntax.y"
+#line 207 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,2,(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1796 "./syntax.tab.c"
+#line 1796 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 67: /* Exp: ID LP Args RP  */
-#line 208 "./syntax.y"
+#line 208 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,4,(yyvsp[-3].node),(yyvsp[-3].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1802 "./syntax.tab.c"
+#line 1802 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 68: /* Exp: ID LP RP  */
-#line 209 "./syntax.y"
+#line 209 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1808 "./syntax.tab.c"
+#line 1808 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 69: /* Exp: Exp LB Exp RB  */
-#line 210 "./syntax.y"
+#line 210 "/home/ppx/zhaochaoyi/Lab-compiler/Code/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 1814 "./syntax.tab.c"
+#line 1814 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 70: /* Exp: Exp DOT ID  */
-#line 211 "./syntax.y"
+#line 211 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1820 "./syntax.tab.c"
+#line 1820 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 71: /* Exp: ID  */
-#line 212 "./syntax.y"
+#line 212 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1826 "./syntax.tab.c"
+#line 1826 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 72: /* Exp: INT  */
-#line 213 "./syntax.y"
+#line 213 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1832 "./syntax.tab.c"
+#line 1832 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 73: /* Exp: FLOAT  */
-#line 214 "./syntax.y"
+#line 214 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Exp",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1838 "./syntax.tab.c"
+#line 1838 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 74: /* Exp: Exp ASSIGNOP error  */
-#line 215 "./syntax.y"
+#line 215 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1844 "./syntax.tab.c"
+#line 1844 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 75: /* Exp: Exp RELOP error  */
-#line 216 "./syntax.y"
+#line 216 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1850 "./syntax.tab.c"
+#line 1850 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 76: /* Exp: Exp PLUS error  */
-#line 217 "./syntax.y"
+#line 217 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1856 "./syntax.tab.c"
+#line 1856 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 77: /* Exp: Exp MINUS error  */
-#line 218 "./syntax.y"
+#line 218 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1862 "./syntax.tab.c"
+#line 1862 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 78: /* Exp: Exp STAR error  */
-#line 219 "./syntax.y"
+#line 219 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1868 "./syntax.tab.c"
+#line 1868 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 79: /* Exp: Exp DIV error  */
-#line 220 "./syntax.y"
+#line 220 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1874 "./syntax.tab.c"
+#line 1874 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 80: /* Exp: Exp AND error  */
-#line 221 "./syntax.y"
+#line 221 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1880 "./syntax.tab.c"
+#line 1880 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 81: /* Exp: Exp OR error  */
-#line 222 "./syntax.y"
+#line 222 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1886 "./syntax.tab.c"
+#line 1886 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 82: /* Exp: MINUS error  */
-#line 223 "./syntax.y"
+#line 223 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1892 "./syntax.tab.c"
+#line 1892 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 83: /* Exp: NOT error  */
-#line 224 "./syntax.y"
+#line 224 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1898 "./syntax.tab.c"
+#line 1898 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 84: /* Exp: ID LP error RP  */
-#line 225 "./syntax.y"
+#line 225 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1904 "./syntax.tab.c"
+#line 1904 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 85: /* Exp: Exp LB error RB  */
-#line 226 "./syntax.y"
+#line 226 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1910 "./syntax.tab.c"
+#line 1910 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 86: /* Exp: Exp DOT error  */
-#line 227 "./syntax.y"
+#line 227 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Exp"); }
-#line 1916 "./syntax.tab.c"
+#line 1916 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 87: /* Args: Exp COMMA Args  */
-#line 229 "./syntax.y"
+#line 229 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Args",(yyloc).first_line,3,(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)); }
-#line 1922 "./syntax.tab.c"
+#line 1922 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 88: /* Args: Exp  */
-#line 230 "./syntax.y"
+#line 230 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = Operator((yyval.node),"Args",(yyloc).first_line,1,(yyvsp[0].node)); }
-#line 1928 "./syntax.tab.c"
+#line 1928 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
   case 89: /* Args: error Args  */
-#line 231 "./syntax.y"
+#line 231 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
                                     { (yyval.node) = NULL; yyerror("Wrong Args"); }
-#line 1934 "./syntax.tab.c"
+#line 1934 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
     break;
 
 
-#line 1938 "./syntax.tab.c"
+#line 1938 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.c"
 
       default: break;
     }
@@ -2132,6 +2132,6 @@ yyreturnlab:
   return yyresult;
 }
 
-#line 234 "./syntax.y"
+#line 234 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
 
 
diff --git a/Code/syntax.tab.h b/Code/syntax.tab.h
index dd409e52fa127afba8e84dcb45687d99cd730e0f..8c903b8463bf303f8a10b1098fd0aae8b0fe63e5 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_SYNTAX_TAB_H_INCLUDED
-# define YY_YY_SYNTAX_TAB_H_INCLUDED
+#ifndef YY_YY_HOME_PPX_ZHAOCHAOYI_LAB_COMPILER_CODE_SYNTAX_TAB_H_INCLUDED
+# define YY_YY_HOME_PPX_ZHAOCHAOYI_LAB_COMPILER_CODE_SYNTAX_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -90,11 +90,11 @@ extern int yydebug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 union YYSTYPE
 {
-#line 31 "./syntax.y"
+#line 31 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.y"
 
     struct __Tree_node_t * node;
 
-#line 98 "./syntax.tab.h"
+#line 98 "/home/ppx/zhaochaoyi/Lab-compiler/Code/syntax.tab.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -123,4 +123,4 @@ extern YYLTYPE yylloc;
 int yyparse (void);
 
 
-#endif /* !YY_YY_SYNTAX_TAB_H_INCLUDED  */
+#endif /* !YY_YY_HOME_PPX_ZHAOCHAOYI_LAB_COMPILER_CODE_SYNTAX_TAB_H_INCLUDED  */
diff --git a/Project_1.pdf b/Project_1.pdf
deleted file mode 100644
index 33af8876654215ab4dcb621b26d0c155b331358e..0000000000000000000000000000000000000000
Binary files a/Project_1.pdf and /dev/null differ
diff --git a/task.md b/task.md
deleted file mode 100644
index 559ef41cfca0a308884e1654383dd043438b8b85..0000000000000000000000000000000000000000
--- a/task.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Project 1
-
-閿欒鎭㈠
-
-Stmt -> error SEMI
-
-
-Exp -> error RP | error RB  | error OPs(+-*/ && || RELOP)
-
-Args -> error COMMA
-
-杩橀渶瑕佸仛锛�
-
-閿欒鎭㈠锛屾敞閲�
-
-
-fun(int a int a) 闇€瑕両D LP error RP
\ No newline at end of file