📄 error.java.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 + -