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

📄 compiler.java

📁 c--词法分析
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            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 + -