freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理試驗(yàn)手冊(cè)-資料下載頁

2025-06-29 16:44本頁面
  

【正文】 left GE LE EQ NE 39。39。 39。39。%left 39。+39。 39。39。%left 39。*39。 39。/39。%nonassoc UMINUS%type nPtr stmt expr stmt_list%%program: function { exit(0)。 } 。function: function stmt { ex($2)。 freeNode($2)。 } | /* NULL */ 。stmt: 39。39。 { $$ = opr(39。39。, 2, NULL, NULL)。 } | expr 39。39。 { $$ = $1。 } | PRINT expr 39。39。 { $$ = opr(PRINT, 1, $2)。 } | VARIABLE 39。=39。 expr 39。39。 { $$ = opr(39。=39。, 2, id($1), $3)。 } | WHILE 39。(39。 expr 39。)39。 stmt { $$ = opr(WHILE, 2, $3, $5)。 } | IF 39。(39。 expr 39。)39。 stmt %prec IFX { $$ = opr(IF, 2, $3, $5)。 } | IF 39。(39。 expr 39。)39。 stmt ELSE stmt { $$ = opr(IF, 3, $3, $5, $7)。 } | 39。{39。 stmt_list 39。}39。 { $$ = $2。 } 。stmt_list: stmt { $$ = $1。 } | stmt_list stmt { $$ = opr(39。39。, 2, $1, $2)。 } 。expr: INTEGER { $$ = con($1)。 } | VARIABLE { $$ = id($1)。 } | 39。39。 expr %prec UMINUS { $$ = opr(UMINUS, 1, $2)。 } | expr 39。+39。 expr { $$ = opr(39。+39。, 2, $1, $3)。 } | expr 39。39。 expr { $$ = opr(39。39。, 2, $1, $3)。 } | expr 39。*39。 expr { $$ = opr(39。*39。, 2, $1, $3)。 } | expr 39。/39。 expr { $$ = opr(39。/39。, 2, $1, $3)。 } | expr 39。39。 expr { $$ = opr(39。39。, 2, $1, $3)。 } | expr 39。39。 expr { $$ = opr(39。39。, 2, $1, $3)。 } | expr GE expr { $$ = opr(GE, 2, $1, $3)。 } | expr LE expr { $$ = opr(LE, 2, $1, $3)。 } | expr NE expr { $$ = opr(NE, 2, $1, $3)。 } | expr EQ expr { $$ = opr(EQ, 2, $1, $3)。 } | 39。(39。 expr 39。)39。 { $$ = $2。 } 。%%define SIZEOF_NODETYPE ((char *)amp。pcon (char *)p)nodeType *con(int value) { nodeType *p。 size_t nodeSize。 /* allocate node */ nodeSize = SIZEOF_NODETYPE + sizeof(conNodeType)。 if ((p = malloc(nodeSize)) == NULL) yyerror(out of memory)。 /* copy information */ ptype = typeCon。 p = value。 return p。}nodeType *id(int i) { nodeType *p。 size_t nodeSize。 /* allocate node */ nodeSize = SIZEOF_NODETYPE + sizeof(idNodeType)。 if ((p = malloc(nodeSize)) == NULL) yyerror(out of memory)。 /* copy information */ ptype = typeId。 p = i。 return p。}nodeType *opr(int oper, int nops, ...) { va_list ap。 nodeType *p。 size_t nodeSize。 int i。 /* allocate node */ nodeSize = SIZEOF_NODETYPE + sizeof(oprNodeType) + (nops 1) * sizeof(nodeType*)。 if ((p = malloc(nodeSize)) == NULL) yyerror(out of memory)。 /* copy information */ ptype = typeOpr。 p = oper。 p = nops。 va_start(ap, nops)。 for (i = 0。 i nops。 i++) p[i] = va_arg(ap, nodeType*)。 va_end(ap)。 return p。}void freeNode(nodeType *p) { int i。 if (!p) return。 if (ptype == typeOpr) { for (i = 0。 i p。 i++) freeNode(p[i])。 } free (p)。}void yyerror(char *s) { fprintf(stdout, %s\n, s)。}static int lbl。int ex(nodeType *p) { int lbl1, lbl2。 if (!p) return 0。 switch(ptype) { case typeCon: fprintf(yyout,\tpush\t%d\n, p)。 break。 case typeId: fprintf(yyout,\tpush\t%c\n, p + 39。a39。)。 break。 case typeOpr: switch(p) { case WHILE: fprintf(yyout,L%03d:\n, lbl1 = lbl++)。 ex(p[0])。 fprintf(yyout,\tjz\tL%03d\n, lbl2 = lbl++)。 ex(p[1])。 fprintf(yyout,\tjmp\tL%03d\n, lbl1)。 fprintf(yyout,L%03d:\n, lbl2)。 break。 case IF: ex(p[0])。 if (p 2) { /* if else */ fprintf(yyout,\tjz\tL%03d\n, lbl1 = lbl++)。 ex(p[1])。 fprintf(yyout,\tjmp\tL%03d\n, lbl2 = lbl++)。 fprintf(yyout,L%03d:\n, lbl1)。 ex(p[2])。 fprintf(yyout,L%03d:\n, lbl2)。 } else { /* if */ fprintf(yyout,\tjz\tL%03d\n, lbl1 = lbl++)。 ex(p[1])。 fprintf(yyout,L%03d:\n, lbl1)。 } break。 case PRINT: ex(p[0])。 fprintf(yyout,\tprint\n)。 break。 case 39。=39。: ex(p[1])。 fprintf(yyout,\tpop\t%c\n, p[0] + 39。a39。)。 break。 case UMINUS: ex(p[0])。 fprintf(yyout,\tneg\n)。 break。 default: ex(p[0])。 ex(p[1])。 switch(p) { case 39。+39。: fprintf(yyout,\tadd\n)。 break。 case 39。39。: fprintf(yyout,\tsub\n)。 break。 case 39。*39。: fprintf(yyout,\tmul\n)。 break。 case 39。/39。: fprintf(yyout,\tdiv\n)。 break。 case 39。39。: fprintf(yyout,\tpLT\n)。 break。 case 39。39。: fprintf(yyout,\tpGT\n)。 break。 case GE: fprintf(yyout,\tpGE\n)。 break。 case LE: fprintf(yyout,\tpLE\n)。 break。 case NE: fprintf(yyout,\tpNE\n)。 break。 case EQ: fprintf(yyout,\tpEQ\n)。 break。 } } } return 0。}int main(argc,argv ) int argc。char **argv 。 { ++argv,argc。 if(argc0 ) { yyin =fopen(argv[0],r)。 } else yyin=stdin。 if(argc1 ) { yyout =fopen(argv[1],w)。 } else yyout=stdout。 yyparse()。
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1