{"id":20000280,"url":"https://github.com/andstor/mush-dsl","last_synced_at":"2025-07-15T14:08:57.482Z","repository":{"id":97129599,"uuid":"305674926","full_name":"andstor/mush-dsl","owner":"andstor","description":":hammer: Simple, intuitive, and powerful DSL inspired by multiple popular programming languages.","archived":false,"fork":false,"pushed_at":"2020-12-13T23:58:56.000Z","size":4609,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-12T12:53:56.858Z","etag":null,"topics":["dsl","java","programming-language","xtend","xtext"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andstor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-10-20T10:41:05.000Z","updated_at":"2024-03-26T22:42:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"e3667e25-4cf6-4e26-8033-863059919f23","html_url":"https://github.com/andstor/mush-dsl","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andstor%2Fmush-dsl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andstor%2Fmush-dsl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andstor%2Fmush-dsl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andstor%2Fmush-dsl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andstor","download_url":"https://codeload.github.com/andstor/mush-dsl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241439469,"owners_count":19963095,"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":["dsl","java","programming-language","xtend","xtext"],"created_at":"2024-11-13T05:14:20.432Z","updated_at":"2025-03-01T23:41:34.753Z","avatar_url":"https://github.com/andstor.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/andstor/mush-dsl\"\u003e\n    \u003cimg src=\"media/logo.svg\" alt=\"Mush logo\" width=\"180\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eMush DSL\u003c/h1\u003e\n\n\u003e Simple, intuitive, and powerful DSL inspired by multiple popular programming languages.\n\nMush is a DSL / Programming Language for writing in a pseudocode like style. The language is created with [Ecore](https://wiki.eclipse.org/Ecore) and [Xtext](https://www.eclipse.org/Xtext/). Mush features a compiler, which compiles Mush code down to Java code. Editing support for Eclipse is also available.\n\n[Examples](tdt4250.mush.examples/) - \n[Documentation](tdt4250.mush.xtext/README.md#language-syntax) - \n[Wiki](https://github.com/andstor/mush-dsl/wiki)\n\n## Table of Contents\n- [Getting Started](#getting-started)\n- [Install](#install)\n- [Rationale](#rationale)\n- [Structure](#structure)\n- [Build](#build)\n- [License](#license)\n\n## Getting Started\nThere are multiple ways to get started using Mush. You may install the plugin using the prebuilt jar files. See the [installation instructions](#install) below. You may also manually build the project(s) and launch a new Eclipse application. See the [build](#build) section.\n\nOnce you have installed Mush into Eclipse, you may create a new mush file. This is a file with the extension name `mush`. For example `HelloWorld.mush`.\n\nThe following Mush code produces a [Hello, world](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program) program:\n\n```\nexecutable HelloWorld()\n    print \"Hello, world!\"\n```\n\nThis compiles down to the following runnable Java code:\n\n```java\npublic class HelloWorld {\n    public static void run() {\n        System.out.print(\"Hello, world!\");\n    }\n    \n    public static void main(final String[] args) {\n        run();\n    }\n}\n```\n\nMush ships with several examples. These are found in the [tdt4250.mush.examples](tdt4250.mush.examples/) project.\n\n## Install\nYou can download the latest archive build [here](https://github.com/andstor/mush-dsl/releases/latest).\n\nThis needs to be manually installed into Eclipse:\n1. Go to your Eclipse's `dropins` directory\n2. Create a subfolder (name doesn't matter)\n3. Uncompress `.zip` file here\n4. Restart Eclipse\n\n## Rationale\n\nMost programming languages has a very crude syntax, including a lot of specific symbols and characters. These are often hard to understand for a person without much programming experience. We therefore wanted to make a language that could be expressed in a more natural style. The result of this was Mush. Mush provides a more pseudocode like syntax, without a lot of syntactical clutter. \n\nDue to the language’s nature, it makes a great candidate for beginners to learn programming. Yet, it is powerful enough to express complex algorithms. Algorithms are often expressed in a pseudo like syntax. Mush would allow implementation of such \"pseudo algorithms\" in a more straight forward way. In particular, we have used the book \"Introduction to Algorithms by Thomas H. Cormen et al., 3rd Edition” as inspiration for the syntax.\n\nXtext provides several features for easy integration with the Java ecosystem, for example Java types. It also provides a ready made grammar called Xbase. However, to get a better unnderstanding of Ecore and Xtext, we have choosen to not make use of such functionallity.\n\n## Structure\n\n[tdt4250.mush.model](tdt4250.mush.model/) - Model for the Mush language.\n\n[tdt4250.mush.xtext](tdt4250.mush.xtext/) - Mush core Xtext project based on [Mush model](tdt4250.mush.model/).\n\n[tdt4250.mush.xtext.tests](tdt4250.mush.xtext.tests/) - Tests for Mush core Xtext project.\n\n[tdt4250.mush.xtext.ide](tdt4250.mush.xtext.ide/) - Mush Xtext IDE project.\n\n[tdt4250.mush.xtext.ui](tdt4250.mush.xtext.ui/) - Mush tests for Xtext UI project.\n\n[tdt4250.mush.xtext.ui.tests](tdt4250.mush.xtext.ui.tests/) - Mush tests for Xtext UI project (TODO).\n\n[tdt4250.mush.examples](tdt4250.mush.examples/) - Mush example project.\n\n## Build\nIn order to build the project(s) you first need to import all the modules in this repository into your Eclipse workspace.\n\nEclipse should build class files automatically. Ensure that the `Project` -\u003e `Build Automatically` is checked.\n\nRight click on the [`GenerateMush.mwe2`](tdt4250.mush.xtext/src/tdt4250/mush/xtext/GenerateMush.mwe2) in the core xtext bundle, and select `Run As` -\u003e `MWE2 Workflow`.\n\nIn order to test the new build, a second Eclipse application should be launched with the Mush bundles installed. This is done by creating a new Eclipse run configuration.\n\nSe the [build](tdt4250.mush.xtext/README.md#build) instructions in the [tdt4250.mush.xtext](tdt4250.mush.xtext) project and the [Running Eclipse Plugin](tdt4250.mush.xtext.ui/README.md#running-eclipse-plugin) section in the [tdt4250.mush.xtext.ui](tdt4250.mush.xtext.ui/) project for more detailed instructions.\n\n## License\n\nCopyright © [André Storhaug](https://github.com/andstor) and [Annabelle Solem Almås](https://github.com/asaAnnabelle)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandstor%2Fmush-dsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandstor%2Fmush-dsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandstor%2Fmush-dsl/lists"}