Graur / eoc

Command-line toolkit for parsing, compiling, transpiling, optimizing, linking, dataizing, and running EOLANG programs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

logo

grunt

First, you install npm and Java SE.

Then, you install eolang package:

$ npm install -g eolang

Then, you write a simple EO program in hello.eo file in the current directory:

[args...] > hello
  QQ.io.stdout > @
    "Hello, world!\n"

Then, you run it:

$ eoc dataize hello

That's it.

Commands

You can also do many other things with eoc commands (the flow is explained in this blog post):

  • register finds necessary EO files and registers them in a JSON catalog
  • assemble parses EO files into XMIR, optimizes them, and pulls foreign EO objects
  • transpile converts XMIR to target programming language (Java by default)
  • compile converts target language sources to binaries
  • link puts all binaries together into a single executable binary
  • dataize executes the binary and dataizes a single object
  • test executes all visible unit tests

There are also commands that help manipulate with XMIR and EO sources (some of them are not implemented as of yet):

  • audit inspects all required packages and reports their status
  • foreign inspects all objects found in the program after assemble step
  • translate converts Java/C++/Python/etc. program to EO program
  • demu removes cage and memory objects
  • dejump removes goto objects
  • infer suggests object names where it's possible to infer them
  • flatten moves inner objects to upper level

This command line toolkit simply integrates other tools available in @objectionary GitHub organization.

How to Contribute

First, run npm install. Then, run grunt. All tests should pass.

If you want to run a single test:

$ npm test -- test/test_mvnw.js

Make your changes and then make a pull request.

About

Command-line toolkit for parsing, compiling, transpiling, optimizing, linking, dataizing, and running EOLANG programs

License:MIT License


Languages

Language:JavaScript 100.0%