{"id":20515927,"url":"https://github.com/mohammad-al-refai/jsx-language","last_synced_at":"2026-06-01T03:31:49.953Z","repository":{"id":234552167,"uuid":"784903161","full_name":"Mohammad-Al-Refai/jsx-language","owner":"Mohammad-Al-Refai","description":"Stack-oriented programming language that feels like JSX","archived":false,"fork":false,"pushed_at":"2024-08-23T08:37:10.000Z","size":108,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T23:25:25.291Z","etag":null,"topics":["go","programming-language"],"latest_commit_sha":null,"homepage":"","language":"Go","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/Mohammad-Al-Refai.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":"2024-04-10T19:40:36.000Z","updated_at":"2024-08-23T08:31:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"13ec7d9c-cfe3-4cb1-b460-79205d2df9cf","html_url":"https://github.com/Mohammad-Al-Refai/jsx-language","commit_stats":null,"previous_names":["mohammad-al-refai/sogla","mohammad-al-refai/jsx-language"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Mohammad-Al-Refai/jsx-language","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammad-Al-Refai%2Fjsx-language","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammad-Al-Refai%2Fjsx-language/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammad-Al-Refai%2Fjsx-language/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammad-Al-Refai%2Fjsx-language/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mohammad-Al-Refai","download_url":"https://codeload.github.com/Mohammad-Al-Refai/jsx-language/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammad-Al-Refai%2Fjsx-language/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33759178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["go","programming-language"],"created_at":"2024-11-15T21:25:32.399Z","updated_at":"2026-06-01T03:31:49.933Z","avatar_url":"https://github.com/Mohammad-Al-Refai.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jsx-language\n\n## Overview\n\n\nHave you ever wondered how programming languages actually work under the hood? Do you believe that languages are just magical entities?\n\n\nIn this project, I set out to create a simple stack-oriented programming language and its syntax looks like JSX (because I love react js 😊) and all of that using the Go programming language with 0 dependencies. Inspired by my curiosity and desire to understand the inner workings of languages, this project served as an educational endeavor to demystify the magic behind programming languages, even it just an interpreted language not a compiled language but it worth it.\n\n## Getting Started\nDownload jsx-language from the [releases](https://github.com/Mohammad-Al-Refai/jsx-language/releases) then create a file and run:\n\n```bash\n./jsx-language [file path]\n```\n\n### How it works?\n![image](https://github.com/Mohammad-Al-Refai/ht/assets/55941955/8afca54b-c5d1-4e18-afd0-b16b339c9e4e)\n\n### Comment\nstart with `#`\n\n### Variables\n\nMath operations: `+` \u0026 `-` \u0026 `*` \u0026 `/` \u0026 `%`\n\nSupported values:\n\n- `string`\n\n- `number`\n\n- `array`\n\n- `boolean`\n\n- object member call\n\n\u003c/br\u003e\n\n```jsx\n\u003cApp\u003e\n   \u003cLet id={\"name\"} value={\"Mohammad\"}/\u003e\n\u003cApp/\u003e\n\n\u003cApp\u003e\n   \u003cLet id={\"num\"} value={1 1 +}/\u003e\n\u003cApp/\u003e\n\n\u003cApp\u003e\n   \u003cLet id={\"data\"} value={[1,\"hi\",false]}/\u003e\n\u003cApp/\u003e\n\n\u003cApp\u003e\n   \u003cLet id={\"data\"} value={[1,\"hi\",false]}/\u003e\n   \u003cLet id={\"dataLength\"} value={data array.length()}/\u003e\n\u003cApp/\u003e\n```\n\n## If statement\n\nLogical operators:\n\n- `==`\n\n- `!=`\n\n- `greater` like `\u003e`\n\n- `smaller` like `\u003c`\n\n```jsx\n\u003cApp\u003e\n   \u003cIf condition={1 2 greater}\u003e\n    ...\n    \u003cIf/\u003e\n\u003cApp/\u003e\n```\n\n## Loop\n\n```jsx\n\u003cApp\u003e\n   \u003cFor var={\"i\"} from={0} to={10}\u003e\n     \u003cPrint value={i}/\u003e\n    \u003cFor/\u003e\n\u003cApp/\u003e\n```\n\n### Break\n\n```jsx\n\u003cApp\u003e\n   \u003cFor var={\"i\"} from={0} to={10}\u003e\n      \u003cIf condition={i 2 greater}\u003e\n         \u003cPrint value={i}\u003e\n         \u003cBreak/\u003e\n      \u003cIf/\u003e\n    \u003cFor/\u003e\n\u003cApp/\u003e\n```\n\n### Continue\n\n```jsx\n\u003cApp\u003e\n   \u003cFor var={\"i\"} from={0} to={10}\u003e\n      \u003cIf condition={i 2 ==}\u003e\n         \u003cContinue/\u003e\n      \u003cIf/\u003e\n      \u003cPrint value={i}\u003e\n    \u003cFor/\u003e\n\u003cApp/\u003e\n```\n\n## Function\n\n```jsx\n\u003cApp\u003e\n   \u003cFunction id={\"Sum\"} args={\"x\",\"y\"}\u003e\n        \u003cPrint value={x y +}\u003e\n    \u003cFunction/\u003e\n\u003cApp/\u003e\n```\n\n## Function call\n\n```jsx\n\u003cApp\u003e\n  \u003cSum x={1} y={2}/\u003e\n\u003cApp/\u003e\n```\n\n## Array\n\n```jsx\n// [array] array.length()\n\n\u003cApp\u003e\n   \u003cLet id={\"data\"} value={[1,2,\"hello\",false,423]}/\u003e\n   \u003cPrint value={data array.length()}/\u003e\n\u003cApp/\u003e\n```\n\n```jsx\n// [array] [index] array.at()\n\n\u003cApp\u003e\n   \u003cLet id={\"data\"} value={[1,2,\"hello\",false,423]}/\u003e\n   \u003cPrint value={0 data array.at()}/\u003e\n\u003cApp/\u003e\n```\n\n```jsx\n// [array] [value] array.push()\n\n\u003cApp\u003e\n   \u003cLet id={\"data\"} value={[]}\u003e\n   \u003cPrint value={\"hello\" data array.push()}/\u003e\n\u003cApp/\u003e\n```\n\n```jsx\n// [array] array.pop()\n\n\u003cApp\u003e\n   \u003cLet id={\"data\"} value={[1,2,3]}\u003e\n   \u003cPrint value={data array.pop()}/\u003e\n   \u003cPrint value={data}/\u003e\n\u003cApp/\u003e\n\n```\n\n[Examples](https://github.com/Mohammad-Al-Refai/ht/tree/main/examples)\n\n## Recurses I learnt from\n\n- [Making Programming Language in Python -- Porth](https://www.youtube.com/watch?v=8QP2fDBIxjM\u0026list=PLpM-Dvs8t0VbMZA7wW9aR3EtBqe2kinu4)\n\n- [How To Build A Programming Language From Scratch](https://www.youtube.com/watch?v=8VB5TY1sIRo\u0026list=PL_2VhOvlMk4UHGqYCLWc6GO8FaPl8fQTh\u0026pp=iAQB)\n  \n- [Stack orinted programming](https://en.wikipedia.org/wiki/Stack-oriented_programming)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammad-al-refai%2Fjsx-language","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohammad-al-refai%2Fjsx-language","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammad-al-refai%2Fjsx-language/lists"}