//! The DarkVM is a VM that can be targeted by any language.
//! It is written for the Envious programming language, but may targeted by any language.
//! The VM was created with zero-copy, speed, and simplicity in mind.
//! This means that the implementation of the VM uses reference counted values, resembling Swift.
//! Currently, the VM is highly experimental and may change, therefore writing programs in this language is not recommended.
/// The Tokens module, which contains the Token struct and the TokenKind enum. These describe the various tokens that can be recognized.
/// The Errors module, which contains the Error struct and the ErrorKind enum. These describe the various errors that could occur during the program execution.
/// The Utils module, which contains common utilities such as the stack and frames.
/// The Lexer module, which creates a vector of all of the tokens in the input. This input may come from either a file or a REPL.
/// The Values module, which contains the Value struct and ValueKind enum. These describe the various values within the program.
/// The Code module, which maintains the different values generated by the lexer.
/// The VM module. This maintains most of the code for the behavior of different instructions and the behavior of the VM in general.
use Lexer;
use VM;
/// Runs the VM, and produces either an error, or the final state of the VM after the operations.
/// The errors produced can be found in the utils::error::ErrorKind enum.