La génération de code consiste à transformer les blocs d'un espace de travail en une chaîne de code pouvant être exécutée.
La génération de code est extrêmement importante, car c'est elle qui permet à vos blocs de faire des choses, comme évaluer des expressions arithmétiques, déplacer un personnage dans un labyrinthe ou configurer une boutique en ligne.
Vous ne pouvez pas "exécuter" directement des blocs. Vous générez plutôt des chaînes de code, puis les exécutez.
Générateurs de codes de langue
Pour générer du code, vous devez choisir le langage textuel que vous souhaitez générer. En effet, chaque langage dispose de son propre générateur de code.
Un générateur de code de langage (communément appelé générateur de code) est une classe qui gère les règles de génération de code spécifiques à une langue donnée, mais pas à un bloc individuel. Par exemple, il gère des éléments tels que la mise en forme des commentaires, l'indentation des instructions et la mise en citation des chaînes.
Blockly fournit cinq générateurs de code intégrés:
- JavaScript ES5
- Python 3
- Lua 5.1
- Dart 2
- PHP 7
Si cette liste n'inclut pas la langue pour laquelle vous souhaitez générer du code, vous pouvez créer un générateur de code de langue personnalisé. Pour obtenir un exemple simple, consultez l'atelier de programmation Créer un générateur personnalisé, qui crée un générateur de code en langage JSON. Pour un exemple plus complexe, consultez le générateur de code JavaScript. Notez que vous devez également écrire des générateurs de code de bloc pour tous les blocs intégrés que vous souhaitez utiliser.
Générateurs de code de bloc
Chaque bloc est responsable de la génération de son propre code. Lorsque vous créez un bloc, vous devez écrire un générateur de code de bloc distinct pour chaque langue que vous souhaitez prendre en charge.
Un générateur de code de bloc est une fonction qui renvoie le code de ce bloc sous forme de chaîne. Par exemple, un bloc qui compare deux nombres renvoie une chaîne de la forme 'a < b'
, et un bloc qui représente une instruction "si" renvoie une chaîne de la forme '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) { /* ... */ };
Les générateurs de code de bloc sont appelés par les générateurs de code de langage.
Pour en savoir plus, consultez la section Générateurs de code de bloc.
Générer et exécuter du code
Votre application peut générer du code à tout moment. Par exemple, il peut générer du code lorsque l'utilisateur final clique sur un bouton ou chaque fois qu'il apporte une modification.
Une fois le code généré, vous devez trouver un moyen de l'exécuter. La manière de l'exécuter est très spécifique à l'application et n'entre pas dans le champ d'application de Blockly.
Pour en savoir plus, consultez la section Générer et exécuter du code.