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

📄 semanticerror.java

📁 SkipOOMiniJOOL教学语言的编译器前端
💻 JAVA
字号:
package edu.ustc.cs.minijool.parser;

import java.io.PrintStream;

/**
 * 这里提供了程序的基本语义错误方式,希望能对您的实验有所帮助。当然,您也可以
 * 添加新的错误
 */
public class SemanticError {

	private static PrintStream out = System.err;

	// class Position

	// Error messages (the numbers correspond to the PA4 handout)

	public static void error_1_DoubleDeclaration(
		ErrorPosition pos,
		String idName) {
		if (pos != null)
			out.print(pos);
		out.println("Duplicate declaration of identifier " + idName + ".");
	}

	public static void error_2_NoDeclaration(
		ErrorPosition pos,
		String idName) {
		if (pos != null)
			out.print(pos);
		out.println("Identifier " + idName + " not defined.");
	}

	public static void error_3_ProgramClassError(ErrorPosition pos) {
		if (pos != null)
			out.print(pos);
		out.println(
			"Class Program is missing, is multiply defined, or lacks a suitable main method.");
	}

	public static void error_4_CallArguments(
		ErrorPosition pos,
		String idName) {
		if (pos != null)
			out.print(pos);
		out.println("Argument mismatch in a call to method " + idName + ".");
	}

	public static void error_5_MethodResult(ErrorPosition pos, String idName) {
		if (pos != null)
			out.print(pos);
		out.println(
			"Method "
				+ idName
				+ " used in an expression does not return a result value.");
	}

	public static void error_6_VoidReturn(ErrorPosition pos, String idName) {
		if (pos != null)
			out.print(pos);
		out.println("Method " + idName + " must not return a value.");
	}

	public static void error_7_NonVoidReturn(
		ErrorPosition pos,
		String idName) {
		if (pos != null)
			out.print(pos);
		out.println("Method " + idName + " must return a value.");
	}

	public static void error_8_BooleanExpression (ErrorPosition pos) {
		if (pos != null)
			out.print(pos);
		out.println(
			"The conditional expression in if and while statements must be of type boolean.");
	}

	public static void error_9_IntExpression (ErrorPosition pos) {
		if (pos != null)
			out.print(pos);
		out.println(
			"The expression must be of type int.");
	}

	public static void error_10_EqConformingTypes (ErrorPosition pos) {
		if (pos != null)
			out.print(pos);
		out.println(
			"The operands of equality operators must have conforming types.");
	}

	public static void error_11_CondTypes (ErrorPosition pos) {
		if (pos != null)
			out.print(pos);
		out.println(
			"The operands of &&, ||, and ! must be boolean.");
	}

	public static void error_12_AssignmentType (ErrorPosition pos) {
		if (pos != null)
			out.print(pos);
		out.println(
			"The rhs in the assignment must conform to the lhs type.");
	}

	public static void error_13_ReturnEnd (ErrorPosition pos, String idName) {
			if (pos != null)
				out.print(pos);
			out.println(
				"The procedure "+idName+" must end with a return statement.");
		}
}

⌨️ 快捷键说明

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