📄 compiler.java
字号:
if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // Compiler.g:74:24: (vars+= varDecl )* loop6: do { int alt6=2; int LA6_0 = input.LA(1); if ( ((LA6_0>=VARDEF && LA6_0<=ARRDEF)) ) { alt6=1; } switch (alt6) { case 1 : // Compiler.g:74:25: vars+= varDecl { pushFollow(FOLLOW_varDecl_in_block406); vars=varDecl(); _fsp--; if (list_vars==null) list_vars=new ArrayList(); list_vars.add(vars.getTemplate()); } break; default : break loop6; } } while (true); match(input, Token.UP, null); } match(input,STMTS,FOLLOW_STMTS_in_block412); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // Compiler.g:74:50: (stmts+= stmt )* loop7: do { int alt7=2; int LA7_0 = input.LA(1); if ( (LA7_0==NOP||(LA7_0>=BLOCK && LA7_0<=ASSIGN)||(LA7_0>=CALL && LA7_0<=NEGATE)||(LA7_0>=NUM && LA7_0<=VAR)||(LA7_0>=RETURN && LA7_0<=IF)||(LA7_0>=63 && LA7_0<=77)) ) { alt7=1; } switch (alt7) { case 1 : // Compiler.g:74:51: stmts+= stmt { pushFollow(FOLLOW_stmt_in_block417); stmts=stmt(); _fsp--; if (list_stmts==null) list_stmts=new ArrayList(); list_stmts.add(stmts.getTemplate()); } break; default : break loop7; } } while (true); match(input, Token.UP, null); } match(input, Token.UP, null); // TEMPLATE REWRITE // 74:67: -> block(vars=$varsstmts=$stmts) { retval.st = templateLib.getInstanceOf("block", new STAttrMap().put("vars", list_vars).put("stmts", list_stmts)); } } Main.symbols.exit_block(); } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end block public static class stmt_return extends TreeRuleReturnScope { public StringTemplate st; public Object getTemplate() { return st; } public String toString() { return st==null?null:st.toString(); } }; // $ANTLR start stmt // Compiler.g:77:1: stmt : (a= expr -> item(st=$a.sts=\"Start Expression\"e=\"End Expression\") | ^( RETURN expr ) -> return(expr=$expr.stref=$expr.ref) | ^( READ ID ) -> read(ret=Main.symbols.get_variable($ID.text).numtmp1=Main.symbols.next_var()tmp2=Main.symbols.next_var()tmp3=Main.symbols.next_var()tmp4=Main.symbols.next_var()tmp5=Main.symbols.next_var()) | ^( WRITE expr ) -> write(expr=$expr.stref=$expr.refv1=Main.symbols.next_var()v2=Main.symbols.next_var()) | WRITELN -> writeln(v=Main.symbols.next_var()) | BREAK -> break(lab=$whileStmt::breaked) | ifStmt -> item(st=$ifStmt.sts=\"Start If Statement\"e=\"End If Statement\") | whileStmt -> item(st=$whileStmt.sts=\"Start While Statement\"e=\"End While Statement\") | block -> item(st=$block.sts=\"Start Block\"e=\"End Block\") | NOP ->); public final stmt_return stmt() throws RecognitionException { stmt_return retval = new stmt_return(); retval.start = input.LT(1); CommonTree ID7=null; expr_return a = null; expr_return expr6 = null; expr_return expr8 = null; ifStmt_return ifStmt9 = null; whileStmt_return whileStmt10 = null; block_return block11 = null; List list_ifStmt=new ArrayList(); List list_expr=new ArrayList(); List list_whileStmt=new ArrayList(); List list_block=new ArrayList(); try { // Compiler.g:77:8: (a= expr -> item(st=$a.sts=\"Start Expression\"e=\"End Expression\") | ^( RETURN expr ) -> return(expr=$expr.stref=$expr.ref) | ^( READ ID ) -> read(ret=Main.symbols.get_variable($ID.text).numtmp1=Main.symbols.next_var()tmp2=Main.symbols.next_var()tmp3=Main.symbols.next_var()tmp4=Main.symbols.next_var()tmp5=Main.symbols.next_var()) | ^( WRITE expr ) -> write(expr=$expr.stref=$expr.refv1=Main.symbols.next_var()v2=Main.symbols.next_var()) | WRITELN -> writeln(v=Main.symbols.next_var()) | BREAK -> break(lab=$whileStmt::breaked) | ifStmt -> item(st=$ifStmt.sts=\"Start If Statement\"e=\"End If Statement\") | whileStmt -> item(st=$whileStmt.sts=\"Start While Statement\"e=\"End While Statement\") | block -> item(st=$block.sts=\"Start Block\"e=\"End Block\") | NOP ->) int alt8=10; switch ( input.LA(1) ) { case ASSIGN: case CALL: case INDEX: case NOT: case NEGATE: case NUM: case VAR: case 63: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 73: case 74: case 75: case 76: case 77: { alt8=1; } break; case RETURN: { alt8=2; } break; case READ: { alt8=3; } break; case WRITE: { alt8=4; } break; case WRITELN: { alt8=5; } break; case BREAK: { alt8=6; } break; case IF: { alt8=7; } break; case WHILE: { alt8=8; } break; case BLOCK: { alt8=9; } break; case NOP: { alt8=10; } break; default: NoViableAltException nvae = new NoViableAltException("77:1: stmt : (a= expr -> item(st=$a.sts=\"Start Expression\"e=\"End Expression\") | ^( RETURN expr ) -> return(expr=$expr.stref=$expr.ref) | ^( READ ID ) -> read(ret=Main.symbols.get_variable($ID.text).numtmp1=Main.symbols.next_var()tmp2=Main.symbols.next_var()tmp3=Main.symbols.next_var()tmp4=Main.symbols.next_var()tmp5=Main.symbols.next_var()) | ^( WRITE expr ) -> write(expr=$expr.stref=$expr.refv1=Main.symbols.next_var()v2=Main.symbols.next_var()) | WRITELN -> writeln(v=Main.symbols.next_var()) | BREAK -> break(lab=$whileStmt::breaked) | ifStmt -> item(st=$ifStmt.sts=\"Start If Statement\"e=\"End If Statement\") | whileStmt -> item(st=$whileStmt.sts=\"Start While Statement\"e=\"End While Statement\") | block -> item(st=$block.sts=\"Start Block\"e=\"End Block\") | NOP ->);", 8, 0, input); throw nvae; } switch (alt8) { case 1 : // Compiler.g:77:8: a= expr { pushFollow(FOLLOW_expr_in_stmt448); a=expr(); _fsp--; // TEMPLATE REWRITE // 77:17: -> item(st=$a.sts=\"Start Expression\"e=\"End Expression\") { retval.st = templateLib.getInstanceOf("item", new STAttrMap().put("st", a.st).put("s", "Start Expression").put("e", "End Expression")); } } break; case 2 : // Compiler.g:78:5: ^( RETURN expr ) { match(input,RETURN,FOLLOW_RETURN_in_stmt474); match(input, Token.DOWN, null); pushFollow(FOLLOW_expr_in_stmt476); expr6=expr(); _fsp--; match(input, Token.UP, null); // TEMPLATE REWRITE // 78:20: -> return(expr=$expr.stref=$expr.ref) { retval.st = templateLib.getInstanceOf("return", new STAttrMap().put("expr", expr6.st).put("ref", expr6.ref)); } } break; case 3 : // Compiler.g:79:5: ^( READ ID ) { match(input,READ,FOLLOW_READ_in_stmt500); match(input, Token.DOWN, null); ID7=(CommonTree)input.LT(1); match(input,ID,FOLLOW_ID_in_stmt502); match(input, Token.UP, null); // TEMPLATE REWRITE // 79:17: -> read(ret=Main.symbols.get_variable($ID.text).numtmp1=Main.symbols.next_var()tmp2=Main.symbols.next_var()tmp3=Main.symbols.next_var()tmp4=Main.symbols.next_var()tmp5=Main.symbols.next_var()) { retval.st = templateLib.getInstanceOf("read", new STAttrMap().put("ret", Main.symbols.get_variable(ID7.getText()).num).put("tmp1", Main.symbols.next_var()).put("tmp2", Main.symbols.next_var()).put("tmp3", Main.symbols.next_var()).put("tmp4", Main.symbols.next_var()).put("tmp5", Main.symbols.next_var())); } } break; case 4 : // Compiler.g:80:5: ^( WRITE expr ) { match(input,WRITE,FOLLOW_WRITE_in_stmt555); match(input, Token.DOWN, null); pushFollow(FOLLOW_expr_in_stmt557); expr8=expr(); _fsp--; match(input, Token.UP, null); // TEMPLATE REWRITE // 80:20: -> write(expr=$expr.stref=$expr.refv1=Main.symbols.next_var()v2=Main.symbols.next_var()) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -