// metodo que reconhece o nao terminal identificadores private bool identificadores(ref Identificadores idents) { int guarda = index; Identificador_r ident_r = new Identificador_r(); ident_r.ident1 = new Identificador(); if (identificador(ref ident_r.ident1)) { if (identificador_r(ref ident_r.ident2)) { idents = ident_r; return(true); } } index = guarda; Identificador ident = new Identificador(); if (identificador(ref ident)) { idents = ident; return(true); } return(false); }
// metodo auxiliar para reconhecer a recursividade dos identificadores private bool identificador_r(ref Identificadores idents) { int guarda = index; if (tokens[index].valor.Equals(',')) { index++; Identificador_r ident_r = new Identificador_r(); ident_r.ident1 = new Identificador(); if (identificador(ref ident_r.ident1)) { if (identificador_r(ref ident_r.ident2)) { idents = ident_r; return(true); } } } index = guarda; if (tokens[index].valor.Equals(',')) { index++; Identificador ident = new Identificador(); if (identificador(ref ident)) { idents = ident; return(true); } } return(false); }