├── .gitattributes ├── .github └── workflows │ └── rust.yml ├── .gitignore ├── .rustfmt.toml ├── Cargo.toml ├── LICENSE ├── README.md ├── benchmark.py ├── book ├── .gitignore ├── book.toml └── src │ ├── SUMMARY.md │ └── chapter_1.md ├── crates ├── sml-core │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── alpha.rs │ │ ├── arenas.rs │ │ ├── builtin │ │ ├── constructors.rs │ │ ├── mod.rs │ │ └── tycons.rs │ │ ├── check.rs │ │ ├── core_pp.rs │ │ ├── elaborate.rs │ │ ├── lib.rs │ │ ├── linearize.rs │ │ ├── match_compile.rs │ │ ├── type_check.rs │ │ ├── types.rs │ │ └── visit.rs ├── sml-driver │ ├── Cargo.toml │ ├── src │ │ ├── compiler.rs │ │ ├── config.rs │ │ └── main.rs │ └── tests │ │ └── integration.rs ├── sml-frontend │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── ast.rs │ │ ├── lexer.rs │ │ ├── lib.rs │ │ ├── parser │ │ ├── decls.rs │ │ ├── exprs.rs │ │ ├── mod.rs │ │ ├── pats.rs │ │ ├── precedence.rs │ │ └── types.rs │ │ └── tokens.rs └── sml-util │ ├── .gitignore │ ├── Cargo.toml │ └── src │ ├── diagnostics.rs │ ├── hasher.rs │ ├── interner.rs │ ├── lib.rs │ ├── pretty_print.rs │ └── span.rs ├── scratch.sml ├── sml97-defn.pdf └── tests ├── elaboration ├── duplicate.sml ├── local_decl.sml ├── nested_local.sml └── rebind.sml ├── match_compile ├── inexhaustive.sml ├── merge.sml ├── preflight.sml ├── redundant.sml ├── val_bind.sml ├── val_bind2.sml └── wildcard.sml ├── parser ├── empty.sml ├── toplevel.sml └── unfinished.sml └── typecheck ├── cantunify.sml ├── cyclic.sml ├── escape.sml ├── escape_local.sml ├── exception.sml ├── flex_fail.sml ├── flex_gen.sml ├── flex_pass.sml ├── flex_pat.sml ├── mutual_recursion.sml ├── peano.sml ├── records.sml ├── selector_fail.sml ├── selector_pass.sml └── value_res.sml /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/.github/workflows/rust.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | Cargo.lock 4 | /.vscode -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | wrap_comments = true 2 | max_width = 100 -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/Cargo.toml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/README.md -------------------------------------------------------------------------------- /benchmark.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/benchmark.py -------------------------------------------------------------------------------- /book/.gitignore: -------------------------------------------------------------------------------- 1 | book 2 | -------------------------------------------------------------------------------- /book/book.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/book/book.toml -------------------------------------------------------------------------------- /book/src/SUMMARY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/book/src/SUMMARY.md -------------------------------------------------------------------------------- /book/src/chapter_1.md: -------------------------------------------------------------------------------- 1 | # Chapter 1 2 | -------------------------------------------------------------------------------- /crates/sml-core/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /crates/sml-core/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/Cargo.toml -------------------------------------------------------------------------------- /crates/sml-core/src/alpha.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/alpha.rs -------------------------------------------------------------------------------- /crates/sml-core/src/arenas.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/arenas.rs -------------------------------------------------------------------------------- /crates/sml-core/src/builtin/constructors.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/builtin/constructors.rs -------------------------------------------------------------------------------- /crates/sml-core/src/builtin/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/builtin/mod.rs -------------------------------------------------------------------------------- /crates/sml-core/src/builtin/tycons.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/builtin/tycons.rs -------------------------------------------------------------------------------- /crates/sml-core/src/check.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/check.rs -------------------------------------------------------------------------------- /crates/sml-core/src/core_pp.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/core_pp.rs -------------------------------------------------------------------------------- /crates/sml-core/src/elaborate.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/elaborate.rs -------------------------------------------------------------------------------- /crates/sml-core/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/lib.rs -------------------------------------------------------------------------------- /crates/sml-core/src/linearize.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/linearize.rs -------------------------------------------------------------------------------- /crates/sml-core/src/match_compile.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/match_compile.rs -------------------------------------------------------------------------------- /crates/sml-core/src/type_check.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/type_check.rs -------------------------------------------------------------------------------- /crates/sml-core/src/types.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/types.rs -------------------------------------------------------------------------------- /crates/sml-core/src/visit.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-core/src/visit.rs -------------------------------------------------------------------------------- /crates/sml-driver/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-driver/Cargo.toml -------------------------------------------------------------------------------- /crates/sml-driver/src/compiler.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-driver/src/compiler.rs -------------------------------------------------------------------------------- /crates/sml-driver/src/config.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-driver/src/config.rs -------------------------------------------------------------------------------- /crates/sml-driver/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-driver/src/main.rs -------------------------------------------------------------------------------- /crates/sml-driver/tests/integration.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-driver/tests/integration.rs -------------------------------------------------------------------------------- /crates/sml-frontend/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /crates/sml-frontend/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/Cargo.toml -------------------------------------------------------------------------------- /crates/sml-frontend/src/ast.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/ast.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/lexer.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/lexer.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/lib.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/parser/decls.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/parser/decls.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/parser/exprs.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/parser/exprs.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/parser/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/parser/mod.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/parser/pats.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/parser/pats.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/parser/precedence.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/parser/precedence.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/parser/types.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/parser/types.rs -------------------------------------------------------------------------------- /crates/sml-frontend/src/tokens.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-frontend/src/tokens.rs -------------------------------------------------------------------------------- /crates/sml-util/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /crates/sml-util/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-util/Cargo.toml -------------------------------------------------------------------------------- /crates/sml-util/src/diagnostics.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-util/src/diagnostics.rs -------------------------------------------------------------------------------- /crates/sml-util/src/hasher.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-util/src/hasher.rs -------------------------------------------------------------------------------- /crates/sml-util/src/interner.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-util/src/interner.rs -------------------------------------------------------------------------------- /crates/sml-util/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-util/src/lib.rs -------------------------------------------------------------------------------- /crates/sml-util/src/pretty_print.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-util/src/pretty_print.rs -------------------------------------------------------------------------------- /crates/sml-util/src/span.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/crates/sml-util/src/span.rs -------------------------------------------------------------------------------- /scratch.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/scratch.sml -------------------------------------------------------------------------------- /sml97-defn.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/sml97-defn.pdf -------------------------------------------------------------------------------- /tests/elaboration/duplicate.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/elaboration/duplicate.sml -------------------------------------------------------------------------------- /tests/elaboration/local_decl.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/elaboration/local_decl.sml -------------------------------------------------------------------------------- /tests/elaboration/nested_local.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/elaboration/nested_local.sml -------------------------------------------------------------------------------- /tests/elaboration/rebind.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/elaboration/rebind.sml -------------------------------------------------------------------------------- /tests/match_compile/inexhaustive.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/match_compile/inexhaustive.sml -------------------------------------------------------------------------------- /tests/match_compile/merge.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/match_compile/merge.sml -------------------------------------------------------------------------------- /tests/match_compile/preflight.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/match_compile/preflight.sml -------------------------------------------------------------------------------- /tests/match_compile/redundant.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/match_compile/redundant.sml -------------------------------------------------------------------------------- /tests/match_compile/val_bind.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/match_compile/val_bind.sml -------------------------------------------------------------------------------- /tests/match_compile/val_bind2.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/match_compile/val_bind2.sml -------------------------------------------------------------------------------- /tests/match_compile/wildcard.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/match_compile/wildcard.sml -------------------------------------------------------------------------------- /tests/parser/empty.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/parser/empty.sml -------------------------------------------------------------------------------- /tests/parser/toplevel.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/parser/toplevel.sml -------------------------------------------------------------------------------- /tests/parser/unfinished.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/parser/unfinished.sml -------------------------------------------------------------------------------- /tests/typecheck/cantunify.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/cantunify.sml -------------------------------------------------------------------------------- /tests/typecheck/cyclic.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/cyclic.sml -------------------------------------------------------------------------------- /tests/typecheck/escape.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/escape.sml -------------------------------------------------------------------------------- /tests/typecheck/escape_local.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/escape_local.sml -------------------------------------------------------------------------------- /tests/typecheck/exception.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/exception.sml -------------------------------------------------------------------------------- /tests/typecheck/flex_fail.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/flex_fail.sml -------------------------------------------------------------------------------- /tests/typecheck/flex_gen.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/flex_gen.sml -------------------------------------------------------------------------------- /tests/typecheck/flex_pass.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/flex_pass.sml -------------------------------------------------------------------------------- /tests/typecheck/flex_pat.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/flex_pat.sml -------------------------------------------------------------------------------- /tests/typecheck/mutual_recursion.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/mutual_recursion.sml -------------------------------------------------------------------------------- /tests/typecheck/peano.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/peano.sml -------------------------------------------------------------------------------- /tests/typecheck/records.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/records.sml -------------------------------------------------------------------------------- /tests/typecheck/selector_fail.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/selector_fail.sml -------------------------------------------------------------------------------- /tests/typecheck/selector_pass.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/selector_pass.sml -------------------------------------------------------------------------------- /tests/typecheck/value_res.sml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SomewhatML/sml-compiler/HEAD/tests/typecheck/value_res.sml --------------------------------------------------------------------------------