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

正文內(nèi)容

編譯原理課程設(shè)計(jì)報(bào)告c-語言詞法與語法分析器的實(shí)現(xiàn)-展示頁

2025-08-01 01:42本頁面
  

【正文】 { ttype=IntArray。 t=copyString(tokenString)。 t= newStmtNode(ParamK)。}TreeNode * param(void){ TreeNode * t = NULL。 i++。 while(token != RPAREN) { match(DOT)。 int i = 1。 } return t。 } else if(token == RPAREN) t=NULL。 tchild[0] = newStmtNode(ParamK)。 if(token == VOID) { match(token)。} /* end case */return t。 token = getToken()。default : syntaxError(unexpected token )。 break。 printToken(token,tokenString)。 } break。 default: match(SEMI)。 tchild[1] = pound_stmt()。 tchild[0] = params()。 case LPAREN: t = FunDK。 match(SEMI)。 match(NUM)。 ttype = IntArray。 match(ID)。 switch (token) { case ID: t = copyString(tokenString)。 else ttype = Void。switch (token){case VOID : case INT : t = newStmtNode(DecK)。 } } } return t。 else /* now p cannot be NULL either */ { psibling = q。 while ((token==INT) || (token==VOID) ) { TreeNode *q = declaration()。 }}/*進(jìn)行語法分析,構(gòu)建語法樹*/TreeNode * declaration_list(void){ TreeNode * t= declaration()。 printToken(token,tokenString)。}/*判斷讀取的字符*/static void match(TokenType expected){ if(token==expected) { token=getToken( )。fprintf(listing,Syntax error at line %d: %s,lineno,message)。static TreeNode * arg_list(void)。static TreeNode * factor(void)。static TreeNode * additive_expression(void)。static TreeNode * var(void)。static TreeNode * return_stmt(void)。static TreeNode * if_stmt(void)。static TreeNode * statement(void)。static TreeNode * local_declarations(void)。static TreeNode * param(void)。static TreeNode * params(void)。 /* holds current token *//* function prototypes for recursive calls */static TreeNode * declaration_list(void)。 return 0。 printTree(syntaxTree)。else syntaxTree = parse()。 fprintf(listing,\nC COMPILATION: %s\n,pgm)。 exit(1)。 source=fopen(pgm,r)。 char pgm[120]。int Error = FALSE。int TraceScan=TRUE。FILE * code。FILE * source。(2)程序流程圖程序主流程圖: 詞法分析: 語法分析: 讀取程序讀取程序進(jìn)行遞歸下降分析匹配或建立樹對輸入的字符進(jìn)行匹配判斷對應(yīng)輸出各行代碼的詞法分析結(jié)果輸出程序?qū)?yīng)的語法樹詞法分析子流程圖:Start否是Num是否為dight是否為num否否是ID是否為alpha是否為id否是是否為=是否為,.,!,=單符號否否是雙符號是否為+,,*等專用符號是是專用符號否是否是是否為/是否為*是否為*是否為/否否是錯(cuò)誤結(jié)果over語法分析子流程圖:整個(gè)詞法以及語法的程序設(shè)計(jì)在一個(gè)工程里面,一共包含了8個(gè)文件,、 、,。因?yàn)槲姆ㄟf歸相應(yīng)子程序也遞歸,所以稱這種方法為遞歸子程序下降法或遞歸下降法。遞歸下降法是語法分析中最易懂的一種方法。通過有窮自動機(jī)理論能夠容易的設(shè)計(jì)出詞法分析器。(1)設(shè)計(jì)思想a. 詞法分析詞法分析的實(shí)現(xiàn)主要利用有窮自動機(jī)理論。注釋不能嵌套。⑤ 注釋用通常的c語言符號/ * . . . * /圍起來。④ 空格由空白、換行符和制表符組成。 , ( ) [ ] { } /* */③其他標(biāo)記是ID和NUM,通過下列正則表達(dá)式定義:ID = letter letter*NUM = digit digit*letter = a|..|z|A|..|Zdigit = 0|..|9 注:ID表示標(biāo)識符,NUM表示數(shù)字,letter表示一個(gè)字母,digit表示一個(gè)數(shù)字。(2)C語言的詞法說明① 語言的關(guān)鍵字:else if int return void while 所有的關(guān)鍵字都是保留字,并且必須是小寫。編譯原理課程設(shè)計(jì)報(bào)告課題名稱: 編譯原理課程設(shè)計(jì) C語言詞法與語法分析器的實(shí)現(xiàn) C詞法與語法分析器的實(shí)現(xiàn)(1)題目實(shí)用性C語言擁有一個(gè)完整語言的基本屬性,通過編寫C語言的詞法分析和語法分析,對于理解編譯原理的相關(guān)理論和知識有很大的作用。通過編寫C語言詞法和語法分析程序,能夠?qū)幾g原理的相關(guān)知識:正則表達(dá)式、有限自動機(jī)、語法分析等有一個(gè)比較清晰的了解和掌握。②專用符號:+ * / = = == != = 。 小寫和大寫字母是有區(qū)別的??崭裢ǔ1缓雎?。注釋可以放在任何空白出現(xiàn)的位置(即注釋不能放在標(biāo)記內(nèi))上,且可以超過一行。(3)程序設(shè)計(jì)目標(biāo)能夠?qū)σ粋€(gè)程序正確的進(jìn)行詞法及語法分析。有窮自動機(jī)可用作描述在輸入串中識別模式的過程,因此也能用作構(gòu)造掃描程序。b. 語法分析語法分析采用遞歸下降分析。它的主要原理是,對每個(gè)非終結(jié)符按其產(chǎn)生式結(jié)構(gòu)構(gòu)造相應(yīng)語法分析子程序,其中終結(jié)符產(chǎn)生匹配命令,而非終結(jié)符則產(chǎn)生過程調(diào)用命令。其中子程序的結(jié)構(gòu)與產(chǎn)生式結(jié)構(gòu)幾乎是一致的。以下僅列出各個(gè)文件中的核心代碼:include define NO_PARSE FALSEinclude if NO_PARSEinclude elseinclude endifint lineno=0。FILE * listing。int EchoSource = TRUE。int TraceParse=TRUE。int main(int argc,char * argv[]){ TreeNode * syntaxTree。 scanf(%s,pgm)。 if(source==NULL) { fprintf(stderr,File %s not found\n,pgm)。 } listing = stdout。if NO_PARSE while(getToken()!=ENDFILE)。 if(TraceParse){ fprintf(listing,\nSyntaxtree:\n)。 }endif fclose(source)。}include include include include static TokenType token。static TreeNode * declaration(void)。static TreeNode * param_list(void)。static TreeNode * pound_stmt(void)。static TreeNode * statement_list(void)。static TreeNode * expression_stmt(void)。static TreeNode * while_stmt(void)。static TreeNode * expression(void)。static TreeNode * simple_exp(void)。static TreeNode * term(void)。static TreeNode * args(void)。static void syntaxError(char * message){ fprintf(listing,\n )。Error = TRUE。 } else { syntaxError(unexpected token )。 f
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1