|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- # turingAutomaton #
-
- a toy programming language for creating turing machines
-
- ## description ##
-
- `turingAutomaton` is a programming language created to test the Racket ecosystem. it features custom syntax and is able to run single tape turing machines.
-
- ## installation ##
-
- ```
- git clone https://git.lain.church/tA/turingAutomaton
- cd turingAutomaton
- raco pkg install
- ```
-
- ## syntax ##
-
- all files must begin with a
-
- ```
- #lang turingAutomaton
- ```
-
- followed by a definition of;
-
- ```
- @ beginningState
- % blankSymbol
- ! acceptingState
- ```
-
- (currently the accepting state is unimplemented)
-
- `states` are defined using the following syntax;
-
- ```
- : stateName
- currentSymbol ~ newSymbol > newState
- currentSymbol ~ newSymbol < newState
- ```
-
- where `<` and `>` denote moving the tape left and right, respectively
-
- comments are allowed:
-
- ```
- ; either on their own line
- @ first ; or at the end of a line
- ```
-
- ## sample program ##
-
- this machine will double a number passed to it
-
- ```
- #lang turingAutomaton
-
- ; this is a comment!
-
- @ first
- % e
- ! F
-
- : first
- a ~ b > second
- c ~ c > fourth
-
- : second
- a ~ a > second
- c ~ c > second
- e ~ c < third
-
- : third
- a ~ a < third
- b ~ b > first
- c ~ c < third
-
- : fourth
- c ~ c > fourth
- e ~ e < fifth
-
- : fifth
- b ~ a < fifth
- c ~ a < fifth
- e ~ e > F
- ```
-
- ## caveats ##
-
- currently very unfinished.
-
- all input is a single tape defined with `aaaaa` for now.
-
- there is no error checking until I learn how to do that.
-
- might get slow for very large tapes as the tape uses linked lists to operate.
-
- ## thanks ##
-
- mutce ckire to:
- * the racket team for creating an awesome language
- * Matthew Butterick for his book [Beautiful Racket](https://beautifulracket.com/) and the libraries within
-
- ## author ##
-
- `fi'e la ti'ei`
|