pub struct Compiler<N: Network> {
output_directory: PathBuf,
pub program_name: Option<String>,
compiler_options: CompilerOptions,
state: CompilerState,
import_stubs: IndexMap<Symbol, Stub>,
pub statements_before_dce: u32,
pub statements_after_dce: u32,
phantom: PhantomData<N>,
}
Expand description
The primary entry point of the Leo compiler.
Fields§
§output_directory: PathBuf
The path to where the compiler outputs all generated files.
program_name: Option<String>
The program name,
compiler_options: CompilerOptions
Options configuring compilation.
state: CompilerState
State.
import_stubs: IndexMap<Symbol, Stub>
The stubs for imported programs.
statements_before_dce: u32
How many statements were in the AST before DCE?
statements_after_dce: u32
How many statements were in the AST after DCE?
phantom: PhantomData<N>
Implementations§
Source§impl<N: Network> Compiler<N>
impl<N: Network> Compiler<N>
pub fn parse(&mut self, source: &str, filename: FileName) -> Result<()>
pub fn parse_from_file( &mut self, source_file_path: impl AsRef<Path>, ) -> Result<()>
Sourcepub fn new(
expected_program_name: Option<String>,
is_test: bool,
handler: Handler,
output_directory: PathBuf,
compiler_options: Option<CompilerOptions>,
import_stubs: IndexMap<Symbol, Stub>,
) -> Self
pub fn new( expected_program_name: Option<String>, is_test: bool, handler: Handler, output_directory: PathBuf, compiler_options: Option<CompilerOptions>, import_stubs: IndexMap<Symbol, Stub>, ) -> Self
Returns a new Leo compiler.
fn do_pass<P: Pass>(&mut self, input: P::Input) -> Result<P::Output>
Sourcepub fn intermediate_passes(&mut self) -> Result<()>
pub fn intermediate_passes(&mut self) -> Result<()>
Runs the compiler stages.
Sourcepub fn compile(&mut self, source: &str, filename: FileName) -> Result<String>
pub fn compile(&mut self, source: &str, filename: FileName) -> Result<String>
Returns a compiled Leo program.
pub fn compile_from_file( &mut self, source_file_path: impl AsRef<Path>, ) -> Result<String>
Sourcefn write_ast_to_json(&self, file_suffix: &str) -> Result<()>
fn write_ast_to_json(&self, file_suffix: &str) -> Result<()>
Writes the AST to a JSON file.
Sourcefn write_ast(&self, file_suffix: &str) -> Result<()>
fn write_ast(&self, file_suffix: &str) -> Result<()>
Writes the AST to a file (Leo syntax, not JSON).
Sourcepub fn add_import_stubs(&mut self) -> Result<()>
pub fn add_import_stubs(&mut self) -> Result<()>
Merge the imported stubs which are dependencies of the current program into the AST in topological order.
Auto Trait Implementations§
impl<N> !Freeze for Compiler<N>
impl<N> !RefUnwindSafe for Compiler<N>
impl<N> !Send for Compiler<N>
impl<N> !Sync for Compiler<N>
impl<N> Unpin for Compiler<N>where
N: Unpin,
impl<N> !UnwindSafe for Compiler<N>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more