private bool declaracao_r(ref Declaracoes declr_r) { int guarda = index; Declaracao_r decls = new Declaracao_r(); decls.d1 = new Declaracao(); if (declaracao(ref decls.d1)) { if (declaracao_r(ref decls.d2)) { declr_r = decls; return(true); } } index = guarda; Declaracao decl = new Declaracao(); if (declaracao(ref decl)) { declr_r = decl; return(true); } return(false); }
private bool declaracoes(Declaracoes decls) { // tenta executar => <declaracoes> := <declaracoes> <declaracao> int guarda = index; // armazena o index Declaracao_r decls_r = new Declaracao_r(); decls_r.d1 = new Declaracao(); if (declaracao(ref decls_r.d1)) { if (declaracao_r(ref decls_r.d2)) { decls = decls_r; return(true); } } //executa <declaracoes> := <declaracao> index = guarda; Declaracao decl = new Declaracao(); if (declaracao(ref decl)) { decls = decl; return(true); } return(false); }