Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-08-12]

Compartir enlaces, herramientas y otros recursos de Internet que puedan ser útiles para programar en AutoHotkey
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-08-12]

13 May 2018, 21:07



Compilador en español para AutoHotkey v2



Compilador no oficial para la versión 2 de AutoHotkey, totalmente renovado, con nuevas funcionalidades y una interfaz mucho más amigable. Esta versión esta basada en el compilador Ahk2Exe de fincs.
El compilador cuenta con un procesado experimental para reducir y optimizar el código lo mejor posible, si te da error en algún script, por favor, comenta aquí con el error que te muestra el compilador y la parte de código que te está dando problemas, lo intentaré solucionar lo más pronto posible.
Image

Clic para ver más imagenes

Puedes ver todas las nuevas características en el enlace de descarga, como así también la documentación. El compilador es el archivo Ahk2Exe.exe, no depende de ningún archivo externo, todos los demás archivos son solo para la compilación del compilador (Ahk2Exe.ahk). También se incluye una versión de 64-bit Ahk2Exe64.exe, aunque no hay ninguna diferencia con la de 32-bit.




Descarga


Para descargar el compilador dirígete a la pagina de Releases y descarga el archivo Ahk2Exe.exe. La versión por defecto es de 32-Bit.
Página oficial, código fuente y documentación en GitHub: https://github.com/flipeador/Ahk2Exe. En el código fuente se incluyen ambos archivos binarios de 32 y 64-Bit.
Para compilar es necesario tener los archivos .bin en el mismo directorio que el compilador. En ciertos casos puede que necesite ejecutar el compilador como Administrador. No es necesario tener instalado AutoHotkey para poder compilar los Scripts.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
coffee
Posts: 68
Joined: 01 Apr 2017, 07:55

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-05-25]

13 Jun 2018, 00:47

Estoy viendo que tu source no usa "iLib" como los otros compilers para incluir las funciones que se incluyen automaticamente (sin usar includes explicitos).

Es intencional? A lo mejor no consigo la nota en github.

Ejemplo file structure
script.ahk
Lib\ftest.ahk

script.ahk contiene


ftest.ahk contiene

Code: [Select all] [Download] GeSHi © Codebox Plus

ftest()
{
msgbox("Autoincluded")
}


El compiled exe de script.ahk falla, debido a que ftest.ahk no se autoincluyo. Esto es intencional?
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-05-25]

13 Jun 2018, 06:39

Hola coffee,
A que otros compiladores te refieres, nunca he leído sobre esa funcionalidad. Si AHK no lo soporta, ¿Que sentido tiene que el compilador si lo haga?.
Edit: Parece que si existe esa funcionalidad, lo estaré viendo para la proxima actualización, aunque no prometo nada, no lo veo demasiado importante, lo considero de MUY baja prioridad. Gracias.

Aclaro que este compilador no esta terminado, aún faltan muchas cosas por mejorar y corregir, ya he hecho varias correcciones pero aún no actualizo en GitHub (estuve, estoy y estaré ocupado estas semanas como para seguir avanzando). En futuras versiones de AutoHotkey 2 tal vez la directiva #Include pase a trabajar con expresiones, así que habra que corregir eso.


:wave:
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
coffee
Posts: 68
Joined: 01 Apr 2017, 07:55

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-05-25]

13 Jun 2018, 14:18

Flipeador wrote:Hola coffee,
A que otros compiladores te refieres, nunca he leído sobre esa funcionalidad. Si AHK no lo soporta, ¿Que sentido tiene que el compilador si lo haga?.
Edit: Parece que si existe esa funcionalidad, lo estaré viendo para la proxima actualización, aunque no prometo nada, no lo veo demasiado importante, lo considero de MUY baja prioridad. Gracias.

Es parte de autohotkey itself. Aparte de incluir funciones no-explicitas, tambien hace syntax checking del script para asegurarse que sea valido con respecto al ejecutable ahk que se haya usado para escribirla.
En vez de checkear syntax fija a una version de autohotkey en el compiler, Autohotkey.exe por si solo chequea que el script sea valido.
Ejemplo: si alguien escribe un script para una version hypotetica v2a098, y v2a099 cambia algo que no es compatible con v2a098, el compiler validara el script como correcto siempre y cuando el "autohotkey.exe" que este en el parent directory sea v2a098.

Peek a autohotkey source:

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus




Snippet de fincs ahk2exe. Puedes ver el uso de errorstdout y el compiler chequeando el log generado por autohotkey para tirar un mensaje que el syntax es invalido.
Te puedes ahorrar el tiempo/effort de chequear manualmente que el script sea valido y dejar que el ejecutable autohotkey.exe lo haga con ilib para la version que este disponible. Es practicamente una de las razones por la cual el compiler v1 de lexikos y fincs todavia funcionan bien para compilar scripts v2 incluso con el chequeo de syntax, porque Autohotkey.exe es el que lo hace, no el compiler.

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus



Peek al ilib file

Code: [Select all] [Download] GeSHi © Codebox Plus

#Include C:\AHK\Tests\a2e\Lib\
#IncludeAgain C:\AHK\Tests\a2e\Lib\ftest.ahk


Como estas usando non-autohotkey-compatible syntax y corrigiendola con el compiler
Detectar y remover comentarios en el script. Se incluye detección de comentarios en expresiones (actualmente no soportado por AHK), por ejemplo: expr+1 /* comentario */ expr+1 --> expr+1 expr+2; comentarios en línea ; y comentarios en bloque /**/.

La inclusion del ilib file tendria que ocurrir despues de que la correccion de arriba haya occurrido. Posiblemente antes del return en la seccion "; Terminar y devolver el código procesado". Si no Autohotkey.exe devolveria error.



De todas formas dejame ver si logro hacer que funcione en tu version y ahi veras si quieres hacer el merge.
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-05-25]

13 Jun 2018, 14:39

No estoy en casa en este momento, no puedo comprobar nada. Aún así, ¿Cual es la ventaja de esto?, ¿No crees que utilizar Include de forma explicita reduce confusiones?.
De todas formas, cuando esté en casa lo veré bien. Lo de comprobar sintaxis utilizando la versión actual de AHK instalada no lo quise implementar en un principio porque lo veía innecesario, y complicaba el código fuente, el cual trato de mantener lo mas claro y limpio posible, además, para llevar a cabo eso, debo utilizar archivos temporales, que no me termina de convencer. Aún así, lo voy a estar revisado, aún queda MUCHO por mejorar el compilador.
Te cuento que tengo varias mejoras y correcciones ya hechas pendientes, tengo pensado reescribir la función ProcessLine y remover el "objeto cadena", cuando termine con eso actualizaré en GitHub.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
coffee
Posts: 68
Joined: 01 Apr 2017, 07:55

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-05-25]

14 Jun 2018, 05:48

Flipeador wrote:No estoy en casa en este momento, no puedo comprobar nada. Aún así, ¿Cual es la ventaja de esto?, ¿No crees que utilizar Include de forma explicita reduce confusiones?.

Usar include explicito a veces reduce confusion y a veces no, a veces ahorra tiempo y a veces no. Usar include explicito te obliga a incluir todo lo demas que haya en un library file, si necesitas una funcion nada mas, tienes que traer todo. Asi las funciones nunca se ejecuten, el interpreter de autohotkey les hace parsing con syntax checking y todo.
Si tienes una libreria bien modular donde bastantes de las funciones son snippets, o wrappers en sus files individuales, la inclusion manual es tediosa. Hay funciones que de por si merecen ser autoincluidas cuando son bien streamlined y self-explanatory, o cuando quieres proveer una funcionalidad default poniendolas en el standard library (lib directory in autohotkey.exe's directory), en especial WinAPI wrappers around DllCalls.
Classes, funciones co-dependientes o bien complejas, con toda la razon deberian ser incluidas explicitamente. De resto, tener que hacer muchos includes, o tener que embolsar funciones en un solo file, que trae los problemas relaciones de falta de modularidad, pierde la comodidad que esto ofrece.

Esto esta incluido en Autohotkey como una funcionalidad de comodidad (quality of life) y ya tiene tiempo incluido. A la hora de compilar no hay confusion ya que normalmente el compiler incluye todo. En dado caso no seria cuestion de "ventaja de esto" es cuestion de que si alguien desea usar tu compiler, y esta contando con la autoinclusion de funciones simples que esta documentado en el manual de autohotkey, no van a funcionar. Menciono esto ya que lo tienes publicado en tu signature i.e advertisement, asi que me imagino que quisieras que otras personas tambien lo usen. Al menos de Lexikos te haya dicho que va a quitar los autoincludes y iLib, estarias yendo contra funcionalidad documentada.

Flipeador wrote:Lo de comprobar sintaxis utilizando la versión actual de AHK instalada no lo quise implementar en un principio porque lo veía innecesario

No es la version instalada, es la version que este en el directorio arriba de ahk2exe o la que este corriendo ahk2exe (o incluyendo una nueva, la que este en el mismo directory de ahk2exe). No es la que sale en el registro.
El syntax checking es byproduct de usar /iLib para incluir autoincludes, es un bono. La syntax deberia (o tiene) que hacer matching con el interpreter de autohotkey. Autohotkey.exe hace su propio syntax checking during runtime, lo cual garantiza 100% compatibilidad de lo que escribiste, y no tienes forma de deshabilitarlo. Igual va a ir linea por linea revisando todo, asi no haya comentarios o blank lines o todo este incluido. Por lo cual en dado caso es otro "quality of life" a la hora de compilar.

Flipeador wrote:complicaba el código fuente, el cual trato de mantener lo mas claro y limpio posible, además, para llevar a cabo eso, debo utilizar archivos temporales, que no me termina de convencer. Aún así, lo voy a estar revisado, aún queda MUCHO por mejorar el compilador.

Lo de los archivos temporales lo entiendo. Hace unas horas le hice a Lexikos un commit para que permita que los scripts arrancados por StdIn, puedan usar el local library asumido en el original working directory. El behavior actual es que el a_scriptdir se pone en blanco en runtime y no se pueden cargas los libs locales usando StdIn.
Por ejemplo /iLib * te deja leer el output en StdOut, y /ErrorStdOut, te deja usar leer errores por StdErr y usando * como script path y writing a StdIn el script (NewCode variable) te deja correrla sin tener que usar para nada temporary files.

Este es el example snippet de la seccion abajo "; Terminar y devolver el código procesado" en el condicional de if (Tree == ""), que me esta funcionando a mi, sin usar ningun temp file, para que mas o menos tengas una idea. Es largo por los comentarios detallando todo, de por si no ocupa mucho espacio. Cuando tengas algun tiempo lo revisas a ver.
Usando la clase "Subprocess" de cocobelgica que estaria en su propio file en Lib e incluida al final de scriptparser.

Esta usando el pull request https://github.com/Lexikos/AutoHotkey_L/pull/102

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus



Este es subprocess de cocobelgica, de alternativa puede ser una custom version de ExeScript() de Lexikos (en la documentacion de autohotkey)

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus



Si lexikos niega el commit, obviamente ya arruina lo de arriba :lol: . Lo unico que yo implemente la opcion de minificar scripts. Asi como lo tiene javascript y css, que limpian todo el file y hacen un output llamado "file.min.ext", en dado caso "file.min.ahk" con todo ya incluido para redistribution. Un script file un poco mas streamlined sin comentarios ni nada, por lo cual tmp file es el archivo minificado, y tengo no problema en que se genere.
coffee
Posts: 68
Joined: 01 Apr 2017, 07:55

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-05-25]

14 Jun 2018, 16:15

This is just a bug report. En caso de que no lo hayas arreglado todavia.

El compiler no soporta comentarios de este tipo:

Code: [Select all] [Download] GeSHi © Codebox Plus

/**
NOT
SUPPORTED BY
COMPILER
**/

Msgbox("Hello")
Msgbox("Not showing")

El compiler excluye todo bajo el block comment, i.e ninguno de los Msgbox aparecen en el script file que se incluye en el archivo binario. Ese es un block comment valido en Autohotkey.
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-05-25]

14 Jun 2018, 19:47

Muchas gracias por tus comentarios coffee, tienes toda la razón y estoy totalmente de acuerdo contigo. Todo esto se implementará. It would be nice if someone could try the interface in high DPI settings.


:bravo:

El compiler no soporta comentarios de este tipo:

No lo sabía. Lo arreglaré para la próxima actualización, gracias.

Por cierto, me parece interesante tu mezcla de español e inglés (spanglish) jaja :lol:, no tengo ningún problema en que tu escribas en inglés, y sinceramente me facilitaría la lectura.
:wave:
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Ahk2Exe AHKv2 - v1.1.0.5 [2018-06-23]

23 Jun 2018, 20:47

Añadido soporte para inclusión automática de bibliotecas (incluir funciones automáticamente sin la declaración explícita de #Include).
Añadido soporte para detectar errores de sintaxis utilizando la versión actual de AutoHotkey instalada.
Añadida función OutputDebug para envíar una cadena al depurador (si existe) para su visualización.
Añadida nueva directiva ;@Ahk2Exe-AddStream.
Añadido asterisco como prefijo opcional en outfile.exe para crear el directorio si no existe.
Añadido parámetro /nocheck en la línea de comandos para desactivar la comprobación de errores de sintaxis.
Añadido intento de compatibilidad con pantallas con DPI mayor a 96 (alfa).
Añadidos códigos de error: ERROR_DEST_DIR_NOT_FOUND, ERROR_CANNOT_CREATE_DEST_DIR y ERROR_INVALID_SYNTAX.
Reescrita función ProcessLine:
  • Cambios en la detección de comentarios.
  • Cambios generales en la optimización del código.
Arregladas directivas @Ahk2Exe-Define, @Ahk2Exe-UnDef y @Ahk2Exe-If/EndIf/IfDef/IfNDef, ahora funcionan correctamente. Ver ejemplo en la documentación.
Correcciones con waterctrl.dll cuando se utilizaba Ahk2Exe.exe en una ubicación diferente.
Corregido error en la detección de comentarios en bloque reportado por coffee aquí.
Mejorada directiva ;@Ahk2Exe-PostExec.
Revisada detección de secciones de continuación.
Otras optimizaciones de código, mantenimiento trivial y correcciones de errores.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
User avatar
kczx3
Posts: 615
Joined: 06 Oct 2015, 21:39

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-06-23]

09 Jul 2018, 11:27

Hi Flipeador! This looks great!

Would you entertain publishing a version of this in English?
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-06-23]

10 Jul 2018, 09:42

kczx3 wrote:Would you entertain publishing a version of this in English?

Yes, I've thought about that from the beginning, it would be the best, so anyone can understand and use the compiler correctly. At the moment I'm not too interested because version 2 is still in alpha phase (then we could consider that the compiler also). I wanted to keep the Spanish language and add English (we could add more) but I do not know what is the best way to do it, I tried it but the code looked horrible, so I gave it up.
Maybe it's best to put everything in English. Keeping another same project in another language is not a good idea.

kczx3 wrote:Hi Flipeador! This looks great!

Thanks for your comment :) :wave:
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
User avatar
kczx3
Posts: 615
Joined: 06 Oct 2015, 21:39

Re: Ahk2Exe AHKv2 - Compilador en español para AutoHotkey v2 [2018-06-23]

10 Jul 2018, 10:23

Understandable regarding v2 and it being in alpha.

I think the typical way that multiple languages are handled is via i18n. All strings are retrieved from a string table essentially via methods that pass in the select locale or language.
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Ahk2Exe AHKv2 - v1.1.1.6 [2018-07-17]

17 Jul 2018, 13:02

Correcciones en la directiva @Ahk2Exe-PostExec.
Reescrita directiva @Ahk2Exe-AddStream.
Interfaz renovada, se ha incrementado el tamaño de la ventana y se han añadido iconos.
Corrección de posible error en WIN_7-.
Correcciones varias.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
User avatar
Flipeador
Posts: 1004
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Ahk2Exe AHKv2 - v1.11.2.7 [2018-07-28]

28 Jul 2018, 11:22

Añadida directiva ;@Ahk2Exe-Include.
Añadido parámetro LangID en la directiva ;@Ahk2Exe-VerInfo.
Ahora es posible especificar el idioma de las propiedades en la información de la versión.
Añadidas pestañas Información de la versión y Recursos en la interfaz, junto con mejoras varias.
Corrección de error: no se restablecían los identificadores definidos por ;@Ahk2Exe-Define al comenzar una nueva compilación.
Correcciones y mejoras varias.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library

Return to “Otras Utilidades y Recursos”

Who is online

Users browsing this forum: No registered users and 1 guest