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

📄 scanner.java

📁 用Java实现的编译器。把源代码编译成SPARC汇编程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		}		while (true) {			if (yy_initial && yy_at_bol) yy_lookahead = YY_BOL;			else yy_lookahead = yy_advance();			yy_next_state = YY_F;			yy_next_state = yy_nxt[yy_rmap[yy_state]][yy_cmap[yy_lookahead]];			if (YY_EOF == yy_lookahead && true == yy_initial) {  return new Symbol(sym.EOF);			}			if (YY_F != yy_next_state) {				yy_state = yy_next_state;				yy_initial = false;				yy_this_accept = yy_acpt[yy_state];				if (YY_NOT_ACCEPT != yy_this_accept) {					yy_last_accept_state = yy_state;					yy_mark_end();				}			}			else {				if (YY_NO_STATE == yy_last_accept_state) {					throw (new Error("Lexical Error: Unmatched Input."));				}				else {					yy_anchor = yy_acpt[yy_last_accept_state];					if (0 != (YY_END & yy_anchor)) {						yy_move_end();					}					yy_to_mark();					switch (yy_last_accept_state) {					case 1:											case -2:						break;					case 2:						{ }					case -3:						break;					case 3:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.ASSIGN, 		(yyline+1),yychar, new String("=")));}					case -4:						break;					case 4:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.COMMA,		(yyline+1),yychar, new String(","))); }					case -5:						break;					case 5:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.SEMI,		(yyline+1),yychar, new String(";"))); }					case -6:						break;					case 6:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.LPAREN,		(yyline+1),yychar, new String("("))); }					case -7:						break;					case 7:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.RPAREN,		(yyline+1),yychar, new String(")"))); }					case -8:						break;					case 8:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.LSQUARE,	(yyline+1),yychar, new String("["))); }					case -9:						break;					case 9:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.RSQUARE,	(yyline+1),yychar, new String("]"))); }					case -10:						break;					case 10:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.LCURLY, 		(yyline+1),yychar, new String("{"))); }					case -11:						break;					case 11:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.RCURLY, 		(yyline+1),yychar, new String("}"))); }					case -12:						break;					case 12:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.LESSTHAN, 	(yyline+1),yychar, new String("<"))); }					case -13:						break;					case 13:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.GREATERTHAN,(yyline+1),yychar, new String(">"))); }					case -14:						break;					case 14:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.PLUS, 		(yyline+1),yychar, new String("+"))); }					case -15:						break;					case 15:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.MINUS, 		(yyline+1),yychar, new String("-"))); }					case -16:						break;					case 16:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.MULT, 		(yyline+1),yychar, new String("*"))); }					case -17:						break;					case 17:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.DIVIDE,	 	(yyline+1),yychar, new String("/"))); }					case -18:						break;					case 18:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.MOD, 		(yyline+1),yychar, new String("%"))); }					case -19:						break;					case 19:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Illegal character: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;	}					case -20:						break;					case 20:						{	if (debug) System.out.println("Token (Indentifier) at line ("+(yyline+1)+"): "+yytext());	lineno = yyline + 1; return (new Symbol(sym.ID,(yyline+1),yychar, new String(yytext())));}					case -21:						break;					case 21:						{	if (debug) System.out.println("Token (Integer Literal) at line ("+(yyline+1)+"): "+yytext());	lineno = yyline + 1; return (new Symbol(sym.INTLIT,(yyline+1),yychar, new String(yytext())));}					case -22:						break;					case 22:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Unclosed char literal: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;}					case -23:						break;					case 23:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Unclosed string literal: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;	}					case -24:						break;					case 24:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.EQUAL, 		(yyline+1),yychar, new String("=="))); }					case -25:						break;					case 25:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.LTOE, 		(yyline+1),yychar, new String("<="))); }					case -26:						break;					case 26:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.SHIFTLEFT,	(yyline+1),yychar, new String("<<"))); }					case -27:						break;					case 27:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.GTOE, 		(yyline+1),yychar, new String(">="))); }					case -28:						break;					case 28:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.SHIFTRIGHT,	(yyline+1),yychar, new String(">>"))); }					case -29:						break;					case 29:						{	//if (debug) System.out.println("Token (Comment line) at line ("+(yyline+1)+"): "+yytext());}					case -30:						break;					case 30:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.NOTEQUAL,	(yyline+1),yychar, new String("!="))); }					case -31:						break;					case 31:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.AND, 		(yyline+1),yychar, new String("&&"))); }					case -32:						break;					case 32:						{ if (debug) System.out.println("Token at line ("+(yyline+1)+"): "+yytext());				   lineno = yyline + 1; return (new Symbol(sym.OR,	 		(yyline+1),yychar, new String("||"))); }					case -33:						break;					case 33:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.IF,		(yyline+1),yychar, new String(yytext())));	}					case -34:						break;					case 34:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Illegal identifier: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;}					case -35:						break;					case 35:						{	String str =  yytext().substring(1,yytext().length() - 1);	if (debug) System.out.println("Token (String Literal) at line ("+(yyline+1)+"): "+str);	lineno = yyline + 1; return (new Symbol(sym.STRINGLIT,(yyline+1),yychar, new String(str)));}					case -36:						break;					case 36:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.NEW,		(yyline+1),yychar, new String(yytext())));	}					case -37:						break;					case 37:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.FOR,		(yyline+1),yychar, new String(yytext())));	}					case -38:						break;					case 38:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.INT,		(yyline+1),yychar, new String(yytext())));	}					case -39:						break;					case 39:						{	String str =  yytext().substring(1,yytext().length() - 1);	if (debug) System.out.println("Token (Char Literal) at line ("+(yyline+1)+"): "+str);	lineno = yyline + 1; return (new Symbol(sym.CHARLIT,(yyline+1),yychar, new Character(str.charAt(0))));}					case -40:						break;					case 40:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.ELSE,		(yyline+1),yychar, new String(yytext())));	}					case -41:						break;					case 41:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.NULL,		(yyline+1),yychar, new String(yytext())));	}					case -42:						break;					case 42:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.BOOLTRUE,(yyline+1),yychar,new Boolean(yytext())));	}					case -43:						break;					case 43:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.THIS,		(yyline+1),yychar, new String(yytext())));	}					case -44:						break;					case 44:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.VOID,		(yyline+1),yychar, new String(yytext())));	}					case -45:						break;					case 45:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Double quotation marks needed for string: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;	}					case -46:						break;					case 46:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.CLASS,	(yyline+1),yychar, new String(yytext())));	}					case -47:						break;					case 47:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.BOOLFALSE,(yyline+1),yychar, new Boolean(yytext())));	}					case -48:						break;					case 48:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.WHILE,	(yyline+1),yychar, new String(yytext())));	}					case -49:						break;					case 49:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.RETURN,	(yyline+1),yychar, new String(yytext())));	}					case -50:						break;					case 50:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.BOOLEAN,	(yyline+1),yychar, new String(yytext())));	}					case -51:						break;					case 51:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.EXTENDS,	(yyline+1),yychar, new String(yytext())));	}					case -52:						break;					case 52:						{		if (debug) System.out.println("Token (Keyword) at line ("+(yyline+1)+"): "+yytext());		lineno = yyline + 1; return (new Symbol(sym.CALLOUT,	(yyline+1),yychar, new String(yytext())));	}					case -53:						break;					case 54:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Illegal character: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;	}					case -54:						break;					case 55:						{	if (debug) System.out.println("Token (Indentifier) at line ("+(yyline+1)+"): "+yytext());	lineno = yyline + 1; return (new Symbol(sym.ID,(yyline+1),yychar, new String(yytext())));}					case -55:						break;					case 56:						{	if (debug) System.out.println("Token (Integer Literal) at line ("+(yyline+1)+"): "+yytext());	lineno = yyline + 1; return (new Symbol(sym.INTLIT,(yyline+1),yychar, new String(yytext())));}					case -56:						break;					case 57:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Unclosed char literal: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;}					case -57:						break;					case 58:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Illegal identifier: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;}					case -58:						break;					case 60:						{		System.err.println(parser.infile + ": "+ (yyline+1) +": Lexical error: Illegal character: '"+yytext());		ClassProgram.numOfError++;		ClassProgram.semanticCheck=false;	}					case -59:						break;					case 61:						{	if (debug) System.out.println("Token (Indentifier) at line ("+(yyline+1)+"): "+yytext());	lineno = yyline + 1; return (new Symbol(sym.ID,(yyline+1),yychar, new String(yytext())));

⌨️ 快捷键说明

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