public void Determina_Lexema() { //guarda la posicion del cursor antes de pintar int pos = rTxtCodigo.SelectionStart; string[] Reservadas = new string[] { ";", "=" }; try { //PONE TODO EL TEXTO EN EL COLOR POR DEFECTO(FORECOLOR) rTxtCodigo.SelectionStart = 0; rTxtCodigo.SelectionLength = rTxtCodigo.TextLength; rTxtCodigo.SelectionColor = rTxtCodigo.ForeColor; foreach (string CLAVE in Reservadas) { //COMPRUEBA CADA UNA DE LAS PALABRAS CLAVE int INDEX = 0; //'INICIA LA BUSQUEDA DE LA CLAVE DESDE LA POSICION 0 DEL TEXTO while (INDEX <= rTxtCodigo.Text.LastIndexOf(CLAVE.ToString())) //'RECORRE TODO EL TEXTO BUSCANDO LA PALABRA CLAVE { rTxtCodigo.Find(CLAVE.ToString(), INDEX, rTxtCodigo.TextLength, RichTextBoxFinds.WholeWord); //'CUANDO LA ENCUENTRA LA SELECCIONA Y.... rTxtCodigo.SelectionColor = Color.Pink; //'... LE PONE EL COLOR INDICADO INDEX = rTxtCodigo.Text.IndexOf(CLAVE, INDEX) + 1; //'AVANZA A LA SIGUIENTE UBICACION DE LA PALABRA CLAVE } } //CUANDO HA TERMINADO DE BUSCAR TODAS LAS PALABRAS VUELVE A LA SITUACION NORMAL (AL FINAL DEL TEXTO) rTxtCodigo.SelectionStart = rTxtCodigo.TextLength; rTxtCodigo.SelectionColor = rTxtCodigo.ForeColor; // establece el valor del cursor donde se encontraba antes de pintar la palabra con color rTxtCodigo.SelectionStart = pos; rTxtCodigo.SelectionLength = 0; } catch (Exception ex) { } try { //agrega las linea for (int i = 0; i < rTxtCodigo.Lines.Length; i++) { enteroo.Inicial(rTxtCodigo.Lines[i], rTxtCodigo); Booleano.Inicio(rTxtCodigo.Lines[i], rTxtCodigo); operadorAritmetico1.Inicial(rTxtCodigo.Lines[i], rTxtCodigo); reservadas.Inicio(rTxtCodigo.Lines[i], rTxtCodigo); Datocadena.Inicial(rTxtCodigo.Lines[i], rTxtCodigo); logico.Inicial(rTxtCodigo.Lines[i], rTxtCodigo); opeRelacion.Inicial(rTxtCodigo.Lines[i], rTxtCodigo); comentario.Inicial(rTxtCodigo.Lines[i], rTxtCodigo, rTxtErrores, i + 1); } } catch { } }