簡單詞法分析

2021-04-26 11:29:00 字數 1661 閱讀 2796

學校作業,分析能力有限。

/** [email protected]

** 2009.4.7

** */

#include

#include

#include

#define maxlength 255

union wordcontent;

typedef struct wordword;

int count=0;

word sym[maxlength];

int main(int argc, char *argv)

else

fp=fopen("answer", "w");

fileout(fp);

fclose(fp);  

return 0;

}void getsym(file *ifp, char ch)

;while(ch!=eof)else if (isalpha(ch))

ch=getc(ifp);

}while(isalnum(ch));    /* whether ch is letter or digit */

a[k]='/0';              /* the last bit puts /0 */

id=a;

for(i=0;i<7;i++)

}if(iskey==0)

}else if(isdigit(ch))

for(;i>0;i--,d*=10)

sym[count].value.t2 = x;

sym[count].code = 20;

sym[count].con = 2;

count++;

}else if((ccc=issymbol(ch)))else

break;

case '>':

a[0]=sss;

if(ch=='=')else

break;

case '<':

a[0]=sss;

if(ch=='=')else

break;

case '!':

a[0]=sss;

if(ch=='=')else

break;

case '&':

a[0]=sss;

if(ch=='&')else

break;

case '|':

a[0]=sss;

if(ch=='|')else

break;

default:

ungetc(ch,ifp);

sym[count].value.t3 =sss;

sym[count].code = ccc;

sym[count].con = 3;

count++;

ch=getc(ifp);

break;

}} else }}

}int issymbol(char c)

,:;><000!&0|";

int i;

for(i=0;i<23;i++)

return 0;

}void fileout(file *ofp)

if(((i+1)%4)==0)

fprintf(ofp,"/n");}}

實驗一 簡單詞法分析程式設計

實驗一 簡單詞法分析程式設計 一 實驗目的 了解詞法分析程式的基本構造原理,掌握詞法分析程式的手工構造方法。二 實驗內容 1 了解編譯程式的詞法分析過程。2 根據pascal語言的說明語句形式,用手工方法構造乙個對說明語句進行詞法分析的程式。該程式能對從鍵盤輸入或從檔案讀入的形如 const cou...

簡單詞法分析器實現

編寫分析器有兩種方法,一種是通過dfa對單詞進行識別,二是通過直接編敲 進行識別。本程式採用dfa對單詞進行識別。dfa的實現方法。大概思想和書上一致,在程式中,則是用二維陣列代表狀態轉換矩陣,用一維陣列表示終態。可以識別識別符號 keyword 數字和運算子,對凝視進行過濾。同一時候還能識別出程式...

簡單詞法分析器實現

編寫分析器有兩種方法,一種是通過dfa對單詞進行識別,二是通過直接編敲 進行識別。本程式採用dfa對單詞進行識別。dfa的實現方法。大概思想和書上一致,在程式中,則是用二維陣列代表狀態轉換矩陣,用一維陣列表示終態。可以識別識別符號 keyword 數字和運算子,對凝視進行過濾。同一時候還能識別出程式...