{"id":19031878,"url":"https://github.com/andydevs/jump","last_synced_at":"2026-05-03T11:30:19.452Z","repository":{"id":108735348,"uuid":"69489489","full_name":"andydevs/jump","owner":"andydevs","description":"An experiment in writing interpreted languages in C++","archived":false,"fork":false,"pushed_at":"2017-10-24T16:58:03.000Z","size":209,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-02T04:20:39.457Z","etag":null,"topics":["programming-language","state-machine"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andydevs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2016-09-28T17:56:52.000Z","updated_at":"2020-06-23T21:23:35.000Z","dependencies_parsed_at":"2023-06-04T13:30:28.885Z","dependency_job_id":null,"html_url":"https://github.com/andydevs/jump","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andydevs%2Fjump","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andydevs%2Fjump/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andydevs%2Fjump/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andydevs%2Fjump/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andydevs","download_url":"https://codeload.github.com/andydevs/jump/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240081541,"owners_count":19745066,"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":["programming-language","state-machine"],"created_at":"2024-11-08T21:25:34.675Z","updated_at":"2026-05-03T11:30:19.403Z","avatar_url":"https://github.com/andydevs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jump\r\n\r\nJump is the first programming language that follows the state machine paradigm. State machines have a wide variety of applications including robotics programming, web design, game design, and app development. Jump is an easy, intuitive language for writing state machines for whatever projects you may be working on.\r\n\r\n## Table of Contents\r\n - [The State Machine Paradigm](#the-state-machine-paradigm)\r\n - [The Jump Language](#the-jump-language)\r\n \t- [States](#states)\r\n \t- [Statements](#statements)\r\n \t\t- [Print Statement](#print-statement)\r\n \t\t\t- [Prompt Statement](#prompt-statement)\r\n \t\t- [Read Statement](#read-statement)\r\n \t\t- [To Statement](#to-statement)\r\n \t\t\t- [Loop Statement](#loop-statement)\r\n \t\t\t- [End Statement](#end-statement)\r\n\r\n## The State Machine Paradigm\r\n\r\nThe state machine paradigm consists of designing stackless algorithms as a series of states which transition to each other.\r\n\r\nA state machine language should have these fundamental components:\r\n\r\n- A way to define states\r\n- A conditional transition command that transfers to a given state if a given condition is true\r\n- A defined entry state that is transitioned to at the start of the program\r\n- A defined exit state that is transitioned to to end the program\r\n- A defined default state that is transitioned to by default when a state block reaches end of execution (usually the exit state)\r\n- Global tables of variables, constants, and IO streams that are referenced by all states\r\n- Read and print statements which input and output data\r\n- Data types like strings, numerical values, booleans, etc\r\n- Expressions which operate on data and assign that data to variables\r\n\r\nA simple state machine program can be written in pseudocode as follows:\r\n\r\n\tglobal constant VALUE = 2\r\n\tglobal variable difference = 0\r\n\tglobal variable input\r\n\r\n\tglobal input stream stdin\r\n\r\n\tstate start\r\n\t\tprompt \"Input value\"\r\n\t\tread stdin into input\r\n\t\ttransition to other\r\n\r\n\tstate other\r\n\t\tprint \"I am dog\"\r\n\t\tdifference = value - input\r\n\t\ttransition to final_a if difference \u003e 1\r\n\t\ttransition to final_b if difference == 1\r\n\t\ttransition to final_c otherwise\r\n\r\n\tstate final_a\r\n\t\tprint \"Difference is greater than 1\"\r\n\r\n\tstate final_b\r\n\t\tprint \"Difference is 1\"\r\n\r\n\tstate final_c\r\n\t\tprint \"Difference is less than 1\"\r\n\r\n## The Jump Language\r\n\r\n### States\r\n\r\n\tstate \u003cname\u003e\r\n\r\nA state is defined using the `state` keyword, followed by a name for the state. After which, each line until the next declaration or the end of file is a statement declaration. \r\n\r\n### Statements\r\n\r\n#### Print Statement\r\n\r\n\tprint \u003cvalue\u003e [-\u003e \u003cstream\u003e]\r\n\r\nThe `print` statement prints the given string (along with a newline character) to the output stream. Print statements are defined as follows:\r\n\r\n##### Prompt Statement\r\n\r\n\tprompt \u003cvalue\u003e [-\u003e \u003cstream\u003e]\r\n\r\nA derivative of the `print` statement, the `prompt` statement prints a space instead of a newline after the string. This can be used for prompts to get inputs from the user.\r\n\r\n#### Read Statement\r\n\r\n\tread [\u003cstream\u003e -\u003e] \u003cname\u003e\r\n\r\nThe `read` statement reads a value from the input stream into the given variable.\r\n\r\n#### To Statement\r\n\r\n\tto \u003cname\u003e [if \u003ccond\u003e | otherwise]\r\n\r\nThe `to` statement defines transitions. The `if` clause is an optional condition specifier which will only let the transition execute if the condition is true. The `otherwise` clause always evaluates to true and serves as a decorator for transition blocks.\r\n\r\n##### Loop Statement\r\n\r\n\tloop [if \u003ccond\u003e | otherwise]\r\n\r\nThe `loop` statement is shorthand for a transition to the beginning of the current state.\r\n\r\n##### End Statement\r\n\r\n\tend [if \u003ccond\u003e | otherwise]\r\n\r\nThe `end` statement is shorthand for a transition to the end state","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandydevs%2Fjump","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandydevs%2Fjump","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandydevs%2Fjump/lists"}