{"id":20425379,"url":"https://github.com/catseye/squishy2k","last_synced_at":"2026-04-19T01:37:29.257Z","repository":{"id":3363068,"uuid":"4409056","full_name":"catseye/Squishy2K","owner":"catseye","description":"MIRROR of https://codeberg.org/catseye/Squishy2K : A language where string-rewriting meets state machines","archived":false,"fork":false,"pushed_at":"2014-08-19T14:26:34.000Z","size":136,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-12-09T13:03:41.885Z","etag":null,"topics":["esolang","esoteric-language","esoteric-programming-language","state-machine","string-rewriting"],"latest_commit_sha":null,"homepage":"https://catseye.tc/node/Squishy2K","language":"Perl","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"LukeCarrier/moodle-core_badges-renderer","license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catseye.png","metadata":{"files":{"readme":"README.markdown","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}},"created_at":"2012-05-22T15:53:41.000Z","updated_at":"2025-07-30T20:15:23.000Z","dependencies_parsed_at":"2022-09-16T04:41:13.595Z","dependency_job_id":null,"html_url":"https://github.com/catseye/Squishy2K","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/catseye/Squishy2K","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FSquishy2K","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FSquishy2K/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FSquishy2K/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FSquishy2K/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catseye","download_url":"https://codeload.github.com/catseye/Squishy2K/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FSquishy2K/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31991720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["esolang","esoteric-language","esoteric-programming-language","state-machine","string-rewriting"],"created_at":"2024-11-15T07:13:07.958Z","updated_at":"2026-04-19T01:37:29.228Z","avatar_url":"https://github.com/catseye.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"Squishky2K\n==========\n\nThis is the reference distribution for the esoteric programming language\nSquishy2K.\n\nHere is a copy of the email that announced its creation.  That's all the\ndocs you get for now.\n\n    .....Subject: [Esoteric] [Languages] New! Squishy2K (v2000.10.06)\n            Date: Fri, 06 Oct 2000 20:56:43 -0500\n            From: Chris Pressey\n    Organization: Cat's Eye Technologies\n              To: Cat's Eye Technologies Mailing List\n\n\n    Back in ancient history I came up with a language which worked like a\n    Turing-Complete EBNF - a compiler-compiler that could also do banal\n    computation via translation.  I wanted to call the language Wirth in\n    honour of the inventor of EBNF.  But the name SQUISHY was proposed and\n    stuck.\n\n    SQUISHY is now left to the sands of time, and this was long before I had\n    ever heard of a semi-Thue grammar or the language Thue.\n\n    But SQUISHY is now back, refurbished for the twenty-first century, in\n    the form of Squishy2K!  Squishy2K is a lot like the original SQUISHY\n    except with more and less.  It's not as much like EBNF anymore.  On the\n    other hand, it's more like a state machine now!  And in Perl it's dead\n    simple, something like 7K of code.\n\n    Squishy2K is a string-rewriting language (read: Thue) embedded within a\n    state machine (read: beta-Juliet) with states-doubling-as-functions\n    thrown in for good measure (read: I haven't rhe foggiest idea what I'm\n    doing.)\n\n    Reading the grammar will prove to you how simple it is.\n\n      Program ::= {State}.\n      State   ::= \"*\" Name \"{\" {Rule} [\"!\" Name] \"}\".\n      Rule    ::= LString \"?\" RString \"!\" [Name].\n      LString ::= {quoted | \"few\" | \"many\" | \"start\" | \"finish\"}.\n      RString ::= {quoted | digit | Name \"(\" RString \")\"}.\n\n    In English... a program consists of any number of states.  Each state\n    begins with an asterisk, gives a name (alphanumeric), and contains any\n    number of rules and an optional notwithstanding clause between curly\n    braces.  The state named \"main\" is where flow control begins and ends.\n\n    Each rule is composed of an \"lstring\" (a pattern to be searched for) and\n    an \"rstring\" (an expression to replace any matched pattern with.)  The\n    pattern tokens \"start\" and \"finish\" match the beginning and the end of\n    the input string respectively.  The tokens \"few\" and \"many\" match any\n    number of characters, the former preferring to match as few as possible,\n    the latter is \"greedy.\"  In the rstring, backreferences to the few and\n    many tokens may be made with digits: 1 indicates the first few or many,\n    2 the second, and so on.\n\n    Each rule, and the notwithstanding clause, can name another state, and\n    when a match succeeds on that rule (or no match succeeds for the\n    notwithstanding clause), a transition along the arc to that state fires\n    (i.e. it's a goto...)\n\n    That's about it.\n\n    Now I have to write a fake infomercial for it, and it'll be complete. \n    :-)\n\n    _chris\n\n    -- \n    Uryc! V'z genccrq vafvqr gur ebg13 plcure!\n    Share and Enjoy on Cat's Eye Technologies' Electronic Mailing List\n    http://www.catseye.mb.ca/list.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fsquishy2k","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatseye%2Fsquishy2k","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fsquishy2k/lists"}