//! The middle of the compiler: analysis, simplification, optimization. //! //! For the moment, this module doesn't do much besides define an intermediate //! representation for NGR programs that is a little easier to work with then //! the structures we've built from the actual user syntax. For example, in the //! IR syntax, function calls are simplified so that all their arguments are //! either variables or constants, which can make reasoning about programs //! (and implicit temporary variables) quite a bit easier. //! //! For the foreseeable future, this module will likely remain mostly empty //! besides definitions, as we'll likely want to focus on just processing / //! validating syntax, and then figuring out how to turn it into Cranelift //! and object code. After that point, however, this will be the module to //! come to for analysis and optimization work. pub mod ast; mod eval; mod strings; pub use ast::*;