91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

哈工大 編譯原理 詞法分析 語法分析 語義分析

資源截圖

代碼片段和文件信息

/*
詞法分析程序的功能?
輸入是源程序字符串以‘#’?結(jié)束。
輸出是單詞符號的二元組(?單詞種別碼?單詞自身字符串?)?即(?syn單詞的種別?token單詞自身字符串或sum整型常數(shù)單詞)
例如
輸入:??x:=9;??if??x>0??then??x:=2*x+1/3?fi?#(可以文件方式讀入)
輸出:?(可以寫入文件)
(29???????????x?)??????????????????
(18??????????:=?)??????????????????
(30???????????9?)??????????????????
(26???????????;?)??????????????????
(2????????????if?)??????????????????
(29???????????x?)????
?*/
//package?詞法分析;

import?java.io.*;?
import?java.util.*;?

class?CiFaDisegn{
//聲明處理字符的類型
final?int?NONE=0;????????
final?int?DELIMITER=1;????//操作符運(yùn)算符?
final?int?VAR=2;??????????//字符變量
final?int?Num=3;??????????//數(shù)字
final?int?COMMAND=4;??????//關(guān)鍵字
//final?int?QUOTEDSTR=5;????//帶引號的字符串
//程序終結(jié)符end?of?program
final?String?EOP=“#“;

//聲明關(guān)鍵字
final?int?unKnowKeyword=0;
final?int?FI=1;
final?int?IF=2;
final?int?THEN=3;
final?int?WHILE=4;
final?int?DO=5;
final?int?END=6;
final?int?ELSE=7;
final?int?TO=8;
final?int?READ=9;
final?int?WRITE=10;
final?int?EOL=11;

private?char[]?prog;
private?int?progIdx;

private?String?token;
private?int?tokType;

private?int?kwToken;

final?int?PROG_SIZE=100000;
class?Keyword{
String?keyword;?
int?keywordindex;

Keyword(String?strint?t){
keyword=str;
keywordindex=t;
}
}

//將關(guān)鍵字的外部表示和內(nèi)部表示保存在一個名為KwTable的表中
Keyword?kwTable[]={
new?Keyword(“fi“FI)
new?Keyword(“if“IF)
new?Keyword(“then“THEN)
new?Keyword(“while“WHILE)
new?Keyword(“do“DO)
new?Keyword(“end“END)
new?Keyword(“else“ELSE)
new?Keyword(“to“TO)
new?Keyword(“read“READ)
new?Keyword(“write“WRITE)
};

//CiFaDisegn的構(gòu)造函數(shù)
public?CiFaDisegn(String?programName)?throws?IOException{
char?tempbuf[]=new?char[PROG_SIZE];
int?size;

size=loadProgram(tempbufprogramName);

if(size!=-1){
prog=new?char[size];

System.arraycopy(tempbuf?0?prog?0?size);
}
}

//讀入一個需要分析的程序
private?int?loadProgram(char[]?pString?fname)
throws?IOException{
int?size=0;
try{
FileReader?fr=new?FileReader(fname);
BufferedReader?br=new?BufferedReader(fr);

size=br.read(p?0?PROG_SIZE);

fr.close();
}catch(FileNotFoundException?exc){
System.out.print(“沒有找到該文件!“);
}
if(p[size-1]==(char)31)size--;

return?size;
}

//分析程序代碼
private?void?getToken()?throws?IOException?
??{???
????char?ch;?
?
????tokType?=?NONE;???
????token?=?““;???
????kwToken?=?unKnowKeyword;?
???
????if(progIdx?==?prog.length)?{?
???? token?=?EOP;???
????????return?;??
??????}??
?
????//?跳過空格符??
????while(progIdx? ??????????isSpaceOrTab(prog[progIdx]))?progIdx++;?
???
????????//handle?crlf
????if(prog[progIdx]?==?‘\r‘)?{??
????????progIdx?+=?2;?
????????kwToken?=?EOL;?
????????token?=?“\r\n“;?
????????return;?
??????}?
????
????//?掃描完所有的字符end?program??
????if(progIdx?==?prog.length)?{??
???? ?if(progIdx?==?prog.length)?{??

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????451??2006-10-17?13:08??COMP\詞法分析\CiFaDisegn$Keyword.class

?????文件???????5450??2006-10-17?13:08??COMP\詞法分析\CiFaDisegn.class

?????文件???????7326??2006-10-17?13:08??COMP\詞法分析\CiFaDisegn.java

?????文件????????615??2006-10-17?13:08??COMP\詞法分析\CiFatest.class

?????文件????????421??2006-10-14?09:42??COMP\詞法分析\CiFatest.java

?????文件????????116??2006-10-14?09:46??COMP\詞法分析\test.txt

?????文件????????242??2009-04-19?22:33??COMP\詞法分析\readMe.txt

?????文件?????100864??2009-04-19?22:32??COMP\詞法分析文檔.doc

?????目錄??????????0??2009-04-19?22:33??COMP\詞法分析

?????目錄??????????0??2009-04-19?22:33??COMP

-----------?---------??----------?-----??----

???????????????115485????????????????????10


評論

共有 條評論