This is a command-line tool-kit for EO programming languages, allowing you to compile EO programs, test, dataize, and check for errors.
First, you install npm and Java SE.
Then, you install eolang package, using npm:
npm install -g [email protected]You can also use Homebrew (on macOS):
brew tap objectionary/eoc https://github.com/objectionary/eoc
brew install objectionary/eoc/[email protected]Then, you write a simple EO program in hello.eo file
in the current directory:
# My first object in EO!
[args] > hello
QQ.io.stdout > @
"Hello, world!\n"
Then, you run it:
eoc --easy dataize helloThat's it.
You can also do many other things with eoc commands
(the flow is explained in this blog post):
registerfinds necessary.eofiles and registers them in a JSON catalogassembleparses.eofiles into.xmir, optimizes them, and pulls foreign EO objectstranspileconverts.xmirfiles to the target programming language (Java by default)compileconverts target language sources (e.g.,.java) to binaries (e.g.,.class)linkputs all binaries together into a single executable binarydataizedataizes a single object from the executable binarytestdataizes all visible unit testslintfinds style-related errors in EO and XMIR filesjeo:disassembleconverts Java.classfiles to.xmir(via jeo)jeo:assembleconverts.xmirfiles to Java.classfiles (via jeo)
There are also commands that help manipulate with XMIR and EO sources (the list is not completed, while some of them are not implemented as of yet):
auditinspects all required packages and reports their statusforeigninspects all objects found in the program after theassemblestepsodggenerates.sodgfrom.xmir, further rederable as XML or Dotprintgenerates.eofiles from.xmirfilesgenerate_commentsgenerates.jsonfiles with LLM-generated documentation for.eostructuresdocsgenerates HTML documentation from.xmirfileslatexgenerates.texfiles from.eosourcesfmtformats.eofiles in the source directorytranslateconverts Java/C++/Python/etc. program to EO programdemuremovescageandmemoryobjectsdejumpremovesgotoobjectsinfersuggests object names where it's possible to infer themflattenmoves inner objects to upper level
This command line toolkit simply integrates other tools available in the @objectionary GitHub organization.
First, run npm install. Then, run grunt. All tests should pass.
If you want to run a single test:
npm test -- test/test_mvnw.jsMake your changes and then make a pull request.