Bei der Codegenerierung werden die Blöcke in einem Arbeitsbereich in einen ausführbaren Codestring umgewandelt.
Die Codegenerierung ist äußerst wichtig, da sie es Ihren Blöcken ermöglicht, etwas zu tun, z. B. arithmetische Ausdrücke zu berechnen, einen Charakter durch ein Labyrinth zu bewegen oder einen Onlineshop zu konfigurieren.
Blöcke können nicht direkt ausgeführt werden. Stattdessen generieren Sie Codestrings und führen diese dann aus.
Sprachcode-Generatoren
Um Code zu generieren, müssen Sie auswählen, welche textbasierte Sprache Sie generieren möchten. Das liegt daran, dass jede Sprache einen eigenen Codegenerator hat.
Ein Sprachcodegenerator (allgemein als Codegenerator bezeichnet) ist eine Klasse, die die Regeln für die Generierung von Code verarbeitet, die für eine bestimmte Sprache spezifisch sind, aber nicht für einen einzelnen Block. So werden beispielsweise Kommentare formatiert, Anweisungen eingerückt und Strings zitiert.
Blockly bietet fünf integrierte Codegeneratoren:
- JavaScript ES5
- Python 3
- Lua 5.1
- Dart 2
- PHP 7
Wenn diese Liste nicht die Sprache enthält, für die Sie Code generieren möchten, können Sie einen benutzerdefinierten Sprachcodegenerator erstellen. Ein einfaches Beispiel finden Sie im Codelab Benutzerdefinierten Generator erstellen, in dem ein Codegenerator für die JSON-Sprache erstellt wird. Ein komplexeres Beispiel finden Sie im JavaScript-Codegenerator. Beachten Sie, dass Sie auch Block-Codegeneratoren für alle integrierten Blöcke schreiben müssen, die Sie verwenden möchten.
Block-Code-Generatoren
Jeder Block ist für die Generierung seines eigenen Codes verantwortlich. Wenn Sie einen Block erstellen, müssen Sie für jede Sprache, die Sie unterstützen möchten, einen separaten Blockcodegenerator schreiben.
Ein Block-Code-Generator ist eine Funktion, die den Code für diesen Block als String zurückgibt. Ein Block, der zwei Zahlen vergleicht, gibt beispielsweise einen String der Form 'a < b'
zurück. Ein Block, der eine Wenn-Bedingung darstellt, gibt einen String der Form 'if (...) {\n...\n};\n'
zurück.
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) { /* ... */ };
Blockcodegeneratoren werden von Sprachcodegeneratoren aufgerufen.
Weitere Informationen finden Sie unter Block-Codegeneratoren.
Code generieren und ausführen
Ihre Anwendung kann jederzeit Code generieren. So kann beispielsweise Code generiert werden, wenn der Endnutzer auf eine Schaltfläche klickt oder jedes Mal, wenn er eine Änderung vornimmt.
Nachdem Sie den Code generiert haben, müssen Sie herausfinden, wie Sie ihn ausführen. Die Entscheidung, wie sie ausgeführt werden soll, ist sehr anwendungsspezifisch und fällt nicht in den Zuständigkeitsbereich von Blockly.
Weitere Informationen finden Sie unter Code generieren und ausführen.