{"id":20639212,"url":"https://github.com/alexdremov/ngg","last_synced_at":"2025-06-10T23:02:34.831Z","repository":{"id":146181944,"uuid":"320205369","full_name":"alexdremov/NGG","owner":"alexdremov","description":"\"Never gonna give you up\" programming language","archived":false,"fork":false,"pushed_at":"2020-12-18T08:43:06.000Z","size":7112,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-15T22:54:10.334Z","etag":null,"topics":["ast","compiler","education","language","meme","never-gonna-give-you-up","programming-language"],"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/alexdremov.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}},"created_at":"2020-12-10T08:19:38.000Z","updated_at":"2023-06-27T08:49:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"5ef17816-86ec-48bb-998f-fde9b8fe0f9a","html_url":"https://github.com/alexdremov/NGG","commit_stats":null,"previous_names":["alexroar/ngg"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdremov%2FNGG","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdremov%2FNGG/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdremov%2FNGG/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdremov%2FNGG/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexdremov","download_url":"https://codeload.github.com/alexdremov/NGG/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249167439,"owners_count":21223505,"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":["ast","compiler","education","language","meme","never-gonna-give-you-up","programming-language"],"created_at":"2024-11-16T15:23:00.116Z","updated_at":"2025-04-15T22:54:14.632Z","avatar_url":"https://github.com/alexdremov.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NGG\n**Never Gonna Give** (you up) programming language\n\nLanguage with the power of the legend. Code can be executed on [SPU](https://github.com/AlexRoar/SPUAsm)\n\n# Syntax\n\n[Beautiful PDF](https://github.com/AlexRoar/NGG/raw/main/NGG.pdf)\n\n*Main*\n\n    Start            ::= {FuncDecl | VarDefStmt}*\n\n*Identifier*\n\n    Identifier       ::= Identifier[Character {Character | Number}*]\n    Number           ::= Number[Digit+]\n    Digit            ::= \"regexp:[0-9]\"\n    Character        ::= EngCharacter | '_'\n    EngCharacter     ::= \"regexp:[a-zA-Z]\"\n\n*Function essentials*\n\n    FuncDecl         ::= FDecl['never gonna'] Identifier\n                         LPA['('] ArgumentsList? RPA[')'] BlockStmt\n    ArgumentsList    ::= Identifier {Comma[','] Identifier}*\n    CallList         ::= rValue {Comma[','] rValue}*\n\n*Values*\n\n    rValue           ::= AddSubExpr {(Eq['=='] | Leq['\u003c='] | Geq['\u003e=']\n                        | Neq['!='] | Gr['\u003e']| Le['\u003c']) AddSubExpr}?\n    AddSubExpr       ::= MulDivExpr\n                         {(Plus['+'] | Minus['-']) MulDivExpr}*\n    MulDivExpr       ::= UnaryExpr {(Mul['*'] | Div['/'] | Pow['^']) UnaryExpr}*\n    UnaryExpr        ::= ((Plus['+'] | Minus['-']) PrimaryExpr)\n                         | PrimaryExpr\n    PrimaryExpr      ::= LPA['('] rValue RPA[')']| Input | Number | FuncCall |\n                         Identifier\n    FuncCall         ::= Identifier LPA['('] CallList? RPA[')']\n\n*Blocks*\n\n    BlockStmt        ::= BStart['strangers'] Statement* BEnd['to love']\n    Statement        ::= (VarDef | Print | AssignExpr |\n                          FuncCall)  StEnd['bdum']\n                          | ReturnStmt | IfStmt | WhileStmt | BlockStmt\n\n    AssignExpr       ::= Identifier (Assg['='] | AdAssg['+='] |\n                          MiAssg['-=']\n                         | MuAssg['*='] | DiAssg['/=']) rValue\n    VarDef           ::= VDecl['make you'] (Identifier Assg['=']\n                         rValue |  Identifier )\n    VarDefStmt       ::= VarDef StEnd['bdum']\n    Print            ::= Print['goodbye']     rValue\n    Input            ::= Input['ask me']\n\n*Control Sequences*\n\n    IfStmt           ::= If['you know the rules']\n                         LPA['('] rValue RPA[')']\n                         BlockStmt {Else['and so do I'] BlockStmt}?\n    WhileStmt        ::= While['run around']\n                         LPA['('] rValue RPA[')'] BlockStmt\n    ReturnStmt       ::= Return['known each other for so long'] rValue  \n                         StEnd['bdum']\n# Memory management\n\n… | global variables | stack memory \n\n| Use | Register |\n|:--|:--|\n| Bp register | rex |\n| Tmp calculations | rax |\n| Tmp calculations2 | rbx |\n\n# Example\n\n```\nnever gonna giveYouUp() strangers\n    goodbye fact(ask me) bdum\nto love\n\nnever gonna fact(num) strangers\n    you know the rules (num \u003c= 1) strangers\n        known each other for so long 1 bdum\n    to love and so do i strangers\n        known each other for so long fact(num - 1) * num bdum\n    to love\nto love\n```\n\n\u003cimg style=\"max-width: 100px\" src=\"https://github.com/AlexRoar/NGG/raw/main/Assets/code.svg\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexdremov%2Fngg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexdremov%2Fngg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexdremov%2Fngg/lists"}