學校作業,分析能力有限。
** 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 數字和運算子,對凝視進行過濾。同一時候還能識別出程式...