資源簡介
完整cmm解釋器, 帶語法高亮, 詞法分析, 語法分析, 代碼生成, 解釋執行功能, 帶GUI. 使用JAVA編寫, 使用SWT框架
代碼片段和文件信息
package?com.shaw.cmmjava;
import?java.io.IOException;
import?java.util.linkedList;
import?com.shaw.cmmjava.exception.InterpretException;
import?com.shaw.cmmjava.exception.ParserException;
import?com.shaw.cmmjava.model.FourCode;
import?com.shaw.cmmjava.model.Symbol;
import?com.shaw.cmmjava.model.Token;
import?com.shaw.cmmjava.model.TreeNode;
public?class?CodeGenerater?{
????
????private?static?int?mLevel;
????private?static?int?mLine;
????private?static?linkedList?codes;
????private?static?SymbolTable?symbolTable;
????
????public?static?linkedList?generateCode(String?filename)?throws?ParserException?InterpretException?{
????????mLine?=?-1;//代碼編號從0開始
????????mLevel?=?0;
????????codes?=?new?linkedList();
????????try?{
????????????linkedList?nodeList?=?Util.getNodeList(Util.getTokenList(filename));
????????????symbolTable?=?SymbolTable.getSymbolTable();
????????????symbolTable.newTable();
????????????CodeGenerater?generator?=?new?CodeGenerater();
????????????for?(TreeNode?node?:?nodeList)?{
????????????????generator.interpret(node);
????????????}
????????????symbolTable.deleteTable();
????????}?catch?(IOException?e1)?{
????????????e1.printStackTrace();
????????}
????????return?codes;
???}
????
????private?void?interpret(TreeNode?node)?throws?InterpretException?{
????????while?(true)?{
????????????switch?(node.getType())?{
????????????case?TreeNode.IF_STMT:
????????????????interpretIfStmt(node);
????????????????break;
????????????case?TreeNode.WHILE_STMT:
????????????{
????????????????int?jmpline?=?mLine?+?1;
????????????????FourCode?falsejmp?=?new?FourCode(FourCode.JMP?interpretExp(node.getLeft())?null?null);
????????????????codes.add(falsejmp);
????????????????mLine++;
????????????????codes.add(new?FourCode(FourCode.IN?null?null?null));
????????????????mLine++;
????????????????mLevel++;
????????????????interpret(node.getMiddle());
????????????????SymbolTable.getSymbolTable().deregister(mLevel);
????????????????mLevel--;
????????????????codes.add(new?FourCode(FourCode.OUT?null?null?null));
????????????????mLine++;
????????????????codes.add(new?FourCode(FourCode.JMP?null?null?jmpline?+?““));
????????????????mLine++;
????????????????falsejmp.setForth(String.valueOf(mLine?+?1));
????????????????break;
????????????}
????????????case?TreeNode.READ_STMT:
????????????{
????????????????String?varname?=?null;
????????????????int?type?=?symbolTable.getSymbolType(node.getLeft().getValue());
????????????????switch?(type)?{
????????????????case?Symbol.SINGLE_INT:
????????????????case?Symbol.SINGLE_REAL:
????????????????????codes.add(new?FourCode(FourCode.READ?null?null?node.getLeft().getValue()));
????????????????????mLine++;
????????????????????break;
????????????????case?Symbol.ARRAY_INT:
????????????????case?Symbol.ARRAY_REAL:
????????????????????codes.add(new?FourCode(FourCode.READ?null?null?node.getLeft().getValue()?+?“[“?+?interpretExp(node.getLeft().getLeft())?+?“]“));
????????????????????mLine+
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-12-29?17:28??cmm-release\
?????文件?????2022069??2015-02-17?23:00??cmm-release\cmm.jar
?????目錄???????????0??2014-12-29?17:27??cmm-release\res\
?????文件?????????808??2014-12-21?21:37??cmm-release\res\ic_open.png
?????文件?????????240??2014-12-21?21:37??cmm-release\res\ic_run.png
?????文件?????????813??2014-12-21?21:37??cmm-release\res\ic_save.png
?????文件??????????45??2014-12-26?15:11??cmm-release\res\interpret.bat
?????文件?????2022134??2015-02-17?22:57??cmm-release\res\interpreter.jar
?????目錄???????????0??2014-12-30?20:30??cmm-release\TestCase\
?????文件??????????12??2015-01-07?09:16??cmm-release\TestCase\中間代碼.cmm
?????文件?????????174??2014-12-31?01:47??cmm-release\TestCase\分支語句.cmm
?????文件?????????119??2015-01-02?17:20??cmm-release\TestCase\變量聲明.cmm
?????文件?????????212??2014-12-31?01:25??cmm-release\TestCase\變量層次.cmm
?????文件?????????126??2015-01-02?17:34??cmm-release\TestCase\表達式計算.cmm
?????文件??????????71??2014-12-29?15:11??cmm-release\TestCase\輸入測試.cmm
?????目錄???????????0??2015-01-05?23:19??cmm-sourcecode\
?????目錄???????????0??2015-02-17?23:04??cmm-sourcecode\cmmjava\
?????文件?????????307??2014-12-17?15:41??cmm-sourcecode\cmmjava\.classpath
?????文件?????????383??2014-11-24?09:51??cmm-sourcecode\cmmjava\.project
?????目錄???????????0??2015-01-02?17:53??cmm-sourcecode\cmmjava\.settings\
?????文件?????????658??2014-11-24?11:05??cmm-sourcecode\cmmjava\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2015-01-02?17:53??cmm-sourcecode\cmmjava\res\
?????文件?????????808??2014-12-21?21:37??cmm-sourcecode\cmmjava\res\ic_open.png
?????文件?????????240??2014-12-21?21:37??cmm-sourcecode\cmmjava\res\ic_run.png
?????文件?????????813??2014-12-21?21:37??cmm-sourcecode\cmmjava\res\ic_save.png
?????文件??????????45??2014-12-26?15:11??cmm-sourcecode\cmmjava\res\interpret.bat
?????文件?????2022126??2015-01-23?16:44??cmm-sourcecode\cmmjava\res\interpreter.jar
?????目錄???????????0??2015-01-02?17:53??cmm-sourcecode\cmmjava\src\
?????目錄???????????0??2015-01-02?17:53??cmm-sourcecode\cmmjava\src\com\
?????目錄???????????0??2015-01-02?17:53??cmm-sourcecode\cmmjava\src\com\shaw\
?????目錄???????????0??2015-01-06?18:04??cmm-sourcecode\cmmjava\src\com\shaw\cmmjava\
............此處省略28個文件信息
- 上一篇:java職業中介管理系統
- 下一篇:用戶管理系統
評論
共有 條評論