La generación de código es el proceso de convertir los bloques de un lugar de trabajo en una cadena de código que se puede ejecutar.
La generación de código es extremadamente importante, ya que permite que tus bloques realmente hagan cosas, como evaluar expresiones aritméticas, mover un personaje por un laberinto o configurar una tienda en línea.
No puedes "ejecutar" bloques directamente. En su lugar, generas cadenas de código y, luego, las ejecutas.
Generadores de códigos de idioma
Para generar código, debes elegir el lenguaje basado en texto que deseas generar. Esto se debe a que cada lenguaje tiene su propio generador de código.
Un generador de código de lenguaje (comúnmente llamado generador de código) es una clase que controla las reglas para generar código específico de un lenguaje determinado, pero no de un bloque individual. Por ejemplo, controla elementos como el formato de los comentarios, las sangrías de las sentencias y las cadenas de comillas.
Blockly proporciona 5 generadores de código integrados:
- JavaScript ES5
- Python 3
- Lua 5.1
- Dart 2
- PHP 7
Si esta lista no incluye el idioma para el que deseas generar código, puedes crear un generador de código de idioma personalizado. Para ver un ejemplo sencillo, consulta el codelab Crea un generador personalizado, que crea un generador de código en lenguaje JSON. Para ver un ejemplo más complejo, consulta el generador de código de JavaScript. Ten en cuenta que también debes escribir generadores de código de bloques para los bloques integrados que quieras usar.
Generadores de código de bloque
Cada bloque es responsable de generar su propio código. Cuando creas un bloque, debes escribir un generador de código de bloque independiente para cada idioma que quieras admitir.
Un generador de código de bloque es una función que muestra el código de ese bloque como una cadena. Por ejemplo, un bloque que compara dos números muestra una cadena del
tipo 'a < b'
y un bloque que representa una sentencia if muestra una cadena del
tipo 'if (...) {\n...\n};\n'
.
import {javascriptGenerator} from 'blockly/javascript';
import {pythonGenerator} from 'blockly/python';
// Write block-code generators for JavaScript and Python.
javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) { /* ... */ };
pythonGenerator.forBlock['my_custom_block'] = function(block, generator) { /* ... */ };
Los generadores de código de lenguaje llaman a los generadores de código de bloques.
Para obtener más información, consulta Generadores de código de bloques.
Genera y ejecuta código
Tu aplicación puede generar código en cualquier momento. Por ejemplo, podría generar código cuando el usuario final hace clic en un botón o cada vez que realiza un cambio.
Después de generar el código, debes descubrir cómo ejecutarlo. Decidir cómo ejecutarlo es muy específico de la aplicación y está fuera del alcance de Blockly.
Para obtener más información, consulta Genera y ejecuta código.