First, you install npm and Java SE.
Then, you install eolang package:
npm install -g eolang@0.23.0
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 dataize hello
That's it.
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 catalogassemble
parses .eo
files into .xmir
, optimizes them,
and pulls foreign EO objectstranspile
converts .xmir
files to the target programming
language (Java by default)compile
converts target language sources (e.g., .java
)
to binaries (e.g., .class
)link
puts all binaries together into a single executable binarydataize
dataizes a single object from the executable binarytest
dataizes all visible unit testsjeo:disassemble
converts Java .class
files to .xmir
(via jeo)jeo:assemble
converts .xmir
files to Java .class
files
(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):
audit
inspects all required packages and reports their statusforeign
inspects all objects found in the program after the assemble
stepsodg
generates .sodg
from .xmir
, further rederable as XML or Dotphi
generates .phi
files from .xmir
filesunphi
generates .xmir
files from .phi
filesprint
generates .eo
files from .phi
filestranslate
converts Java/C++/Python/etc. program to EO programdemu
removes cage
and memory
objectsdejump
removes goto
objectsinfer
suggests object names where it's possible to infer themflatten
moves inner objects to upper levelThis 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.js
Make your changes and then make a pull request.