A geração de código é o processo de transformar os blocos em um espaço de trabalho em uma string de código que pode ser executada.
A geração de código é extremamente importante, porque permite que os blocos façam coisas, como avaliar expressões aritméticas, mover um personagem por um labirinto ou configurar uma loja on-line.
Não é possível "executar" blocos diretamente. Em vez disso, você gera strings de código e as executa.
Geradores de códigos de idioma
Para gerar o código, você precisa escolher o idioma baseado em texto que quer gerar. Isso ocorre porque cada linguagem tem o próprio gerador de código.
Um gerador de código de linguagem (comumente chamado de gerador de código) é uma classe que processa as regras para gerar código específico de uma determinada linguagem, mas não específico de um bloco individual. Por exemplo, ele processa coisas como formatar comentários, recuar instruções e citar strings.
O Blockly oferece cinco geradores de código integrados:
- JavaScript ES5
- Python 3
- Lua 5.1
- Dart 2
- PHP 7
Se a lista não incluir o idioma para o qual você quer gerar código, crie um gerador de código de idioma personalizado. Para conferir um exemplo simples, consulte o codelab Criar um gerador personalizado, que cria um gerador de código da linguagem JSON. Para conferir um exemplo mais complexo, consulte o gerador de código JavaScript. Você também precisa escrever geradores de código de bloco para todos os blocos integrados que quiser usar.
Geradores de código de bloco
Cada bloco é responsável por gerar o próprio código. Ao criar um bloco, é necessário escrever um gerador de código de bloco separado para cada idioma que você quer oferecer suporte.
Um gerador de código de bloco é uma função que retorna o código desse bloco como
uma string. Por exemplo, um bloco que compara dois números retorna uma string do
formato 'a < b'
, e um bloco que representa uma instrução "if" retorna uma string do
formato '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) { /* ... */ };
Os geradores de código em bloco são chamados por geradores de código de linguagem.
Para mais informações, consulte Geradores de código de bloco.
Gerar e executar código
Seu aplicativo pode gerar códigos a qualquer momento. Por exemplo, ele pode gerar código quando o usuário final clica em um botão ou sempre que o usuário faz uma mudança.
Depois de gerar o código, você precisa descobrir como executá-lo. Decidir como executá-lo é muito específico para cada aplicativo e está fora do escopo do Blockly.
Para mais informações, consulte Gerar e executar código.