Virtual Machine used to represent, run, and maintain the state of programs for Scratch 3.0
Find a file
Tim Mickel ab5c79730c Merge pull request #5 from tmickel/feature/sequencing
Add basics of threads and sequencing
2016-04-29 15:45:50 -04:00
src Updating timer require 2016-04-26 17:06:24 -04:00
test Updating timer test for timeElapsed 2016-04-26 17:03:22 -04:00
.eslintrc WIP 2016-04-18 17:20:30 -04:00
.gitignore Initial commit 2016-04-08 13:10:37 -04:00
.travis.yml Add travis config 2016-04-18 17:22:23 -04:00
LICENSE Initial commit 2016-03-28 12:53:44 -04:00
Makefile All tests passing 2016-04-26 09:54:14 -04:00
package.json All tests passing 2016-04-26 09:54:14 -04:00
README.md AST create / change / move / delete from blockly 2016-04-26 09:49:52 -04:00
TRADEMARK Initial commit 2016-03-28 12:53:44 -04:00
vm.js Recompile 2016-04-29 15:40:36 -04:00
vm.min.js Add thread management and stepping to runtime 2016-04-26 16:50:49 -04:00
webpack.config.js AST create / change / move / delete from blockly 2016-04-26 09:49:52 -04:00

scratch-vm

Build Status

Installation

npm install scratch-vm

Setup

var VirtualMachine = require('scratch-vm');
var vm = new VirtualMachine();

// Block events

// UI events

// Listen for events

Standalone Build

make build
<script src="/path/to/vm.js"></script>
<script>
    var vm = new window.VirtualMachine();
    // do things
</script>

Abstract Syntax Tree

Overview

Anatomy of a Block

{
    "id": "^1r~63Gdl7;Dh?I*OP3_",
    "opcode": "wedo_motorclockwise",
    "next": null,
    "fields": {
        "DURATION": {
            "name": "DURATION",
            "value": null,
            "blocks": {
                "1?P=eV(OiDY3vMk!24Ip": {
                    "id": "1?P=eV(OiDY3vMk!24Ip",
                    "opcode": "math_number",
                    "next": null,
                    "fields": {
                        "NUM": {
                            "name": "NUM",
                            "value": "10",
                            "blocks": null
                        }
                    }
                }
            }
        },
        "SUBSTACK": {
            "name": "SUBSTACK",
            "value": "@1ln(HsUO4!]*2*%BrE|",
            "blocks": null
        }
    }
}

Testing

make test
make coverage
make benchmark