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

正文內(nèi)容

編譯原理課程設(shè)計--c-編譯器詞法分析與語法分析的實現(xiàn)(存儲版)

2025-02-16 01:33上一頁面

下一頁面
  

【正文】 on(void) {//這個結(jié)點也是個難點,最后想來想去,var也是simple_expression中的一員,也就直接把他通過一定限制轉(zhuǎn)化了。 match(token)。 fprintf(listing,\n+++++%s+++++\n,tokenString)。 if( (token == LET) || (token == LT) || (token == BT) || (token == BET) || (token == EQ) || (token == NEQ)) { TreeNode * p = newExpNode(OpK)。// fprintf(listing,\nits addi time\n)。 } } return t。 match(token)。 if( (t!=NULL) amp。 break。 break。 t = copyString(varToken)。}TreeNode * args(void) { TreeNode * t = NULL。// fprintf(listing,\n+++++%s+++++\n,tokenString)。}、輸出與結(jié)點的建立()其中部分代碼因為參照附錄B中內(nèi)容而未修改,所以略去。 break。 case RPAREN_1: fprintf(listing,})。 case BET: fprintf(listing,=)。 case OVER: fprintf(listing,/)。 case ASSIGN: fprintf(listing,=)。 case ERROR: fprintf(listing,ERROR: %s,tokenString)。 case SelectionK: fprintf(listing,Selection:\n)。 default: fprintf(listing,Unknown ExpNode statement kind\n)。 break。 case ArrayK: fprintf(listing,Array_dec: )。 break。 break。 int i。 t = kind。 else { for (i=0。}TreeNode * newDecNode(void) { TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode))。 tnodekind = DecK。typedef enum{CompoundK,ExpressionK,SelectionK,ReturnK,IterationK} StmtKind。 union { StmtKind stmt。 char * type。 y = input()。 int y。 int val。 int lineno。這部分一開始沒有規(guī)劃真是頭疼。i++) tchild[i] = NULL。 t = Null。// fprintf(listing,\n build new ParamNode\n)。 tsibling = NULL。 } UNINDENT。 break。 break。 fprintf(listing, %s\n,tree)。 break。 case ExpressionK: fprintf(listing,Expression:\n)。 if (treenodekind==StmtK) { switch (tree) { case IterationK: fprintf(listing,While:\n)。 case ID: fprintf(listing,ID, name= %s, tokenString)。 case PLUS: fprintf(listing,+)。 case LT: fprintf(listing,)。 case EQ: fprintf(listing,==)。)。 break。 p = q。 TreeNode * p = t。 break。 break。 t child[0] = args()。 t = expression()。// fprintf(listing,\n+++++%s+++++\n,tokenString)。 p = token。 match(token)。 } return t。// fprintf(listing,\nits simp time\n)。 if(t != NULL) t = copyString(tokenString)。 p = token。 match(SEMI)。 if(t != NULL) tchild[1] = statement()。 } return t。// fprintf(listing,\n+++++%s+++++\n,tokenString)。 break。 case IF:// fprintf(listing,\nits selection_stmt() time\n)。// fprintf(listing,\nits sta time\n)。}TreeNode * expression_stmt(void) { TreeNode * t = newStmtNode(ExpressionK)。 while ((token!=ENDFILE)amp。}TreeNode * statement_list(void) { TreeNode * t = NULL。// fprintf(listing,\n+++++%s+++++\n,tokenString)。amp。 match(RPAREN_2)。 token = getToken()。 break。 p = q。// fprintf(listing,\n+++++%s+++++\n,tokenString)。 break。 token = getToken()。 // fprintf(listing,\n+++++%s+++++\n,tokenString)。 t child[0] = factor()。 printToken(token,tokenString)。 switch(token) { case INT: t = int。amp。 | ((int|void) ID (params) poundstmt) // int a[]。 while (token!=ENDFILEamp。 TreeNode * p = NULL。 if(currentToken == ID) currentToken = reservedLookup(tokenString)。 break。 ungetNextChar()。 state = DONE。) currentToken = EQ。 case R_ASSIGN: if(c == 39。 } else state = INCOMMENT。//是注釋 } else { state = DONE。) state = INASSIGN_2。 default: currentToken = ERROR。 case 39。 case 39。 case 39。 case 39。 case 39。 case 39。 } else if(c == 39。 } else if(c == 39。\t39。}//測試是否進行到此處 else if(c == 39。 StateType state = START。此次所做程序輸入格式為: +測試代碼文件名輸出地方:cmd命令行輸出內(nèi)容:詞法分析與語法樹程序代碼實現(xiàn)、獲取輸入部分():此處因為并未有所修改,均參照附錄B所寫,所以略去。 static TreeNode * expression(void)。 static TreeNode * pound_stmt(void)。 TokenType tok。、代碼設(shè)計說明程序globals files包里面分為Source Files文件夾和Header Files文件夾Source Files文件夾中包含: 。分析從program開始,逐層向下擴展。根據(jù)C 語言的規(guī)則,我們可以得出C 語言語法的EBNF。在開始時一直未注意停滯與當前字符,因此總是讀不出“/v*”中的“v”,在調(diào)試多次后才得以解決。注釋可以放在任何空白出現(xiàn)的位置(即注釋不能放在標記內(nèi))上,且可以超過一行。由掃描程序生成的邏輯單元稱作記號(token),將字符組合成記號與在一個英語句子中將字母將字母構(gòu)成單詞并確定單次的含義很相像。其中,關(guān)鍵字有:else、if、int、return、void、while;專用符號有:+、*、/、=、=、==、~=、=、。最后所得的DFA:、編程方法:編程采用C語言。 5. typespecifier → int | void 6. fundeclaration → typespecifier ID ( params ) poundstmt (在課后解釋中poundstmt前面沒有“|”符號) 7. params → paramslist | void 8. paramlist → paramlist , param | param 9. param → typespecifier ID | typespecifier ID [ ] 10. poundstmt → { localdeclarations statementlist } 11. localdeclarations → localdeclarations vardeclaration | empty 12. statementlist → statementlist statement | empty 13. statement → expressionstmt | poundstmt | selectionstmt | iterationstmt | returnstmt 14. expressionstmt → expression 。 | 。此處的難點在于語法規(guī)則的整理。Header Files文件夾中包含: 。 static TreeNode * declaration_list(void)。static TreeNode * statement(void)。 static TreeNode * additive_expression(void)。static struct { char* str。 save = TRUE。 state = INASSIGN_1。)) save = FALSE。 state = R_ASSIGN。 state = N_ASSIGN。 break。 break。 break。 break。 break。 break。 case INCOMMENT: save = FALSE。 case INASSIGN_1: if (c == 39。 } break。=39。 else currentToken = BT。 break。 save = FALSE。 currentToken = ID。 if ((save) amp。 } return currentToken。// fprintf(listing,\n+++++%s+++++\n,tokenString)。 if(q!=NULL) { if(t == NULL) t = p = q。| void main (void) | int gcd (int a[],int b) | { {vardeclaration} {statement(if,while...)} }//此處曾糾結(jié)過很久,最后發(fā)現(xiàn)附錄A開始陳列29條語法部分和后來詳解29條語法時有不同的地方。type_specifieramp。 case VOID: t = void。 }// fprintf(listing,\n+++++%s+++++\n,tokenString)。 break。 match(RPAREN_3)。}TreeNode * params(void) { TreeNode * t = newParamNode()。 break。 ( token !=
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1