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

📄 compiler.java

📁 c--词法分析
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                    switch (alt3) {                	case 1 :                	    // Compiler.g:52:41: params+= paramDecl                	    {                	    pushFollow(FOLLOW_paramDecl_in_funDecl133);                	    params=paramDecl();                	    _fsp--;                	    if (list_params==null) list_params=new ArrayList();                	    list_params.add(params.getTemplate());                	    }                	    break;                	default :                	    break loop3;                    }                } while (true);                match(input, Token.UP, null);             }            pushFollow(FOLLOW_block_in_funDecl140);            b=block();            _fsp--;            if (list_b==null) list_b=new ArrayList();            list_b.add(b.getTemplate());            match(input, Token.UP, null);             // TEMPLATE REWRITE            // 52:72: -> function(name=$nameparams=$paramscontent=$b)            {                retval.st = templateLib.getInstanceOf("function",              new STAttrMap().put("name", name).put("params", list_params).put("content", list_b));            }            }            	global=true;            	Main.symbols.exit_frame();        }        catch (RecognitionException re) {            reportError(re);            recover(input,re);        }        finally {        }        return retval;    }    // $ANTLR end funDecl    public static class paramDecl_return extends TreeRuleReturnScope {        public StringTemplate st;        public Object getTemplate() { return st; }        public String toString() { return st==null?null:st.toString(); }    };    // $ANTLR start paramDecl    // Compiler.g:55:1: paramDecl : ( ^( VARPAR TYPE ID ) -> param(name=Main.symbols.get_variable($ID.text).num) | ^( ARRPAR TYPE name= ID ) -> array_param(name=Main.symbols.get_variable($ID.text).num));    public final paramDecl_return paramDecl() throws RecognitionException {        paramDecl_return retval = new paramDecl_return();        retval.start = input.LT(1);        CommonTree name=null;        CommonTree ID1=null;        CommonTree TYPE2=null;        CommonTree TYPE3=null;        try {            // Compiler.g:55:13: ( ^( VARPAR TYPE ID ) -> param(name=Main.symbols.get_variable($ID.text).num) | ^( ARRPAR TYPE name= ID ) -> array_param(name=Main.symbols.get_variable($ID.text).num))            int alt4=2;            int LA4_0 = input.LA(1);            if ( (LA4_0==VARPAR) ) {                alt4=1;            }            else if ( (LA4_0==ARRPAR) ) {                alt4=2;            }            else {                NoViableAltException nvae =                    new NoViableAltException("55:1: paramDecl : ( ^( VARPAR TYPE ID ) -> param(name=Main.symbols.get_variable($ID.text).num) | ^( ARRPAR TYPE name= ID ) -> array_param(name=Main.symbols.get_variable($ID.text).num));", 4, 0, input);                throw nvae;            }            switch (alt4) {                case 1 :                    // Compiler.g:55:13: ^( VARPAR TYPE ID )                    {                    match(input,VARPAR,FOLLOW_VARPAR_in_paramDecl170);                     match(input, Token.DOWN, null);                     TYPE2=(CommonTree)input.LT(1);                    match(input,TYPE,FOLLOW_TYPE_in_paramDecl172);                     ID1=(CommonTree)input.LT(1);                    match(input,ID,FOLLOW_ID_in_paramDecl174);                     match(input, Token.UP, null);                     Main.symbols.declare_variable(ID1.getText(),TYPE2.getText(), true);                    // TEMPLATE REWRITE                    // 55:92: -> param(name=Main.symbols.get_variable($ID.text).num)                    {                        retval.st = templateLib.getInstanceOf("param",                      new STAttrMap().put("name", Main.symbols.get_variable(ID1.getText()).num));                    }                    }                    break;                case 2 :                    // Compiler.g:56:12: ^( ARRPAR TYPE name= ID )                    {                    match(input,ARRPAR,FOLLOW_ARRPAR_in_paramDecl201);                     match(input, Token.DOWN, null);                     TYPE3=(CommonTree)input.LT(1);                    match(input,TYPE,FOLLOW_TYPE_in_paramDecl203);                     name=(CommonTree)input.LT(1);                    match(input,ID,FOLLOW_ID_in_paramDecl207);                     match(input, Token.UP, null);                     Main.symbols.declare_array(name.getText(),TYPE3.getText(),65536);                    // TEMPLATE REWRITE                    // 57:20: -> array_param(name=Main.symbols.get_variable($ID.text).num)                    {                        retval.st = templateLib.getInstanceOf("array_param",                      new STAttrMap().put("name", Main.symbols.get_variable(name.getText()).num));                    }                    }                    break;            }        }        catch (RecognitionException re) {            reportError(re);            recover(input,re);        }        finally {        }        return retval;    }    // $ANTLR end paramDecl    public static class varDecl_return extends TreeRuleReturnScope {        public StringTemplate st;        public Object getTemplate() { return st; }        public String toString() { return st==null?null:st.toString(); }    };    // $ANTLR start varDecl    // Compiler.g:60:1: varDecl : ( ^( VARDEF TYPE name= ID ) -> {global}? declare_global(r=Main.symbols.get_variable($ID.text).num) -> declare(r=Main.symbols.get_variable($ID.text).num) | ^( ARRDEF TYPE name= ID size= INT ) -> {global}? declare_global_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length) -> declare_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length));    public final varDecl_return varDecl() throws RecognitionException {        varDecl_return retval = new varDecl_return();        retval.start = input.LT(1);        CommonTree name=null;        CommonTree size=null;        CommonTree TYPE4=null;        CommonTree TYPE5=null;        try {            // Compiler.g:60:11: ( ^( VARDEF TYPE name= ID ) -> {global}? declare_global(r=Main.symbols.get_variable($ID.text).num) -> declare(r=Main.symbols.get_variable($ID.text).num) | ^( ARRDEF TYPE name= ID size= INT ) -> {global}? declare_global_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length) -> declare_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length))            int alt5=2;            int LA5_0 = input.LA(1);            if ( (LA5_0==VARDEF) ) {                alt5=1;            }            else if ( (LA5_0==ARRDEF) ) {                alt5=2;            }            else {                NoViableAltException nvae =                    new NoViableAltException("60:1: varDecl : ( ^( VARDEF TYPE name= ID ) -> {global}? declare_global(r=Main.symbols.get_variable($ID.text).num) -> declare(r=Main.symbols.get_variable($ID.text).num) | ^( ARRDEF TYPE name= ID size= INT ) -> {global}? declare_global_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length) -> declare_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length));", 5, 0, input);                throw nvae;            }            switch (alt5) {                case 1 :                    // Compiler.g:60:11: ^( VARDEF TYPE name= ID )                    {                    match(input,VARDEF,FOLLOW_VARDEF_in_varDecl250);                     match(input, Token.DOWN, null);                     TYPE4=(CommonTree)input.LT(1);                    match(input,TYPE,FOLLOW_TYPE_in_varDecl252);                     name=(CommonTree)input.LT(1);                    match(input,ID,FOLLOW_ID_in_varDecl256);                     match(input, Token.UP, null);                     Main.symbols.declare_variable(name.getText(),TYPE4.getText(),false);                    // TEMPLATE REWRITE                    // 60:96: -> {global}? declare_global(r=Main.symbols.get_variable($ID.text).num)                    if (global) {                        retval.st = templateLib.getInstanceOf("declare_global",                      new STAttrMap().put("r", Main.symbols.get_variable(name.getText()).num));                    }                    else // 61:14: -> declare(r=Main.symbols.get_variable($ID.text).num)                    {                        retval.st = templateLib.getInstanceOf("declare",                      new STAttrMap().put("r", Main.symbols.get_variable(name.getText()).num));                    }                    }                    break;                case 2 :                    // Compiler.g:62:8: ^( ARRDEF TYPE name= ID size= INT )                    {                    match(input,ARRDEF,FOLLOW_ARRDEF_in_varDecl302);                     match(input, Token.DOWN, null);                     TYPE5=(CommonTree)input.LT(1);                    match(input,TYPE,FOLLOW_TYPE_in_varDecl304);                     name=(CommonTree)input.LT(1);                    match(input,ID,FOLLOW_ID_in_varDecl308);                     size=(CommonTree)input.LT(1);                    match(input,INT,FOLLOW_INT_in_varDecl312);                     match(input, Token.UP, null);                     Main.symbols.declare_array(name.getText(),TYPE5.getText(),65536);                    // TEMPLATE REWRITE                    // 63:18: -> {global}? declare_global_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length)                    if (global) {                        retval.st = templateLib.getInstanceOf("declare_global_array",                      new STAttrMap().put("ref", Main.symbols.get_variable(name.getText()).num).put("size", Main.symbols.get_variable(name.getText()).length));                    }                    else // 64:14: -> declare_array(ref=Main.symbols.get_variable($name.text).numsize=Main.symbols.get_variable($name.text).length)                    {                        retval.st = templateLib.getInstanceOf("declare_array",                      new STAttrMap().put("ref", Main.symbols.get_variable(name.getText()).num).put("size", Main.symbols.get_variable(name.getText()).length));                    }                    }                    break;            }        }        catch (RecognitionException re) {            reportError(re);            recover(input,re);        }        finally {        }        return retval;    }    // $ANTLR end varDecl    public static class block_return extends TreeRuleReturnScope {        public StringTemplate st;        public Object getTemplate() { return st; }        public String toString() { return st==null?null:st.toString(); }    };    // $ANTLR start block    // Compiler.g:67:1: block : ^( BLOCK ^( VARIABLES (vars+= varDecl )* ) ^( STMTS (stmts+= stmt )* ) ) -> block(vars=$varsstmts=$stmts);    public final block_return block() throws RecognitionException {        block_return retval = new block_return();        retval.start = input.LT(1);        List list_vars=null;        List list_stmts=null;        RuleReturnScope vars = null;        RuleReturnScope stmts = null;        List list_stmt=new ArrayList();        List list_varDecl=new ArrayList();        	Main.symbols.enter_block();        try {            // Compiler.g:74:4: ( ^( BLOCK ^( VARIABLES (vars+= varDecl )* ) ^( STMTS (stmts+= stmt )* ) ) -> block(vars=$varsstmts=$stmts))            // Compiler.g:74:4: ^( BLOCK ^( VARIABLES (vars+= varDecl )* ) ^( STMTS (stmts+= stmt )* ) )            {            match(input,BLOCK,FOLLOW_BLOCK_in_block398);             match(input, Token.DOWN, null);             match(input,VARIABLES,FOLLOW_VARIABLES_in_block401); 

⌨️ 快捷键说明

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