资源简介
武汉大学cmm解释器构造实践课程作业,包含词法分析器 语法分析器 语义分析和界面。

代码片段和文件信息
package com.vincent.compiler;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.linkedList;
import com.vincent.model.ConstVar;
import com.vincent.model.Token;
import com.vincent.model.TreeNode;
public class CMMLexer {
// 注释的标志
private boolean isNotation = false;
// 错误个数
private int errorNum = 0;
// 错误信息
private String errorInfo = ““;
// 分析后得到的tokens集合,用于其后的语法及语义分析
private ArrayList tokens = new ArrayList();
// 分析后得到的所有tokens集合,包含注释、空格等
private ArrayList displayTokens = new ArrayList();
// 读取CMM文件文本
private BufferedReader reader;
//文本缓存
private static BufferedReader mBufferedReader;
private static int currentInt;
private static char currentChar;
private static int lineNo;
public boolean isNotation() {
return isNotation;
}
public void setNotation(boolean isNotation) {
this.isNotation = isNotation;
}
public int getErrorNum() {
return errorNum;
}
public void setErrorNum(int errorNum) {
this.errorNum = errorNum;
}
public String getErrorInfo() {
return errorInfo;
}
public void setErrorInfo(String errorInfo) {
this.errorInfo = errorInfo;
}
public ArrayList getTokens() {
return tokens;
}
public void setTokens(ArrayList tokens) {
this.tokens = tokens;
}
public ArrayList getDisplayTokens() {
return displayTokens;
}
public void setDisplayTokens(ArrayList displayTokens) {
this.displayTokens = displayTokens;
}
/**
* 识别字母
*
* @param c
* 要识别的字符
* @return
*/
private static boolean isLetter(char c) {
if ((c >= ‘a‘ && c <= ‘z‘) || (c >= ‘A‘ && c <= ‘Z‘) || c == ‘_‘)
return true;
return false;
}
/**
* 识别数字
*
* @param c
* 要识别的字符
* @return
*/
private static boolean isDigit(char c) {
if (c >= ‘0‘ && c <= ‘9‘)
return true;
return false;
}
/**
* 识别正确的整数:排除多个零的情况
*
* @param input
* 要识别的字符串
* @return 布尔值
*/
private static boolean matchInteger(String input) {
if (input.matches(“^-?\\d+$“) && !input.matches(“^-?0{1}\\d+$“))
return true;
else
return false;
}
/**
* 识别正确的浮点数:排除00.000的情况
*
* @param input
* 要识别的字符串
* @return 布尔值
*/
private static boolean matchReal(String input) {
if (input.matches(“^(-?\\d+)(\\.\\d+)+$“)
&& !input.matches(“^(-?0{2}+)(\\.\\d+)+$“))
return true;
else
return false;
}
/**
* 识别正确的标识符:有字母、数字、下划线组成,必须以字母开头,不能以下划线结尾
*
* @param input
* 要识别的字符串
* @return 布尔值
*/
private static boolean matchID(String input) {
if (input.matches(“^\\w+$“) && !input.endsWith(“_“)
&& input.substring(0 1).matches(“[A-Za-z]“))
return true;
else
return false;
}
/**
* 识别保留字
*
* @param str 要分析的字符串
* @return 布尔值
*/
private static boolean isKey(String str) {
if (str.equals(ConstVar.IF) || str.equals(ConstVar.ELSE)
|| str.equals(ConstVar.WHILE) || str.equals
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-07 03:55 CMMLexer\
文件 397 2018-12-31 12:22 CMMLexer\.classpath
文件 384 2018-12-31 12:22 CMMLexer\.project
目录 0 2019-01-07 03:55 CMMLexer\.settings\
文件 598 2018-12-31 12:22 CMMLexer\.settings\org.eclipse.jdt.core.prefs
目录 0 2019-01-07 03:55 CMMLexer\bin\
目录 0 2019-01-07 03:55 CMMLexer\bin\com\
目录 0 2019-01-07 03:55 CMMLexer\bin\com\vincent\
目录 0 2019-01-07 03:55 CMMLexer\bin\com\vincent\compiler\
文件 15492 2019-01-07 02:26 CMMLexer\bin\com\vincent\compiler\CMMLexer.class
目录 0 2019-01-07 03:55 CMMLexer\bin\com\vincent\main\
文件 1029 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 848 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 869 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 1717 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 831 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 762 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 756 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 1127 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 710 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 1026 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
文件 12885 2019-01-07 02:26 CMMLexer\bin\com\vincent\main\Compilerfr
目录 0 2019-01-07 03:55 CMMLexer\bin\com\vincent\model\
文件 1424 2019-01-07 02:26 CMMLexer\bin\com\vincent\model\ConstVar.class
文件 5433 2019-01-07 02:26 CMMLexer\bin\com\vincent\model\Token.class
文件 2555 2019-01-07 02:26 CMMLexer\bin\com\vincent\model\TokenList.class
文件 1959 2019-01-07 02:26 CMMLexer\bin\com\vincent\model\TreeNode.class
目录 0 2019-01-07 03:55 CMMLexer\bin\com\vincent\util\
文件 6821 2019-01-07 02:26 CMMLexer\bin\com\vincent\util\Codest
文件 826 2019-01-07 02:26 CMMLexer\bin\com\vincent\util\JCloseableTabbedPane$1.class
文件 1055 2019-01-07 02:26 CMMLexer\bin\com\vincent\util\JCloseableTabbedPane$2.class
............此处省略228个文件信息
- 上一篇:基于51单片的恒温箱
- 下一篇:东南大学计算机系信号与系统期末考试卷
相关资源
- SpringBoot+H2+mybatis-plus59130
- 登录注册界面.zip48872
- 数字华容道
- SSM+Shiro+redis实现单点登陆
- jstl-api-1.2和jstl-impl-1.2
- 基于MVC模式的会员管理系统
- 国内一家大型软件公司内部的正规软
- 仿windows记事本
- GUI银行管理系统
- 超市收银系统eclipse access大学课程设计
- 模拟ATM柜员机系统--连接数据库
- A*算法的2D演示(带源码)
- 代码审查表和代码审查实例
- 仿126 网易 163 邮箱 界面
- Tomcat6.x
- 简单的行编辑器
- 扫雷(MVC架构)
- 302 Found
- window ping命令加时间并记录日志
- CMM 中文版高清pdf
- springboot+rabbitmq项目demo(亲测可正常运
- jxbrowser 所有版本通用的破解包
- 2017年-传智播客-张志君老师-SpringBoo
- Blob.js+Export2Excel.js
- 机会路由源代码+仿真工具(SCORP)
- POI中文帮助文档附带api手册.zip
- 2018双十一阿里供应链服务平台讲座
- 原银在线信贷平台概要设计说明书v
- 音频测试文件pcmmp3aacamrg711ag711u等多种
- office_word_api 开发文档
评论
共有 条评论