https://github.com/catseye/smetana
MIRROR of https://codeberg.org/catseye/SMETANA : A pathological little self-modifying language
https://github.com/catseye/smetana
automaton esolang self-modifying-code
Last synced: 7 months ago
JSON representation
MIRROR of https://codeberg.org/catseye/SMETANA : A pathological little self-modifying language
- Host: GitHub
- URL: https://github.com/catseye/smetana
- Owner: catseye
- License: unlicense
- Created: 2012-06-13T03:42:14.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2014-08-19T14:57:36.000Z (over 11 years ago)
- Last Synced: 2025-03-05T04:45:12.447Z (about 1 year ago)
- Topics: automaton, esolang, self-modifying-code
- Language: Perl
- Homepage: https://catseye.tc/node/SMETANA
- Size: 133 KB
- Stars: 3
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
SMETANA
=======
Chris Pressey, 1994(ish)
* * * * *
A long time ago (about six years ago), I was writing some amusing notes
to myself and among them was an "algorithm that'll never fly," which
went something like:
1. Swap steps one and two.
2. Flap wings.
3. Go back to step one.
It then occurred to me that reducing this form to the absurd (removing
the "Flap wings" instruction) just *might* fail to yield a totally
untractable language.
I originally wrote the interpreter as a Visual Basic application and
named it SMETANA - both an acronym for "Self-Modifying, Extremely Tiny
AutomatoN Application", and a reference to the composer of the same
name.
The distribution available here is a much better implementation of the
SMETANA interpreter in a much more device-independent and scalable form.
I have retained the English syntax exactly. The program ends when it
tries to peform step number *n*, where *n* is one plus the number of
steps given in the source.
Syntax of the SMETANA Language:
Smetana ::= Step {".\n" Step} ".".
Step ::= "Step" Integer "." (GoTo | Swap).
GoTo ::= "Go" "to" "step" Integer.
Swap ::= "Swap" "step" Integer "with" "step" Integer.
Integer ::= "0".."9" {"0".."9"}.