{"id":51124937,"url":"https://github.com/akram-dris/nova_lang","last_synced_at":"2026-06-25T06:31:15.611Z","repository":{"id":318810670,"uuid":"1076582375","full_name":"akram-dris/nova_lang","owner":"akram-dris","description":"A simple, educational programming language (Nova) with a C++-built compiler (Supernova), designed to teach compiler concepts without complexity. Features robust error handling, float and char support, and a clear syntax.","archived":false,"fork":false,"pushed_at":"2025-10-15T05:26:13.000Z","size":23,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-15T15:46:47.410Z","etag":null,"topics":["beginner-friendly","c-plus-plus","compiler","education","learn-to-code","nova","programming-language","supernova","syntax"],"latest_commit_sha":null,"homepage":"","language":"C++","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/akram-dris.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-15T04:18:03.000Z","updated_at":"2025-10-15T09:38:27.000Z","dependencies_parsed_at":"2025-10-16T05:46:47.462Z","dependency_job_id":"35a3a58a-eadc-4720-a0ac-b3b2aaacf745","html_url":"https://github.com/akram-dris/nova_lang","commit_stats":null,"previous_names":["akram-dris/nova_lang"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/akram-dris/nova_lang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akram-dris%2Fnova_lang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akram-dris%2Fnova_lang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akram-dris%2Fnova_lang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akram-dris%2Fnova_lang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akram-dris","download_url":"https://codeload.github.com/akram-dris/nova_lang/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akram-dris%2Fnova_lang/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34763481,"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-25T02:00:05.521Z","response_time":101,"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":["beginner-friendly","c-plus-plus","compiler","education","learn-to-code","nova","programming-language","supernova","syntax"],"created_at":"2026-06-25T06:31:15.369Z","updated_at":"2026-06-25T06:31:15.602Z","avatar_url":"https://github.com/akram-dris.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nova Language (`nova_lang`) \u0026 Supernova Compiler\n\n## Overview\n\n**Nova** is a simple, educational, **compiled programming language** designed to teach beginners and students the fundamentals of programming and compilers. Its **clean and intuitive syntax** allows learners to focus on the *logic of programming* and the *mechanics of compilation* without unnecessary complexity.\n\nThe official **Supernova Compiler** is a **C++11 implementation** that parses, compiles, and executes Nova source files (`.nv`), bridging the gap between beginner-friendly syntax and real-world compilation.\n\n---\n\n## Key Features\n\n* **Compiled language** — Nova is executed via the Supernova Compiler.\n* **Beginner-friendly syntax** — simple, intuitive, and readable.\n* **Core data types:** `num`, `string`, `bool`, `float`, `char`.\n* **Control structures:** `if`, `while`, and function support.\n* **Optional parameters:** Functions can define parameters with default values.\n* **Cross-platform support:** Linux, macOS, and Windows.\n* **Educational focus:** teaches compiler concepts in a hands-on way.\n\n---\n\n## Syntax Examples (Nova Language)\n\n### Variable Declaration\n\n```nova\nx:num = 10\nname:string = \"Alice\"\nis_active:bool = true\npi:float = 3.14\ngrade:char = 'A'\n```\n\n### Output\n\n```nova\nshow \"Hello, Nova\"\nshow x\n```\n\n### Loops\n\n```nova\ncounter:num = 0\nwhile counter \u003c 3 start\n    show counter\n    counter = counter + 1\nend\n```\n\n### Functions\n\n```nova\nfun:num add a:num b:num start\n    return a + b\nend\n\nresult:num = add a:3 b:4\nshow result\n\n// Function with optional parameter\nfun:num multiply a:num b:num c:num = 1 start\n    return a * b * c\nend\n\nshow multiply a:2 b:3          // c defaults to 1 (result: 6)\nshow multiply a:2 b:3 c:4      // c is 4 (result: 24)\n```\n\n---\n\n## Installation \u0026 Building Supernova\n\n### Prerequisites\n\n* **Git** — to clone the repository.\n* **C++11 Compiler** — `g++` or `clang`.\n\n---\n\n### Linux \u0026 macOS\n\n```bash\ngit clone https://github.com/akram-dris/nova_lang.git\ncd nova_lang\nchmod +x build.sh\n./build.sh\n```\n\nThe `supernova` executable will be available in the `build/` directory.\n\n---\n\n### Windows\n\n1. Install MinGW-w64 (or another C++ compiler). Ensure `g++` is in your PATH.\n2. Clone the repository:\n\n```bash\ngit clone https://github.com/akram-dris/nova_lang.git\ncd nova_lang\n```\n\n3. Build manually:\n\n```bash\nmkdir build\ng++ src/main.cpp src/lexer.cpp src/parser.cpp -o build/supernova -std=c++11\n```\n\nOr run the build script via Git Bash:\n\n```bash\n./build.sh\n```\n\n---\n\n## Usage\n\nCompile and run Nova programs with the **Supernova Compiler**:\n\n```bash\n./build/supernova my_program.nv\n```\n\nIf a runtime error occurs, Supernova reports it clearly:\n\n```\nRuntime Error: Division by zero.\n```\n\n---\n\n## Example Output (`test.nv`)\n\n```\n3\n10\n7\n10\n14\n4\n9\nNova\nHello, Nova\nhello world\ny is 10\ny is not 10\nx is not greater than y\n7\n1\nHello, Nova\n2 \u003e= 2 is true\n1 \u003c= 2 is true\nhello\ntrue\nis_active is true\nfalse\n3.14\n6.28\nA\nJ\n12.8\n6.5\n10\n4\n5\nPi is greater than 3.0\nRuntime Error: Division by zero.\n```\n\n---\n\n## Add Supernova to PATH\n\n### Linux \u0026 macOS\n\n```bash\nexport PATH=\"/absolute/path/to/nova_lang/build:$PATH\"\nsource ~/.bashrc\n```\n\n### Windows\n\n1. Find the `nova_lang\\build` folder path.\n2. Add it to **Environment Variables → Path**.\n3. Open a new terminal and type:\n\n```bash\nsupernova\n```\n\nYou should see the compiler usage instructions.\n\n---\n\n## Project Structure\n\n```\nnova_lang/\n├── src/             # Source files for Supernova Compiler\n│   ├── main.cpp\n│   ├── lexer.cpp\n│   ├── parser.cpp\n│   └── ...\n├── build/           # Compiled Supernova executable\n├── examples/        # Sample Nova programs\n├── build.sh         # Build script\n└── README.md\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakram-dris%2Fnova_lang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakram-dris%2Fnova_lang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakram-dris%2Fnova_lang/lists"}