// throws RecognitionException [1] // $ANTLR start lista_expr // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:1: lista_expr : ^( LISTAEXPRESIONES (exp+= expresion )* ) -> listaparams(lp=$exp); public lista_expr_return lista_expr() { lista_expr_return retval = new lista_expr_return(); retval.start = input.LT(1); IList list_exp = null; RuleReturnScope exp = null; try { // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:12: ( ^( LISTAEXPRESIONES (exp+= expresion )* ) -> listaparams(lp=$exp)) // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:14: ^( LISTAEXPRESIONES (exp+= expresion )* ) { Match(input,LISTAEXPRESIONES,FOLLOW_LISTAEXPRESIONES_in_lista_expr1009); if ( input.LA(1) == Token.DOWN ) { Match(input, Token.DOWN, null); // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:36: (exp+= expresion )* do { int alt7 = 2; int LA7_0 = input.LA(1); if ( (LA7_0 == MENOSUNARIO || LA7_0 == LLAMADA || (LA7_0 >= IDENT && LA7_0 <= LIT_LOGICO) || (LA7_0 >= 44 && LA7_0 <= 54)) ) { alt7 = 1; } switch (alt7) { case 1 : // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:36: exp+= expresion { PushFollow(FOLLOW_expresion_in_lista_expr1013); exp = expresion(); followingStackPointer_--; if (list_exp == null) list_exp = new ArrayList(); list_exp.Add(exp.Template); } break; default: goto loop7; } } while (true); loop7: ; // Stops C# compiler whinging that label 'loop7' has no statements Match(input, Token.UP, null); } // TEMPLATE REWRITE // 117:50: -> listaparams(lp=$exp) { retval.st = templateLib.GetInstanceOf("listaparams", new STAttrMap().Add("lp", list_exp)); } } } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }
// throws RecognitionException [1] // $ANTLR start lista_expr // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:1: lista_expr : (lista+= expresion ( ',' lista+= expresion )* -> ^( LISTAEXPRESIONES ( $lista)* ) | -> ^( LISTAEXPRESIONES ) ); public lista_expr_return lista_expr() { lista_expr_return retval = new lista_expr_return(); retval.start = input.LT(1); FkvmAST root_0 = null; IToken char_literal97 = null; IList list_lista = null; RuleReturnScope lista = null; FkvmAST char_literal97_tree=null; RewriteRuleTokenStream stream_31 = new RewriteRuleTokenStream(adaptor,"token 31"); RewriteRuleSubtreeStream stream_expresion = new RewriteRuleSubtreeStream(adaptor,"rule expresion"); try { // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:12: (lista+= expresion ( ',' lista+= expresion )* -> ^( LISTAEXPRESIONES ( $lista)* ) | -> ^( LISTAEXPRESIONES ) ) int alt20 = 2; int LA20_0 = input.LA(1); if ( ((LA20_0 >= IDENT && LA20_0 <= LIT_LOGICO) || LA20_0 == 25 || (LA20_0 >= 50 && LA20_0 <= 51) || LA20_0 == 54) ) { alt20 = 1; } else if ( (LA20_0 == 26) ) { alt20 = 2; } else { NoViableAltException nvae_d20s0 = new NoViableAltException("143:1: lista_expr : (lista+= expresion ( ',' lista+= expresion )* -> ^( LISTAEXPRESIONES ( $lista)* ) | -> ^( LISTAEXPRESIONES ) );", 20, 0, input); throw nvae_d20s0; } switch (alt20) { case 1 : // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:14: lista+= expresion ( ',' lista+= expresion )* { PushFollow(FOLLOW_expresion_in_lista_expr851); lista = expresion(); followingStackPointer_--; stream_expresion.Add(lista.Tree); if (list_lista == null) list_lista = new ArrayList(); list_lista.Add(lista); // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:31: ( ',' lista+= expresion )* do { int alt19 = 2; int LA19_0 = input.LA(1); if ( (LA19_0 == 31) ) { alt19 = 1; } switch (alt19) { case 1 : // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:32: ',' lista+= expresion { char_literal97 = (IToken)input.LT(1); Match(input,31,FOLLOW_31_in_lista_expr854); stream_31.Add(char_literal97); PushFollow(FOLLOW_expresion_in_lista_expr858); lista = expresion(); followingStackPointer_--; stream_expresion.Add(lista.Tree); if (list_lista == null) list_lista = new ArrayList(); list_lista.Add(lista); } break; default: goto loop19; } } while (true); loop19: ; // Stops C# compiler whinging that label 'loop19' has no statements // AST REWRITE // elements: lista // token labels: // rule labels: retval // token list labels: // rule list labels: lista retval.tree = root_0; RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null)); RewriteRuleSubtreeStream stream_lista = new RewriteRuleSubtreeStream(adaptor, "token lista", list_lista); root_0 = (FkvmAST)adaptor.GetNilNode(); // 143:55: -> ^( LISTAEXPRESIONES ( $lista)* ) { // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:58: ^( LISTAEXPRESIONES ( $lista)* ) { FkvmAST root_1 = (FkvmAST)adaptor.GetNilNode(); root_1 = (FkvmAST)adaptor.BecomeRoot(adaptor.Create(LISTAEXPRESIONES, "LISTAEXPRESIONES"), root_1); // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:77: ( $lista)* while ( stream_lista.HasNext() ) { adaptor.AddChild(root_1, ((ParserRuleReturnScope)stream_lista.Next()).Tree); } stream_lista.Reset(); adaptor.AddChild(root_0, root_1); } } } break; case 2 : // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:144:15: { // AST REWRITE // elements: // token labels: // rule labels: retval // token list labels: // rule list labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null)); root_0 = (FkvmAST)adaptor.GetNilNode(); // 144:15: -> ^( LISTAEXPRESIONES ) { // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:144:18: ^( LISTAEXPRESIONES ) { FkvmAST root_1 = (FkvmAST)adaptor.GetNilNode(); root_1 = (FkvmAST)adaptor.BecomeRoot(adaptor.Create(LISTAEXPRESIONES, "LISTAEXPRESIONES"), root_1); adaptor.AddChild(root_0, root_1); } } } break; } retval.stop = input.LT(-1); retval.tree = (FkvmAST)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, retval.start, retval.stop); } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }