5.0.0 • Published 4 years ago

gobstones-cli v5.0.0

Weekly downloads
3
License
ISC
Repository
github
Last release
4 years ago

Build Status

gobstones-cli

CLI for the Gobstones interpreter

Install

# requires node > 6
sudo npm install -g gobstones-cli

Run tests

npm test

Building wrapper

The cli can be wrapped as an executable using nexe: npm install nexe -g.

git clone https://github.com/gobstones/gobstones-cli
cd gobstones-cli
nexe -i src/index.js -o gobstones-cli

Usage

gobstones-cli --help

Run

simple program

echo "program {\n Poner(Rojo)\n }" > /tmp/gobs.gbs
gobstones-cli /tmp/gobs.gbs -f gbb

See the tests for more examples!

Batch run

batch.json:

{
  "code": "procedure Meter(color) { Poner(color) }", // Student's code
  "extraCode": "function a() { return (2) }", // [OPTIONAL] Teacher's code
  "examples": [
    {
      "initialBoard": "GBB/1.0\nsize 4 4\nhead 0 0", // Initial board
      "extraBoard": "GBB/1.0\nsize 4 4\nhead 0 0", // [OPTIONAL] Expected board
      "generatedCode": "procedure Meter(color) { Poner(color) } program { Meter(Azul) }" // [OPTIONAL] Code to be executed, overrides `code`
    },
    {
      "initialBoard": "GBB/1.0\nsize 4 4\nhead 0 0",
      "extraBoard": "GBB/1.0\nsize 4 4\nhead 0 0",
      "generatedCode": "program { Poner(Rojo) Poner(Verde) Poner(Negro) }"
    }
  ]
}
gobstones-cli --batch batch.json
# returns an array with the responses

Generate AST

This tool can also generate the AST of a Gobstones program, in two different fashions:

  • native AST - that is, the AST internally used by the tool to execute programs
  • mulang AST - a simple AST suited to perform code analysys, that can be processed by the Mulang tool

Native AST

echo "program { Poner(Azul) }" | gobstones-cli --ast --from_stdin
{
  "alias": "program",
  "body": [
    {
      "arity": "statement",
      "alias": "Drop",
      "parameters": [
        {
          "value": 0,
          "alias": "Blue"
        }
      ]
    }
  ]
}

Mulang AST

echo "program { Poner(Azul) }" | gobstones-cli --mulang_ast --from_stdin | json_pp
{
   "tag" : "EntryPoint",
   "contents" : [
      "program",
      {
         "tag" : "Application",
         "contents" : [
            {
               "tag" : "Reference",
               "contents" : "Poner"
            },
            [
               {
                  "tag" : "MuSymbol",
                  "contents" : "Azul"
               }
            ]
         ]
      }
   ]
}
5.0.0

4 years ago

4.0.0

5 years ago

3.2.1

5 years ago

3.2.0

5 years ago

3.1.0

5 years ago

3.0.3

5 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.0.0

6 years ago

1.7.0

6 years ago

1.6.0

6 years ago

1.5.0

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.1

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.3

6 years ago