Generazione del codice

La generazione di codice è il processo di trasformazione dei blocchi in uno spazio di lavoro in una stringa di codice eseguibile.

La generazione di codice è estremamente importante, perché consente ai blocchi di fare effettivamente delle cose, ad esempio valutare espressioni aritmetiche, spostare un personaggio in un labirinto o configurare un negozio online.

Non puoi "eseguire" i blocchi direttamente. ma generi stringhe di codice e poi le esecuti.

Generatori di codici lingua

Per generare il codice, devi scegliere il linguaggio basato su testo che vuoi generare. Questo perché ogni linguaggio ha il proprio generatore di codice.

Un generatore di codice per lingua (comunemente chiamato generatore di codice) è una classe che gestisce le regole per la generazione di codice specifiche per un determinato linguaggio, ma non per un singolo blocco. Ad esempio, gestisce elementi come la formattazione dei commenti, il rientro delle istruzioni e le stringhe tra virgolette.

Blockly fornisce 5 generatori di codice integrati:

  • JavaScript ES5
  • Python 3
  • Lua 5.1
  • Dart 2
  • PHP 7

Se questo elenco non include la lingua per cui vuoi generare il codice, puoi creare un generatore di codici lingua personalizzato. Per un esempio semplice, consulta il codelab Creare un generatore personalizzato, che crea un generatore di codice in linguaggio JSON. Per un esempio più complesso, consulta il generatore di codice JavaScript. Tieni presente che devi anche scrivere generatori di codice per tutti i blocchi integrati che vuoi utilizzare.

Generatori di codice blocco

Ogni blocco è responsabile della generazione del proprio codice. Quando crei un blocco, devi scrivere un generatore di codice blocco separato per ogni lingua che vuoi supportare.

Un generatore di codice blocco è una funzione che restituisce il codice per quel blocco come una stringa. Ad esempio, un blocco che confronta due numeri restituisce una stringa del tipo 'a < b' e un blocco che rappresenta un'istruzione if restituisce una stringa 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) { /* ... */ };

I generatori di codice blocchi vengono chiamati dai generatori di codice lingua.

Per ulteriori informazioni, consulta la sezione Generatori di codice bloccato.

Generare ed eseguire codice

La tua applicazione può generare codice in qualsiasi momento. Ad esempio, potrebbe generare codice quando l'utente finale fa clic su un pulsante o ogni volta che apporta una modifica.

Dopo aver generato il codice, devi capire come eseguirlo. Decidere come eseguirlo è molto specifico per l'applicazione e non rientra nell'ambito di Blockly.

Per ulteriori informazioni, vedi Generare ed eseguire codice.