📄 compiler.java
字号:
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 + -