{"id":19838960,"url":"https://github.com/objectionary/dejump","last_synced_at":"2025-05-01T18:31:42.569Z","repository":{"id":40051403,"uuid":"483303722","full_name":"objectionary/dejump","owner":"objectionary","description":"Replaces all GOTO objects in EO program with semantically equivalent ones but without GOTO","archived":false,"fork":false,"pushed_at":"2024-11-05T21:20:34.000Z","size":431,"stargazers_count":10,"open_issues_count":20,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-05T22:26:49.561Z","etag":null,"topics":["eolang","java"],"latest_commit_sha":null,"homepage":"","language":"XSLT","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/objectionary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-19T15:28:08.000Z","updated_at":"2024-05-09T00:14:33.000Z","dependencies_parsed_at":"2023-12-08T10:31:52.907Z","dependency_job_id":"860bae38-c8ea-4d26-8e99-7af4ed899cee","html_url":"https://github.com/objectionary/dejump","commit_stats":{"total_commits":248,"total_committers":5,"mean_commits":49.6,"dds":0.5846774193548387,"last_synced_commit":"24ddfbfdf07004a5bc9380aaafb415da85567da1"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fdejump","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fdejump/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fdejump/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fdejump/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectionary","download_url":"https://codeload.github.com/objectionary/dejump/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224270867,"owners_count":17283867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eolang","java"],"created_at":"2024-11-12T12:19:44.155Z","updated_at":"2025-05-01T18:31:42.562Z","avatar_url":"https://github.com/objectionary.png","language":"XSLT","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg alt=\"logo\" src=\"https://www.objectionary.com/cactus.svg\" height=\"100px\" /\u003e\n\n[![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org)\n[![DevOps By Rultor.com](https://www.rultor.com/b/objectionary/eo)](https://www.rultor.com/p/objectionary/eo)\n[![We recommend IntelliJ IDEA](https://www.elegantobjects.org/intellij-idea.svg)](https://www.jetbrains.com/idea/)\n\n[![mvn-linux](https://github.com/objectionary/dejump/actions/workflows/build.yml/badge.svg)](https://github.com/objectionary/dejump/actions/workflows/build.yml)\n[![PDD status](https://www.0pdd.com/svg?name=objectionary/dejump)](https://www.0pdd.com/p?name=objectionary/dejump)\n[![Maven Central](https://img.shields.io/maven-central/v/org.eolang/dejump.svg)](https://maven-badges.herokuapp.com/maven-central/org.eolang/dejump)\n[![Hits-of-Code](https://hitsofcode.com/github/objectionary/dejump?branch=master)](https://hitsofcode.com/github/objectionary/dejump/view?branch=master)\n[[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/objectionary/dejump/blob/master/LICENSE.txt)\n\nTakes as an input a program in [EO](https://www.eolang.org/) and converts it to a semantically equivalent program, excluding the use of `goto` object.\nThe input data is a program in `.eo`/`.xmir` format, as the output the program returns `.eo`/`.xmir` respectively.\n\n## Usage\nTo use this program, the first step is to download the JAR. Then:\n\n```shell\n$ java -jar target/dejump-1.0-SNAPSHOT-jar-with-dependencies.jar --help\n```\n\nAn application has a CLI (Command line interface), which appears as:\n\n```\nUsage: dejump [-hV] [--eo] \u003cfile\u003e\nReplaces objects GOTO with semantically equivalent\n      \u003cfile\u003e      Absolute path of file to transform\n      --eo        treat input file as EO program (not XMIR)\n  -h, --help      Show this help message and exit.\n  -V, --version   Print version information and exit.\n```\n\nDepending on the input file format, the output file format will be similar.\nBy default, the input file format is `.xmir`.\n\nIn the directory that contains the file passed as a parameter, a new directory `generated` is created, in which, after the program is executed, the transformed file will be located.\n\n## Example\n\nFor the following `.eo`-code, which appears at `temp/example.eo`:\n\n```\n[] \u003e example\n  memory 0 \u003e x\n  goto \u003e @\n    [g]\n      seq \u003e @\n        x.write (x.plus 1)\n        if.\n          x.eq 5\n          g.forward x\n          QQ.io.stdout \"Again\\n\"\n        g.backward\n```\n\nAfter the application is executed, the file `temp/generated/example_transformed.eo` will be created:\n\n```\n[] \u003e example\n  memory 0 \u003e x\n  seq \u003e @\n    flag_fwd.write -1\n    flag_bwd.write 0\n    while. \u003e g_rem!\n      or.\n        flag_fwd.eq -1\n        flag_bwd.eq 0\n      [i]\n        seq \u003e @\n          flag_fwd.write 0\n          flag_bwd.write 1\n          seq\n            x.write (x.plus 1)\n            if.\n              x.eq 5\n              flag_fwd.write 2\n              QQ.io.stdout \"Again\\n\"\n            if.\n              flag_fwd.eq 0\n              flag_bwd.write 0\n              TRUE\n    if.\n      flag_fwd.eq 2\n      x\n      g_rem\n  memory -1 \u003e flag_fwd\n  memory 0 \u003e flag_bwd\n```\n\n## How to Contribute\n\nYou will need JDK 11+ and Maven 3.8+. Clone the repo and run the build like this:\n\n```shell\n$ mvn clean install -Pqulice\n```\n\nThere are `.eo` files in [`src/test/eo/org/eolang/dejump`](https://github.com/objectionary/dejump/tree/master/src/test/eo/org/eolang/dejump), which you can edit or add your own source there. There are the following build steps that process these files:\n\n1. At `generate-test-sources` Maven phase, `gmavenplus-plugin` takes all `.eo` sources and generates new ones. The files that it generates are not just `.eo` programs, but EO tests, which combine the code originally taken from original EO programs with the EO code generated. Thus, for `src/test/eo/org/eolang/dejump/alpha.eo` a modified EO source will be saved into `target/eo-after/process_alpha-test.eo`.\n\n2. At `process-test-sources` phase, `eo-maven-plugin` process generated `.eo` files from `target/eo-after` directory and runs them as junit-tests.\n\nAll generated `.eo` junit-tests are deployed to [gh-pages](https://github.com/objectionary/dejump/tree/gh-pages).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fdejump","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectionary%2Fdejump","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fdejump/lists"}