資源簡介
一個簡單的C0編譯器,附帶文法說明和源碼
代碼片段和文件信息
#include
#include“c0.h“
#include“string.h“
void?init()
{
int?i;
for(i=0;i<=255;i++)?
{
ssym[i]=nul;?//ssym:單字符的符號值??
}
err=0;???????????????????????????????????????????//錯誤計數(shù)器置0?
cc=cx=ll=0;
ch=‘?‘;
ptx=0;
pdx=0;
cx=0;
ls=1;
ssym[‘+‘]=plus;
ssym[‘-‘]=minus;
ssym[‘*‘]=times;
ssym[‘/‘]=slash;
ssym[‘(‘]=lparen;
ssym[‘=‘]=becomes;
ssym[‘)‘]=rparen;
ssym[‘‘]=comma;
ssym[‘{‘]=lbrace;
ssym[‘}‘]=rbrace;
ssym[‘;‘]=semicolon;
/*設(shè)置保留字名字按照字母順序便于折半查找*/
strcpy(&(word[0][0])“else“);
strcpy(&(word[1][0])“if“);
strcpy(&(word[2][0])“int“);
strcpy(&(word[3][0])“main“);
strcpy(&(word[4][0])“printf“);
strcpy(&(word[5][0])“return“);
strcpy(&(word[6][0])“scanf“);
strcpy(&(word[7][0])“void“);
strcpy(&(word[8][0])“while“);
/*設(shè)置保留字符號*/
wsym[0]=elsesym;
wsym[1]=ifsym;
wsym[2]=intsym;
wsym[3]=mainsym;
wsym[4]=printfsym;
wsym[5]=returnsym;
wsym[6]=scanfsym;
wsym[7]=voidsym;
wsym[8]=whilesym;
/*設(shè)置
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-01-04?22:57??c0程序\
?????文件??????116736??2015-01-04?22:55??c0程序\C0編譯器實驗報告.doc
?????目錄???????????0??2015-01-04?22:57??c0程序\測試實例\
?????文件?????????156??2014-12-23?16:14??c0程序\測試實例\1.txt
?????文件??????????90??2014-12-22?21:29??c0程序\測試實例\2.txt
?????文件??????????84??2014-12-22?21:53??c0程序\測試實例\3.txt
?????文件?????????102??2014-12-23?17:07??c0程序\測試實例\4.txt
?????文件??????????60??2014-12-23?15:14??c0程序\測試實例\5.txt
?????文件??????????34??2014-12-23?15:47??c0程序\測試實例\6.txt
?????文件??????????68??2014-12-29?19:25??c0程序\測試實例\7.txt
?????目錄???????????0??2015-01-04?22:56??c0程序\程序代碼\
?????文件????????2868??2014-12-29?19:22??c0程序\程序代碼\c0.h
?????文件???????14905??2014-12-30?15:12??c0程序\程序代碼\c0go.c
?????文件?????????285??2014-12-29?19:30??c0程序\錯誤描述.txt
?????文件???????88622??2014-11-22?21:18??實驗報告.doc
評論
共有 條評論