⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 error.java.svn-base

📁 北航编译原理课程设计成果——一个扩充的C0文法编译器
💻 SVN-BASE
字号:
package cn.edu.buaa.scse.liyi.compile.tools;

/**
 * 
 * @author liyi
 */
public class Error
{
	//错误类型定义
	public static final int ERR_NOTRECOGNIZED=0;	//不识别
	public static final int ERR_OVERFLOW=1;			//溢出错误
	public static final int ERR_ABNORMAL=2;			//非正常结束
	public static final int ERR_SEMILACK=3;			//缺分号
	public static final int ERR_PARALACK=4;			//缺参数
	public static final int ERR_RBRALACK=5;			//缺右大括号
	public static final int ERR_SENTLACK=6;			//没有语句
	public static final int ERR_NOTBE=7;			//不是
	public static final int ERR_SAMEFUNC=8;			//函数同名
	public static final int ERR_SAMEGLOBAL=9;		//全局常量或变量同名 
	public static final int ERR_SAMELOCAL=10;		//局部常量或变量或参数同名
	public static final int ERR_RETLACK=11;			//缺return
	public static final int ERR_NOTDEFINE=12;		//使用了未定义变量或函数名
	public static final int ERR_MAINLACK=13;		//缺少main函数
	public static final int ERR_APPEARVOID=14;		//返回类型为void的函数出现在表达式中
	public static final int ERR_OUTLOOP=15;			//break或continue在循环外非法使用
	public static final int ERR_CONSTASSIGN=16;		//不可为常量重新赋值
	public static final int ERR_UNRECEIVE=17;		//在main函数后有未执行的语句块
	
	/**
	 * 错误类型输出
	 * @param error
	 * @param line
	 * @param desc
	 * @return
	 */
	public static String report(int error,int line,char desc)
	{
		switch (error)
		{
			case 0:
				return ("ERROR "+error+": 字符 ‘ "+desc+" ’ 不能被C0文法接受 (在第"+line+"行)");
			case 1:
				return ("ERROR "+error+": 溢出错误 (在第"+line+"行)");
			case 2:
				return ("ERROR "+error+": 非正常结束 (在第"+line+"行)");
			case 3:
				return ("ERROR "+error+": 缺少分号 (在第"+line+"行)");
			case 4:
				return ("ERROR "+error+": 函数 ‘"+desc+"’ 缺少参数声明 (在第"+line+"行)");
			case 5:
				return ("ERROR "+error+": 缺少右大括号 (在第"+line+"行)");
			case 6:
				return ("ERROR "+error+": 不是合法的语句 (在第"+line+"行)");
			case 7:
				return ("ERROR "+error+": 不是正确的"+desc+" (在第"+line+"行)");
			case 8:
				return ("ERROR "+error+": 函数同名 ‘"+desc+"’ (在第"+line+"行)");
			case 9:
				return ("ERROR "+error+": 全局常量或变量同名 ‘ "+desc+" ’ (在第"+line+"行)");
			case 10:
				return ("ERROR "+error+": 局部常量或变量或参数同名 (在第"+line+"行)");
			case 11:
				return ("ERROR "+error+": 缺少返回语句 (在第"+line+"行)");
			case 12:
				return ("ERROR "+error+": 未定义变量或函数名 ‘ "+desc+" ’ (在第"+line+"行)");
			case 13:
				return ("ERROR "+error+": 缺少main函数");
			case 14:
				return ("ERROR "+error+": 返回类型为 ‘void’ 的子函数 ‘"+desc+"’ 出现在表达式中 (在第"+line+"行)");
			case 15:
				return ("ERROR "+error+": "+desc+"在循环外非法使用 (在第"+line+"行)");
			case 16:
				return ("ERROR "+error+": 不可修改常量 ‘"+desc+"’ 的值 (在第"+line+"行)");
			case 17:
				return ("ERROR "+error+": 在main函数后定义的语句块不能被语法分析器接受 (在第"+line+"行)");
			default:
				return "ERROR : 编译中发生未知错误!";
		}
	}
	
	/**
	 * 错误类型输出
	 * @param error
	 * @param line
	 * @param desc
	 * @return
	 */
	public static String report(int error,int line,String desc)
	{
		switch (error)
		{
			case 0:
				return ("ERROR "+error+": 字符 ‘ "+desc+" ’ 不能被C0文法接受 (在第"+line+"行)");
			case 1:
				return ("ERROR "+error+": 溢出错误 (在第"+line+"行)");
			case 2:
				return ("ERROR "+error+": 非正常结束 (在第"+line+"行)");
			case 3:
				return ("ERROR "+error+": 缺少分号 (在第"+line+"行)");
			case 4:
				return ("ERROR "+error+": 函数 ‘"+desc+"’ 缺少参数声明 (在第"+line+"行)");
			case 5:
				return ("ERROR "+error+": 缺少右大括号 (在第"+line+"行)");
			case 6:
				return ("ERROR "+error+": 不是合法的语句 (在第"+line+"行)");
			case 7:
				return ("ERROR "+error+": 不是正确的"+desc+" (在第"+line+"行)");
			case 8:
				return ("ERROR "+error+": 函数同名 ‘"+desc+"’ (在第"+line+"行)");
			case 9:
				return ("ERROR "+error+": 全局常量或变量同名 ‘ "+desc+" ’ (在第"+line+"行)");
			case 10:
				return ("ERROR "+error+": 局部常量或变量或参数同名 (在第"+line+"行)");
			case 11:
				return ("ERROR "+error+": 缺少返回语句 (在第"+line+"行)");
			case 12:
				return ("ERROR "+error+": 未定义变量或函数名 ‘ "+desc+" ’ (在第"+line+"行)");
			case 13:
				return ("ERROR "+error+": 缺少main函数 (在第"+line+"行)");
			case 14:
				return ("ERROR "+error+": 返回类型为 ‘void’ 的子函数 ‘"+desc+"’ 出现在表达式中 (在第"+line+"行)");
			case 15:
				return ("ERROR "+error+": "+desc+"在循环外非法使用 (在第"+line+"行)");
			case 16:
				return ("ERROR "+error+": 不可修改常量 ‘"+desc+"’ 的值 (在第"+line+"行)");
			case 17:
				return ("ERROR "+error+": 在main函数后定义的语句块不能被语法分析器接受 (在第"+line+"行)");
			default:
				return "ERROR : 编译中发生未知错误!";
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -