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