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

📄 parser.java

📁 Tiger语言编译器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	ErrorMsg.ErrorMsg errorMsg;

	public void report_error(String message,
			com.sun.java_cup.internal.runtime.Symbol tok) {
		errorMsg.error(tok.left, message);
	}

	public parser(Yylex l, ErrorMsg.ErrorMsg err) {
		this();
		errorMsg = err;
		lexer = l;
	}

}

/** Cup generated class to encapsulate user supplied action code. */
class CUP$parser$actions {

	static Symbol.Symbol sym(String s) {
		return Symbol.Symbol.symbol(s);
	}

	private final parser parser;

	/** Constructor */
	CUP$parser$actions(parser parser) {
		this.parser = parser;
	}

	/** Method with the actual generated action code. */
	public final com.sun.java_cup.internal.runtime.Symbol CUP$parser$do_action(
			int CUP$parser$act_num,
			com.sun.java_cup.internal.runtime.lr_parser CUP$parser$parser,
			java.util.Stack CUP$parser$stack, int CUP$parser$top)
			throws java.lang.Exception {
		/* Symbol object for return from actions */
		com.sun.java_cup.internal.runtime.Symbol CUP$parser$result;

		/* select the action based on the action number */
		switch (CUP$parser$act_num) {
		/* . . . . . . . . . . . . . . . . . . . . */
		case 66: // type_fields ::= ID COLON ID COMMA type_fields
		{
			FieldList RESULT = null;
			int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 4)).left;
			int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 4)).right;
			String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 4)).value;
			int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).left;
			int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).right;
			String e2 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).value;
			int e3left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).left;
			int e3right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).right;
			FieldList e3 = (FieldList) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).value;
			RESULT = new FieldList(e1left, sym(e1), sym(e2), e3);
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					14/* type_fields */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 4)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

			/* . . . . . . . . . . . . . . . . . . . . */
		case 65: // type_fields ::= ID COLON ID
		{
			FieldList RESULT = null;
			int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).left;
			int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).right;
			String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).value;
			int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).left;
			int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).right;
			String e2 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).value;
			RESULT = new FieldList(e1left, sym(e1), sym(e2), null);
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					14/* type_fields */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 2)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

			/* . . . . . . . . . . . . . . . . . . . . */
		case 64: // type ::= ARRAY OF ID
		{
			Ty RESULT = null;
			int eleft = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).left;
			int eright = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).right;
			String e = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).value;
			RESULT = new ArrayTy(eleft, sym(e));
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					12/* type */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 2)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

			/* . . . . . . . . . . . . . . . . . . . . */
		case 63: // type ::= LBRACE type_fields RBRACE
		{
			Ty RESULT = null;
			int eleft = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 1)).left;
			int eright = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 1)).right;
			FieldList e = (FieldList) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 1)).value;
			RESULT = new RecordTy(eleft, e);
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					12/* type */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 2)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

			/* . . . . . . . . . . . . . . . . . . . . */
		case 62: // type ::= ID
		{
			Ty RESULT = null;
			int eleft = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).left;
			int eright = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).right;
			String e = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).value;
			RESULT = new NameTy(eleft, sym(e));
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					12/* type */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

			/* . . . . . . . . . . . . . . . . . . . . */
		case 61: // variable_declaration ::= VAR ID COLON ID ASSIGN expr
		{
			VarDec RESULT = null;
			int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 4)).left;
			int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 4)).right;
			String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 4)).value;
			int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).left;
			int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).right;
			String e2 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).value;
			int e3left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).left;
			int e3right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).right;
			Exp e3 = (Exp) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).value;
			RESULT = new VarDec(e1left, sym(e1), new NameTy(e2left, sym(e2)),
					e3);
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					9/* variable_declaration */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 5)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

			/* . . . . . . . . . . . . . . . . . . . . */
		case 60: // variable_declaration ::= VAR ID ASSIGN expr
		{
			VarDec RESULT = null;
			int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).left;
			int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).right;
			String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 2)).value;
			int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).left;
			int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).right;
			Exp e2 = (Exp) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).value;
			RESULT = new VarDec(e1left, sym(e1), null, e2);
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					9/* variable_declaration */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 3)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

			/* . . . . . . . . . . . . . . . . . . . . */
		case 59: // type_declaration ::= TYPE ID EQ type type_declaration
		{
			TypeDec RESULT = null;
			int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 3)).left;
			int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 3)).right;
			String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 3)).value;
			int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 1)).left;
			int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 1)).right;
			Ty e2 = (Ty) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 1)).value;
			int e3left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).left;
			int e3right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).right;
			TypeDec e3 = (TypeDec) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
					.elementAt(CUP$parser$top - 0)).value;
			RESULT = new TypeDec(e1left, sym(e1), e2, e3);
			CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
					13/* type_declaration */,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 4)).left,
					((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
							.elementAt(CUP$parser$top - 0)).right, RESULT);
		}
			return CUP$parser$result;

⌨️ 快捷键说明

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