06 05 詞法分析

2021-06-22 08:32:53 字數 1510 閱讀 4018

#include#include#include#define keywordsum  11

char scanin[300],scanout[300]; //用於接收輸入輸出檔名

file *fin,*fout;//用於指向輸入輸出檔案的指標

char *keyword[keywordsum]=;

char singleword[50]="+-*(){};,:";

char doubleword[10]="><=!";

char scanin[300], scanout[300]; //用於接收輸入輸出檔名,在test_main.c中定義

file *fin,*fout; //用於指向輸入輸出檔案的指標,在test_main.c中定義

int testscan()//詞法分析函式

if ((fout=fopen(scanout,"w"))==null) //判斷輸出檔名是否正確

ch=getc(fin);

while(ch!=eof)

token[j]='\0'; //識別符號組合結束

//查保留字

n=0;

while ((n=keywordsum) //不是保留字,輸出識別符號

fprintf(fout,"%s\t%s\n","id",token); //輸出識別符號符號

else//是保留字,輸出保留字

fprintf(fout,"%s\t%s\n",token,token); //輸出保留字符號

}else if (isdigit(ch))//數字處理

token[j]='\0'; //整數組合結束

fprintf(fout,"%s\t%s\n","num",token); //輸出整數符號

}else if (strchr(singleword,ch)>0) //單分符處理

else if (strchr(doubleword,ch)>0) //雙分界符處理

else//不是=則為單分界符

token[1]='\0';

fprintf(fout,"%s\t%s\n",token,token); //輸出單或雙分界符符號

}else if (ch=='/') //注釋處理

//刪除注釋

while ((ch!='*' || ch1!='/')&&ch1!=eof); //直到遇到注釋結束符*/或檔案尾

ch=getc(fin);//讀下乙個符號以便識別下乙個單詞

}else //不是*則處理單分界符/

}else//錯誤處理

}fclose(fin);//關閉輸入輸出檔案

fclose(fout);

return(es); //返回主程式

}//c:\test01.txt c:\out01.txt 運算子大致可以分為5種型別:算術運算子、連線運算子、關係運算子、賦值運算子和邏輯運算子。

int main()

06 05 詞法分析

include include include define keywordsum 11 char scanin 300 scanout 300 用於接收輸入輸出檔名 file fin,fout 用於指向輸入輸出檔案的指標 char keyword keywordsum char singlewor...

詞法分析程式

上課沒聽啥,一邊看書,一邊做的。基本上,老師的要求是實現了,能把乙個句子 也可以是一整個程式,但還不完善,由於時間急,很多情況來不及考慮了 中的單詞項分析出它是保留字,還是識別符號,運算子等等。開始是在控制台下做得,也比較純正 lex.h ifndef lex h define lex h incl...

詞法分析程式設計

實驗目的 1 理解詞法分析在編譯程式中的作用 2 加深對有窮自動機模型的理解 3 掌握詞法分析程式的實現方法和技術 實驗內容 對下述單詞表定義的語言設計編制乙個詞法分析器。各種單詞符號對應的種別碼如下表 單詞符號 種別編碼 begin1if 2then 3while4do 5end 6l l d 1...