关于纪录片_图文.ppt实验源码
import ;
import ;
/*
* 此程序0-50为关键字
* 51为标识符
* 52为数字
* 53-61为分隔符
* 62-75为运算符
* 76为字符常量
*/
public class wordAnalyse {
static char[] strbuf = new char[500];//定义一个数组,用以存放从文件读取来的字符串
int keywordIndex; //取关键字的类号
//定义50个关键字
String[] keyWord = {"abstract", "boolean", "break", "byte", "case", "catch", "char",
"class", "const", "continue", "default", "do", "double", "else", "extends", "false",
"final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof",
"int", "interface", "long", "native", "new", "null", "package", "private", "protected",
"public", "return", "short", "static", "super", "switch", "synchronized", "this",
"throw", "throws", "transient", "true", "try", "void", "volatile", "while"};
public static void main(String[] args) throws IOException {
wordAnalyse wa = new wordAnalyse();
("d:/");
("******用JAVA实现的java语言的词法分析器*********");
("******The Result:******"+"\n");
();
("\n"+"******Complete !******");
}
//从文件中把字符串读取到一个字符数组中
private void readFile(String url) throws IOException{
int ch,i=0;
FileReader fr = new FileReader(url);
while( (ch=())!=-1){
strbuf[i++]=(char)ch;
}
}
//判断是否为字母
private boolean isLetter(char ch) {
if('a'<=ch&ch<='z'||'A'<=ch&ch<='Z')
return true;
else
return false;
}
//判断是否为数字
private boolean isDigit(char ch) {
if('0'<= ch&&ch<='9')
return true;
else
return false;
}
//分析整个strbuf里的字符串
private void run(){
StringBuffer buf = new StringBuffer(); //定义一个缓冲区
for(int i=0; i<;i++){
//清除空格制表符换行符等字符
if(strbuf[i]==' '||strbuf[i]=='\t'||strbuf[i]=='\n')
i++;
if(isLetter(strbuf[i])) {
int k;
(0, ());
while(isLetter(strbuf[i])||isDigit(strbuf[i])) {
(strbuf[i]);
i++;
}
i--;
//查找buf里面的字符串是否为关键字
for(k =0; k<keyWor
关于纪录片 图文 来自淘豆网m.daumloan.com转载请标明出处.