{"id":15713676,"url":"https://github.com/florian3k/fayrant-lang","last_synced_at":"2026-02-28T08:34:41.415Z","repository":{"id":44467486,"uuid":"365205061","full_name":"Florian3k/fayrant-lang","owner":"Florian3k","description":"Simple, interpreted, dynamically-typed programming language","archived":false,"fork":false,"pushed_at":"2022-10-16T19:05:53.000Z","size":90,"stargazers_count":27,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-12T05:37:43.397Z","etag":null,"topics":["crystal-lang","dynamic-typing","interpreter","lexer","parser","programming-language"],"latest_commit_sha":null,"homepage":"","language":"Crystal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Florian3k.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}},"created_at":"2021-05-07T11:01:13.000Z","updated_at":"2024-07-31T16:33:39.000Z","dependencies_parsed_at":"2023-01-20T05:30:25.354Z","dependency_job_id":null,"html_url":"https://github.com/Florian3k/fayrant-lang","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/Florian3k%2Ffayrant-lang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Florian3k%2Ffayrant-lang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Florian3k%2Ffayrant-lang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Florian3k%2Ffayrant-lang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Florian3k","download_url":"https://codeload.github.com/Florian3k/fayrant-lang/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253819001,"owners_count":21969263,"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":["crystal-lang","dynamic-typing","interpreter","lexer","parser","programming-language"],"created_at":"2024-10-03T21:32:52.236Z","updated_at":"2026-02-28T08:34:41.361Z","avatar_url":"https://github.com/Florian3k.png","language":"Crystal","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎩 Fayrant-lang\n### Simple, interpreted, dynamically-typed programming language\n\nAuthors:\n- Mikołaj Fornal [@Florian3k](https://github.com/Florian3k)\n- Paweł Karaś [@Ph0enixKM](https://github.com/Ph0enixKM)\n- Maciej Witkowski [@MaciejWitkowskiDev](https://github.com/MaciejWitkowskiDev)\n\n## Basic syntax\n\n```=\n~ this is comment\n\n~ variable declaration\nvar something;\nvar something2 = 123;\n\n~ simple types\nsomething = null;\n\nsomething = true;\nsomething = false;\n\nsomething = 1234;           ~ all numbers are 64-bit floating point (double)\nsomething = 3.14159;\nsomething = 0b100001011001; ~ binary literal\nsomething = 0xDeadC0de;     ~ hexadecimal literal\n\nsomething = \"simple string\";\nsomething = \"string with \\n \\t \\\\ \\\" \\{ \\} escapes\";\nsomething = \"string with unicode escapes \\u{65} \\u{0x41}\";\nsomething = \"string with interpolation { 2 + 3 + something2 }\";\nsomething = \"string { \"with { \"nested\" } interpolation\" }\";\n\n~ unary and binary operators\nsomething = !something;\nsomething = -something;\nsomething = @1234;    ~ conversion to string\nsomething = #\"1234\";  ~ conversion to number\n\n~ arithmetic\nsomething = 1 + 2 - 3;\nsomething = 1 * 2 + 3 / 4;\nsomething = 4 \\ 3;      ~ same as 3 / 4;\nsomething = 2 ^ 3 ^ 4;  ~ exponentiation\nsomething = 5 % 3;\n\n~ comparison\nsomething = 2 \u003c 3;\nsomething = 2 \u003e 3;\nsomething = 2 \u003c= 3;\nsomething = 2 \u003e= 3;\n\nsomething = 2 == 3;\nsomething = 2 != 3;\nsomething = \"asd\" == \"def\";\nsomething = \"asd\" == 3;\nsomething = \"asd\" == null;\n\nsomething = \"Hello \" ++ \"world!\";  ~ string concatenation\n\n~ logical\nsomething = true \u0026 false;\nsomething = true | false;\n\n~ assignment operators\nsomething = 1;\nsomething += 2;\nsomething -= 3;\nsomething *= 4;\nsomething /= 5;\nsomething \\= 6;\nsomething %= 7;\nsomething ^= 8;\nsomething \u0026= true;\nsomething |= false;\nsomething ++= \"asdf\";\n\n~ basic io\nsomething = input();  ~ returns string\nprint(something);     ~ prints anything\n\n~ control flow\n\nif (something \u003e 5) {\n  print(\"hello\");\n}\n\nif (something == 7) {\n  print(\"seven\");\n} else {\n  print(\"not seven\");\n}\n\nwhile (something \u003e 0) {\n  something -= 1;\n}\n\nfor (var i = 0; i \u003c 3; i += 1) {\n  print(i);\n}\n\nwhile (true) {\n  if (true) {\n    break;\n  }\n}\n\nfor (var i = 0; i \u003c 3; i += 1) {\n  if (i == 2) {\n    continue;\n  }\n  print(i);\n}\n```\n\n### Functions example\n```=\nfunc factorial_iter(x) {\n  if (x \u003c 1) {\n    return 1;\n  }\n  var res = 1;\n  while (x \u003e 1) {\n    res *= x;\n    x -= 1;\n  }\n  return res;\n}\n\nfunc factorial_rec(x) {\n  if (x \u003c 1) {\n    return 1;\n  }\n  return x * factorial_rec(x - 1);\n}\n\nvar x = #input();\nif (x == null | x \u003c 1) {\n  print(\"Invalid number\");\n  return;\n}\nprint(\"Iter: {factorial_iter(x)}\");\nprint(\"Rec: {factorial_rec(x)}\");\n```\n\n### Class example\n```=\nclass Vec2d {\n  constructor(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  func plus(other) {\n    return Vec2d(this.x + other.x, this.y + other.y);\n  }\n  \n  func norm() {\n    return (this.x ^ 2 + this.y ^ 2) ^ 0.5;\n  }\n  \n  func str() {\n    return \"Vec[{this.x},{this.y}]\";\n  } \n}\n\nvar v1 = Vec2d(3, 4);\nvar v2 = Vec2d(4, 5);\nvar v3 = v1.plus(v2);\n\nprint(\"{v1.str()} + {v2.str()} = {v2.str()}\")\n```\n\n## FAQ:\n\n### Why Fayrant name?\nIt's a tribute to this outstanding beverage\n\n![](https://i.imgur.com/7Ni6osS.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorian3k%2Ffayrant-lang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflorian3k%2Ffayrant-lang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorian3k%2Ffayrant-lang/lists"}