資源簡介
1.根據狀態轉換圖直接編程
編寫一個詞法分析程序,它從左到右逐個字符的對源程序進行掃描,產生一個個的單詞的二元式,形成二元式(記號)流文件輸出。在此,詞法分析程序作為單獨的一遍,如下圖所示。
具體任務有:
(1)組織源程序的輸入
(2)識別單詞的類別并記錄類別編號和值,形成二元式輸出,得到單詞流文件
(3)刪除注釋、空格和無用符號
(4)發現并定位詞法錯誤,需要輸出錯誤的位置在源程序中的第幾行。將錯誤信息輸出到屏幕上。
(5)對于普通標識符和常量,分別建立標識符表和常量表(使用線性表存儲),當遇到一個標識符或常量時,查找標識符表或常量表,若存在,則返回位置,否則返回0并且填寫符號
代碼片段和文件信息
import?java.io.*;
import?java.util.*;
public?class?cffx?{
String?sourceFile;//源文件名
String?sentence;//程序語句
String?word=““;//分析得到的字符串
String?keyWord[]={“int““char““float““void““const““for““if““else““then““while““switch““break““begin““end“};
String?id[]=new?String[100];
int?idLength=0;//記錄標志符表中存放的標志符的個數
String?num[]=new?String[100];
int?numLength=0;//記錄常數表中存放的常數的個數
int?line=0;//當前讀到的行數
public?boolean?isDigit(char?ch){
if((ch>=‘0‘)&&(ch<=‘9‘))
return?true;
else
return?false;
}
public?boolean?isLetter(char?ch){
if(((ch>=‘A‘)&&(ch<=‘Z‘))||((ch>=‘a‘)&&(ch<=‘z‘)))
return?true;
else
return?false;
}
public?void?isKeyword(String?str){
int?i=0;
for(;i if(str.equals(keyWord[i]))//是關鍵字
{
System
評論
共有 條評論