Menu

Tree [92ab6c] master /
 History

HTTPS access


File Date Author Commit
 docs 2013-05-26 Dmitry Podgorny Dmitry Podgorny [3618cc] first draft of english docs
 examples 2013-05-26 Dmitry Podgorny Dmitry Podgorny [0bbfaf] added example bin_invert.fvm
 src 2013-05-26 Dmitry Podgorny Dmitry Podgorny [92ab6c] fixed return code in main()
 INSTALL 2013-05-25 Dmitry Podgorny Dmitry Podgorny [7e41f9] updated build scripts
 LICENSE 2013-05-23 Dmitry Podgorny Dmitry Podgorny [5e4967] updated documentation
 README 2013-05-26 Dmitry Podgorny Dmitry Podgorny [013bf4] updated README
 configure 2013-05-25 Dmitry Podgorny Dmitry Podgorny [7e41f9] updated build scripts
 fvm2.pro 2013-05-25 Dmitry Podgorny Dmitry Podgorny [7e41f9] updated build scripts

Read Me

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
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.