Sha256: beaf5bb5ba6b8ee14e5ded9be3f5374d1f46b4d211d9bbe04b504c19d8664aaf
Contents?: true
Size: 877 Bytes
Versions: 28
Compression:
Stored size: 877 Bytes
Contents
//! Compilation process, from AST to Sema to Sequences of Insts. use std::path::Path; use crate::error::Errors; use crate::{ast, codegen, sema}; /// Compile the given AST definitions into Rust source code. pub fn compile(defs: &ast::Defs, options: &codegen::CodegenOptions) -> Result<String, Errors> { let mut typeenv = sema::TypeEnv::from_ast(defs)?; let termenv = sema::TermEnv::from_ast(&mut typeenv, defs)?; let terms = crate::overlap::check(&typeenv, &termenv)?; Ok(codegen::codegen(&typeenv, &termenv, &terms, options)) } /// Compile the given files into Rust source code. pub fn from_files<P: AsRef<Path>>( inputs: impl IntoIterator<Item = P>, options: &codegen::CodegenOptions, ) -> Result<String, Errors> { let lexer = crate::lexer::Lexer::from_files(inputs)?; let defs = crate::parser::parse(lexer)?; compile(&defs, options) }
Version data entries
28 entries across 28 versions & 1 rubygems