FVM2 - F Virtual Machine v2
Copyright (C) Dmitry Podgorny <pasis.ua@gmail.com>
This code is free software; you can redistribute it and/or modify it under the
terms of GNU General Public License either version 3 or (at your option) any
later version.
Common
==================
FVM2 is VM for running machines like Markov algorithm, Turing machine and so
on. FVM2 has debugger with step mode and breakpoints. Goal of this project
is to help students with studying Theory of computation. FVM2 shows how
complex code works within a real machine.
Currently the only implemented machine is Markov algorithms. Double click on
machine in the list activates the machine.
There is machine specific section in the bottom of the window. Usually it
contains memory of machine. For Markov algoritms it is possible to set/change
memory before execution or while execution is in step mode. Every change to
the text line immediately stores whole string to the machine's memory (you
don't have to press enter).
Text area on the left of the window is for executing code. Text line below is
for executing a single command while machine runs.
Breakpoints are set to the pointer of the text area. Breakpoint means that
machine switches to the step mode before executing the marked command.
Markov algorithms
==================
There are some special symbols or sequences in the "language":
* E is empty string. For example, "1->E" means that string "1" will be
erased after execution. Current implementation assumes string "E" is
equal to empty string. I.e. "1->E" and "1->" are equivalent.
* -> is operator.
* . is termination symbol. When it is the first symbol after operator ->
machine recognizes command as the last. Symbol "." must appear only as
the first symbol after "->".
* # is just an ordinary symbol, but it is usually used as separator for
variables. For example, if you want to set 3 variables x=1, y=2, z=3
to memory it can be done in the following way: "1#11#111". Of course
how you set and recognize variables is the only your deal :-).
You can find examples of code in examples/ directory. As comments in code ain't
supported yet descriptions and explanations of examples can be found at
sourforge wiki[2].
Pay attention! Some Markov algorithm programs operate with unary numbers.
Links
==================
[1] SourceForge project page -- https://sourceforge.net/projects/fvm2/
[2] SourceForge Wiki -- https://sourceforge.net/p/fvm2/wiki/Home/
[3] GitHub project page -- https://github.com/pasis/fvm2