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

正文內(nèi)容

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

2025-06-08 12:19本頁(yè)面
  

【正文】 } } else if (treenodekind == ParamK) { switch(tree) { case Var: fprintf(listing,V。 default: fprintf(listing,Unknown declaration kind\n)。 fprintf(listing, %s\n,tree)。 fprintf(listing, %s\n,tree)。 break。 } } else if (treenodekind == DecK) { switch(tree) { case VarK: fprintf(listing,Var_dec: )。 default: fprintf(listing,Unknown ExpNode expression kind\n)。 case CallK: fprintf(listing,call: %s\n,tree)。 case IdK: fprintf(listing,Id: %s\n,tree)。 case ConstK: fprintf(listing,Const: %d\n,tree)。 printToken(tree,\0)。 break。 break。 break。 break。 break。 break。 while (tree != NULL) { printSpaces()。 } } void printTree( TreeNode * tree ) { int i。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 case SEMI: fprintf(listing,。 case COM: fprintf(listing,)。 case LPAREN_2: fprintf(listing,[)。 case RPAREN_2: fprintf(listing,])。 case LPAREN_3: fprintf(listing,()。 case RPAREN_3: fprintf(listing,))。 void printToken( TokenType token, const char* tokenString ) {//printToken和 printTree的修改很簡(jiǎn)單,直接根據(jù) C 的 token和結(jié)點(diǎn)類型來(lái)判斷輸出就行 switch(token) { case IF: case ELSE: case INT: case RETURN: case VOID: case WHILE: fprintf(listing, reserved word: %s,tokenString )。 } } } return t。 else { psibling = q。 q = expression()。 while(token == COM) { TreeNode * q。 // fprintf(listing,\nits arg_l time\n)。 } TreeNode * arg_list(void) { TreeNode * t = expression()。 if(token != RPAREN_3) t = arg_list()。 // fprintf(listing,\nits args time\n)。 } return t。 token = getToken()。 default: syntaxError(unexprected token in facor )。 break。 default: t = newExpNode(IdK)。 match(RPAREN_2)。 t = copyString(varToken)。 case LPAREN_2: t = newExpNode(IdK)。 match(RPAREN_3)。 match(LPAREN_3)。 switch(token) { case LPAREN_3: t = newExpNode(CallK)。 case ID: varToken = copyString(tokenString)。 match(RPAREN_3)。 case LPAREN_3: match(LPAREN_3)。 } match(NUM)。amp。 switch(token) { case NUM: t = newExpNode(ConstK)。 /// fprintf(listing,\nits fact time\n)。 } TreeNode * factor(void) {//還有這里是個(gè)難點(diǎn),很糾結(jié),最后去網(wǎng)上借鑒了一下,才把 call 給去掉 char * varToken。 tchild[1] = factor()。 t = p。 if( p != NULL ) { pchild[0] = t。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 } TreeNode * term(void) { TreeNode * t = factor()。 tchild[1] = term()。 t = p。 if( p != NULL ) { pchild[0] = t。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 } TreeNode * additive_expression(void) { TreeNode * t = term()。 if(t != NULL) tchild[1] = additive_expression()。 t = p。 if(p!=NULL) { p child[0] = t。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 } TreeNode * simple_expression(void) { TreeNode * t = additive_expression()。 match(RPAREN_2)。 if(token == LPAREN_2) { match(LPAREN_2)。 match(ID)。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 } TreeNode * var(void) { TreeNode * t = newExpNode(VarK)。 tchild[1] = expression()。 t = p。 if(p!=NULL) { pchild[0] = t。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。但是再最終測(cè)試時(shí)又發(fā)現(xiàn)在一個(gè) pound_stmt 中, {char x; int y; }居然可以,看來(lái)這部分代碼還是不夠嚴(yán)謹(jǐn) TreeNode * t = simple_expression()。 } return t。 else if(t != NULL) { tchild[0] = expression()。 match(RETURN)。 // fprintf(listing,\nits ret time\n)。 return t。 match(RPAREN_3)。 match(LPAREN_3)。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 } TreeNode * iteration_stmt(void) { TreeNode * t = newStmtNode(IterationK)。 if(t != NULL) tchild[2] = statement()。 if(t != NULL) tchild[1] = statement()。 if(t != NULL) tchild[0] = expression()。 match(IF)。 // fprintf(listing,\nits sele time\n)。 } return t。 token = getToken()。 default: syntaxError(unexpected token in statement )。 t = return_stmt()。 break。 case WHILE: // fprintf(listing,\nits iteration_stmt() time\n)。 t = selection_stmt()。 break。 case LPAREN_1: // fprintf(listing,\nits pound_stmt() time\n)。 t = expression_stmt()。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 } TreeNode * statement(void) { TreeNode * t = NULL。 match(SEMI)。 if( token == SEMI ) { match(SEMI)。 // fprintf(listing,\nits exp_s time\n)。 } } } } return t。 else { psibling = q。 q = statement()。amp。 p = t。amp。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 TreeNode * p。 } } } } return t。 else { qsibling=p。 while(token == INT) { TreeNode * p = declaration()。 if(token == INT) { t = declaration()。 // fprintf(listing,\nits L_dec time\n)。 } TreeNode * local_declaration(void) { TreeNode * t = NULL。 match(RPAREN_1)。 (token == VOID || token == INT)) tchild[0] = local_declaration()。 if( (t != NULL) amp。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 } TreeNode * pound_stmt(void) { TreeNode * t = newStmtNode(CompoundK)。 } else t = Var。 t = Array。 match(ID)。amp。 break。 syntaxError(param wrong)。 break。 // fprintf(listing,\n+++++INT+++++\n)。 case INT: t = int。 match(VOID)。 switch(token) { case VOID: // fprintf(listing,\n+++++VOID+++++\n)。//這是參數(shù)結(jié)點(diǎn),區(qū)別與聲明結(jié)點(diǎn) // fprintf(listing,\nits param time\n)。 } } } return t。 else { psibling = q。 q = param()。 ( token != ENDFILE )) { TreeNode * q。 while ( (token != RPAREN_3) amp。 // fprintf(listing,\nits par_l time\n
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1