A Toy Programming Language
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
Thorn Avery b051358207 Add 'LICENSE' 4年前
LICENSE Add 'LICENSE' 4年前
README.md unfuarked readme formatting 4年前
expander.rkt first commit 4年前
main.rkt first commit 4年前
parser.rkt first commit 4年前
reader.rkt first commit 4年前
tmUtils.rkt first commit 4年前

README.md

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 and the libraries within

author

fi'e la ti'ei