Skip to content
Turing Machine Compiler
JavaScript HTML CSS
Branch: gh-pages
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Final Version Jun 7, 2014
fonts UI Apr 3, 2014
img ádd info May 13, 2014
js format code and cleanup Dec 10, 2015
Dockerfile Refactor and add dockerfile Oct 23, 2018 Add running with docker to README Oct 23, 2018
TuringMachine.iml format code and cleanup Dec 10, 2015
about.html format code and cleanup Dec 10, 2015
formal.html format code and cleanup Dec 10, 2015
help.html format code and cleanup Dec 10, 2015
index.html format code and cleanup Dec 10, 2015
transitions.html format code and cleanup Dec 10, 2015

tmsim - Turing Machine

This project is web-based Turing Machine. It is able to interpret a pre-defined language for turing machines, compile and execute it.


The tool is able to hold syntactic errors, ending and returning the line with the error, and, in general, a description of its type.


Checking whether there is agreement between the alphabet of the tape and the alphabet of the machine and verifying whether the final states and the initial state belong to the set of machine states.


For the development of the tool the JavaScript web programming language was used, and several additional libraries (bootstrap, vis.js, jquery) were used to facilitate the development.

At the structure level of the system it is divided between the logic of the Turing machine and the interpreter of the defined language. In the part of the logic of the machine of Turing were developed algorithms capable of executing the same one. On the interpreter side, algorithms have been implemented capable of both lexical and syntactic analyzes and also, although not totally, semantic analysis.

The entire user interface was based on the BootStrap library and the presentation of transitions graphs was done using the vis.js library.


The approach used to optimize the tests was to take advantage of several files with different Turing machines (3 examples) and test whenever any functionality was modified or added.

These tests are available in the GUI to automate their use.


Fácil utilização, grande nível de interatividade e apresentação gráfica de informação que de outra forma era dificilmente compreendida, e é baseada em tecnologias web, sendo capaz de ser executada em qualquer browser.


Errors are sometimes quite generic because of the difficulty in covering all kinds of errors that may exist.


  • With docker:
    • docker build . -t turingmachine
    • docker run -p 80:80 turingmachine


You can’t perform that action at this time.