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

正文內(nèi)容

編譯原理課程設(shè)計(jì)--c-編譯器詞法分析與語(yǔ)法分析的實(shí)現(xiàn)(參考版)

2025-01-20 01:33本頁(yè)面
  

【正文】 }、測(cè)試界面的輸入:、測(cè)試界面的結(jié)果(無(wú)錯(cuò))。 y = input()。 int y。 else return gcd(v,uu/v*v)。} TreeNode。 char * type。 int val。} kind。 DecKind dec。 union { StmtKind stmt。 int lineno。//因?yàn)樵贑 中有了函數(shù)類型(int,void),并且根據(jù)需要添加了DecKind dec和ParamKind paramtypedef struct treeNode { struct treeNode * child[MAXCHILDREN]。typedef enum{FunK,VarK,ArrayK} DecKind。typedef enum{CompoundK,ExpressionK,SelectionK,ReturnK,IterationK} StmtKind。這部分一開(kāi)始沒(méi)有規(guī)劃真是頭疼。 , [ ] ( ) /* */} TokenType。 } return t。 tnodekind = DecK。i++) tchild[i] = NULL。 else { for (i=0。// fprintf(listing,\n build new DecNode\n)。}TreeNode * newDecNode(void) { TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode))。 t = Null。 tnodekind = ParamK。i++) tchild[i] = NULL。 else { for (i=0。// fprintf(listing,\n build new ParamNode\n)。}TreeNode * newParamNode(void) {//Param和Dec結(jié)點(diǎn)的創(chuàng)建根據(jù)結(jié)點(diǎn)所有的內(nèi)容,仿造Stmt和Exp結(jié)點(diǎn)的創(chuàng)建就可以解決 TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode))。 t = void。 t = kind。 tsibling = NULL。iMAXCHILDREN。 if (t==NULL) fprintf(listing,Out of memory error at line %d\n,lineno)。 int i。 } UNINDENT。i++) printTree(treechild[i])。 for (i=0。 break。 break。 break。 break。 break。 break。 break。 case FunK: fprintf(listing,Fun_dec: )。 case ArrayK: fprintf(listing,Array_dec: )。 fprintf(listing, %s\n,tree)。 break。 break。 break。 break。 break。 } } else if (treenodekind==ExpK) { switch (tree) { case OpK: fprintf(listing,Op: )。 default: fprintf(listing,Unknown ExpNode statement kind\n)。 case ExpressionK: fprintf(listing,Expression:\n)。 case ReturnK: fprintf(listing,Return:\n)。 case CompoundK: fprintf(listing,Compound:\n)。 case SelectionK: fprintf(listing,Selection:\n)。 if (treenodekind==StmtK) { switch (tree) { case IterationK: fprintf(listing,While:\n)。 INDENT。 default: fprintf(listing,Unknown token: %d, token)。 case ERROR: fprintf(listing,ERROR: %s,tokenString)。 case ID: fprintf(listing,ID, name= %s, tokenString)。 case NUM: fprintf(listing,NUM, val= %s,tokenString)。 case ENDFILE: fprintf(listing,EOF)。 case ASSIGN: fprintf(listing,=)。 case PLUS: fprintf(listing,+)。 case MINUS: fprintf(listing,)。 case TIMES: fprintf(listing,*)。 case OVER: fprintf(listing,/)。 case LT: fprintf(listing,)。 case LET: fprintf(listing,=)。 case BT: fprintf(listing,)。 case BET: fprintf(listing,=)。 case EQ: fprintf(listing,==)。 case NEQ: fprintf(listing,!=)。 case LPAREN_1: fprintf(listing,{)。 case RPAREN_1: fprintf(listing,})。)。 break。 break。 break。 break。 break。 break。}、輸出與結(jié)點(diǎn)的建立()其中部分代碼因?yàn)閰⒄崭戒汢中內(nèi)容而未修改,所以略去。 p = q。 if(q != NULL) { if( t == NULL) t = p = q。 match(COM)。// fprintf(listing,\n+++++%s+++++\n,tokenString)。 TreeNode * p = t。 return t。// fprintf(listing,\n+++++%s+++++\n,tokenString)。}TreeNode * args(void) { TreeNode * t = NULL。 break。 printToken(token ,tokenString)。 } break。 t = copyString(varToken)。 break。 t child[0] = expression()。 match(LPAREN_2)。 break。 t child[0] = args()。 t = copyString(varToken)。 match(ID)。 break。 t = expression()。 break。 (token==NUM) ) { t = atoi(tokenString)。 if( (t!=NULL) amp。// fprintf(listing,\n+++++%s+++++\n,tokenString)。 TreeNode * t = NULL。 } } return t。 match(token)。 p = token。 while( (token == TIMES) || (token == OVER) ) { TreeNode * p = newExpNode(OpK)。// fprintf(listing,\nits term time\n)。 } } return t。 match(token)。 p = token。 while( (token == PLUS) || (token == MINUS) ) { TreeNode * p = newExpNode(OpK)。// fprintf(listing,\nits addi time\n)。 } return t。 } match(token)。 p = token。 if( (token == LET) || (token == LT) || (token == BT) || (token == BET) || (token == EQ) || (token == NEQ)) { TreeNode * p = newExpNode(OpK)。// fprintf(listing,\nits simp time\n)。 } return t。 if (t != NULL) t child[0] = expression()。 fprintf(listing,\n+++++%s+++++\n,tokenString)。 if(t != NULL) t = copyString(tokenString)。// fprintf(listing,\nits var time\n)。 } } return t。 match(token)。 p = token。 if(token == ASSIGN) { TreeNode * p = newExpNode(OpK)。// fprintf(listing,\nits exp time\n)。}TreeNode * expression(void) {//這個(gè)結(jié)點(diǎn)也是個(gè)難點(diǎn),最后想來(lái)想去,var也是simple_expression中的一員,也就直接把他通過(guò)一定限制轉(zhuǎn)化了。 match(SEMI)。 if( token == SEMI) match(SEMI)。// fprintf(listing,\n+++++%s+++++\n,tokenString)。}TreeNode * return_stmt(void) { TreeNode * t = newStmtNode(ReturnK)。 if(t != NULL) tchild[1] = statement()。 if(t != NULL) tchild[0] = expression()。 match(WHILE)。// fprintf(listing,\nits iter time\n)。 } return t。 if(token == ELSE) { match(ELSE)。 match(RPAREN_3)。 match(LPAREN_3)。// fprintf(listing,\n+++++%s+++++\n,tokenString)。}TreeNode * selection_stmt(void) { TreeNode * t = newStmtNode(SelectionK)。 break。 printToken(token,tokenString)。 break。 case RETURN:// fprintf(listing,\nits return_stmt() time\n)。 t = iteration_stmt()。 break。 case IF:// fprintf(listing,\nits selection_stmt() time\n)。 t = pound_stmt()。 break。 switch(token) { case ID: case NUM: case LPAREN_3: case SEMI:// fprintf(listing,\nits expression_stmt() time\n)。// fprintf(listing,\nits sta time\n)。 } return t。 }else if( t != NULL) { t child[0] = expression()。// fprintf(listing,\n+++++%s+++++\n,tokenString)。}TreeNode * expression_stmt(void) { TreeNode * t = newSt
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1