elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Agregar else.
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Agregar else.  (Leído 69 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.821


Hackentifiko!


Ver Perfil
Agregar else.
« en: Hoy a las 10:09 »

Tengo un código que genera códigos incompletos que pueden implicar números (que representan acciones que no vienen al caso):
Citar
LV1Code1:
1

LV1Code2:
if {
}

LV1Code3:
do {
} while

LV1Code4:
while {
}

CodeBase:
1

LineaDondeAgregar: 0

LV2Code1:
1
1

LV2Code2:
2
1

LV2Code3:
if {
}
1

LV2Code4:
do {
} while
1

LV2Code5:
while {
}
1

LineaDondeAgregar: 1

LV2Code6:
1
1

LV2Code7:
1
2

LV2Code8:
1
if {
}

LV2Code9:
1
do {
} while

LV2Code10:
1
while {
}

CodeBase:
if {
}

LineaDondeAgregar: 0

LV2Code11:
1
if {
}

LV2Code12:
if {
}
if {
}

LV2Code13:
do {
} while
if {
}

LV2Code14:
while {
}
if {
}

LineaDondeAgregar: 1

LV2Code15:
if {
   1
}

etc, etc

Citar
LV2Code46:
while {
}
while {
}

Quiero que así como se agrega if { y }, do { y } while, etc, se agregue } else {, claro sólo si en el código anteriormente hay un if { pero no su }

La parte relevante del código supongo que es:
Código
  1. // Para agregar if, do, while...
  2. AgregablesLinea1 = ["if {", "do {", "while {"];
  3. AgregablesLinea2 = ["}", "} while", "}"];
  4. NroDeCosaaAgregar = 0;
  5. // Repetir mientras no se haya agregado algo de eso:
  6. // Se cambiará qué se agrega:
  7. while (NroDeCosaaAgregar < 3) {
  8. CodesLV2++;
  9. NombredeNewCode = "LV2Code"+CodesLV2;
  10. // Se copia la base:
  11. set (NombredeNewCode, eval("LV1Code"+CodeBase).slice());
  12. // Insertar en la posición LineaDondeAgregar
  13. // Parámetros: (índice, elementos_a_eliminar, nuevo_elemento)
  14. eval(NombredeNewCode).splice(LineaDondeAgregar, 0, EspaciosRequeridos+AgregablesLinea1[NroDeCosaaAgregar]);
  15. eval(NombredeNewCode).splice(LineaDondeAgregar+1, 0, EspaciosRequeridos+AgregablesLinea2[NroDeCosaaAgregar]);
  16. trace (NombredeNewCode+":");
  17. TextoLineaPorLinea = eval(NombredeNewCode).join("\n");
  18. trace (TextoLineaPorLinea+"\n");
  19. NroDeCosaaAgregar++;
  20. }
  21.  
  22. // Para agregar else sólo cuando hay if no terminado:

Si necesitan algo más avisen.

Lo complicado es describir la condición que debe cumplirse, justamente ahí lo dejé. Puede que tenga que ver con revisar el array que se está formando (eval(NombredeNewCode)) pero no sé exacto cómo, por ejemplo supongamos que fuese
Citar
if {
   while {
   }
   if {
   }
   ACÁ ESTÁ EL CURSOR
}
if {
   2
}

Si pongo:
"Si hay un "if {" antes del cursor"
...entonces no se tiene en cuenta si el if terminó antes del cursor o no

Si pongo:
"Si hay un "if {" antes del cursor y si no hay un } antes del cursor"
...entonces podría ocurrir que el } no sea el final del if sino del while o de otro if.

Quizá tiene que ver con contar la cantidad de ifs pero no alcanza, necesito restar los que terminaron, pero no sé detectarlos porque el } podría ser de ellos o del while.

https://share.google/aimode/zaftDPTTQsG8TNCSI

En otro momento seguiré viendo eso.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Agregar una DLL al php.ini!!!
PHP
Pitoniso 1 3,170 Último mensaje 13 Junio 2007, 16:32 pm
por grubhart
Agregar Lineas a un TXT
Scripting
Nilrac 8 5,268 Último mensaje 14 Junio 2010, 19:00 pm
por leogtz
Agregar sección a .exe
Programación Visual Basic
locot3 1 2,455 Último mensaje 8 Junio 2010, 18:12 pm
por Horricreu
Agregar juegos a ps3
Juegos y Consolas
Remus 0 2,335 Último mensaje 30 Julio 2011, 03:24 am
por Remus
Agregar un .lib a un proyecto
Programación C/C++
Goddamn 0 1,914 Último mensaje 16 Mayo 2018, 04:55 am
por Goddamn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines