2018-07-16 03:40:35 -07:00
|
|
|
#![feature(trace_macros)]
|
2018-10-19 02:36:23 -07:00
|
|
|
#![feature(custom_attribute)]
|
2019-03-12 01:05:10 -07:00
|
|
|
//#![feature(unrestricted_attribute_tokens)]
|
2018-04-03 23:24:13 -07:00
|
|
|
#![feature(slice_patterns, box_patterns, box_syntax)]
|
2018-11-11 18:04:44 -08:00
|
|
|
|
|
|
|
//! `schala-lang` is where the Schala programming language is actually implemented.
|
|
|
|
//! It defines the `Schala` type, which contains the state for a Schala REPL, and implements
|
|
|
|
//! `ProgrammingLanguageInterface` and the chain of compiler passes for it.
|
|
|
|
|
2018-03-23 18:43:43 -07:00
|
|
|
extern crate itertools;
|
|
|
|
#[macro_use]
|
|
|
|
extern crate lazy_static;
|
|
|
|
#[macro_use]
|
|
|
|
extern crate maplit;
|
|
|
|
extern crate schala_repl;
|
2018-05-02 02:14:36 -07:00
|
|
|
#[macro_use]
|
2018-10-19 09:57:35 -07:00
|
|
|
extern crate schala_lang_codegen;
|
2019-02-23 00:34:44 -08:00
|
|
|
extern crate ena;
|
2018-03-23 18:43:43 -07:00
|
|
|
|
2017-10-23 00:45:01 -07:00
|
|
|
|
2018-02-23 03:04:19 -08:00
|
|
|
macro_rules! bx {
|
|
|
|
($e:expr) => { Box::new($e) }
|
|
|
|
}
|
|
|
|
|
2019-02-17 03:36:12 -08:00
|
|
|
#[macro_use]
|
2018-05-10 22:23:42 -07:00
|
|
|
mod util;
|
2019-03-08 01:15:19 -08:00
|
|
|
#[macro_use]
|
|
|
|
mod typechecking;
|
2019-08-12 09:51:36 -07:00
|
|
|
mod debugging;
|
2019-03-08 01:15:19 -08:00
|
|
|
|
2018-02-23 01:58:06 -08:00
|
|
|
mod tokenizing;
|
2018-06-04 19:25:40 -07:00
|
|
|
mod ast;
|
2017-10-23 00:45:01 -07:00
|
|
|
mod parsing;
|
2019-08-30 19:03:52 -07:00
|
|
|
#[macro_use]
|
2018-05-20 20:36:57 -07:00
|
|
|
mod symbol_table;
|
2019-09-03 01:42:28 -07:00
|
|
|
mod scope_resolution;
|
2019-02-17 03:36:12 -08:00
|
|
|
mod builtin;
|
2018-06-04 19:12:48 -07:00
|
|
|
mod reduced_ast;
|
2017-10-23 00:45:01 -07:00
|
|
|
mod eval;
|
|
|
|
|
2019-07-11 19:21:23 -07:00
|
|
|
mod schala;
|
2018-10-20 14:27:00 -07:00
|
|
|
|
2019-07-11 19:21:23 -07:00
|
|
|
pub use schala::Schala;
|