學過編譯原理的同學一定知道詞法分析,那麼詞法分析如何用c語言實現呢?
精力有限,做的詞法分析器只能分析以下幾種
編寫程式前需要狀態表
,,,,};\\轉換表
char code[1000];//存輸入的字串
char put[100][100];//存入得出的結果
char ch;//獲得輸入字串的乙個字元
int i=0,j=0,k=0,p,m=0,n=0;
char chucun[100];//訪問出的值eg int i=5;先將int取出來存入
printf("小型詞法分析器\n");
printf("請輸入程式,程式以#結束\n");
while((ch=getchar())!='#')
code[i]='\0';
while(ipos
else if((code[ipos]>='a'&&code[ipos]<='z')||(code[ipos]>='a'&&code[ipos]<='z'))
else if(code[ipos]=='.')
if(nextistate==-1)
else if(nextistate>0)
}else
else if(strcmp(chucun,"int")==0)
else if(strcmp(chucun,"float")==0)
else
else
} else if(chucun[p]=='.')
else
else
}}}}
memset(chucun,0,sizeof(chucun));
j=0;
}if(code[ipos]=='+')
else if(code[ipos]=='-')
else if(code[ipos]=='=')
else if(code[ipos]==';')
else if(code[ipos]=='(')
else if(code[ipos]==')')
else if(code[ipos]=='
else if(code[ipos]=='}')
");strcpy(put[k],"詞類編碼:12 屬性:分界符");
n=n+1;
}else if(code[ipos]==' ')
else if(code[ipos]=='\n')
else
}*buffer=null;
}ipos++;
}if(j!=0)
else if(strcmp(chucun,"int")==0)
else if(strcmp(chucun,"float")==0)
else
else
} else if(chucun[p]=='.')
else
else
}}}}
memset(chucun,0,sizeof(chucun));
}if(tag!=0) }
}else if((n%2)!=0)
不完整");
}else if((m%2)!=0)
}return 0;
}
編譯原理 用Lex做詞法分析
08年9月入學,12年7月畢業,結束了我在軟體學院愉快豐富的大學生活。此系列是對四年專業課程學習的回顧,索引參見 用lex建立乙個詞法分析器 衝突解決規則 1 總是選擇最長的字首 2 如果最長的可能字首與多個模式匹配,總是選擇lex中先被列出的模式。安裝parser generator,並編譯lex...
編譯原理詞法分析程式設計(C )
1.對源程式進行理解,從pl0文件中抽取出詞法部分的 單獨作為乙個程式,變成乙個詞法程式,用visual6.0或者dev c 進行編譯,編譯成為可執行檔案 詞法分析部分的 如下 include include include include include include include inclu...
編譯原理 C語言詞法分析器
本程式預設的種別碼的編碼 主介面 功能1提到的input.txt檔案的內容可以是任意c語言 這裡我的input.txt隨便打了一段c語言 進入1功能,直接從input.txt檔案讀取 這裡沒寫路徑輸入,必須把input.txt和本程式的cpp檔案放在同一目錄下 經過分析後得到結果 沒做清屏處理,寫得...