Struct erg_compiler::transpile::Transpiler
source · pub struct Transpiler {
pub cfg: ErgConfig,
/* private fields */
}
Expand description
Generates a PyScript
from an String or other File inputs.
Fields§
§cfg: ErgConfig
Implementations§
source§impl Transpiler
impl Transpiler
sourcepub fn transpile(
&mut self,
src: String,
mode: &str
) -> Result<CompleteArtifact<PyScript>, ErrorArtifact>
pub fn transpile(
&mut self,
src: String,
mode: &str
) -> Result<CompleteArtifact<PyScript>, ErrorArtifact>
Examples found in repository?
transpile.rs (line 148)
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
fn exec(&mut self) -> Result<i32, Self::Errs> {
let path = self.cfg.dump_path().replace(".er", ".py");
let artifact = self
.transpile(self.input().read(), "exec")
.map_err(|eart| {
eart.warns.fmt_all_stderr();
eart.errors
})?;
artifact.warns.fmt_all_stderr();
let mut f = File::create(path).unwrap();
f.write_all(artifact.object.code.as_bytes()).unwrap();
Ok(0)
}
fn eval(&mut self, src: String) -> Result<String, CompileErrors> {
let artifact = self.transpile(src, "eval").map_err(|eart| {
eart.warns.fmt_all_stderr();
eart.errors
})?;
artifact.warns.fmt_all_stderr();
Ok(artifact.object.code)
}
}
impl ContextProvider for Transpiler {
fn dir(&self) -> Vec<(&VarName, &VarInfo)> {
self.builder.dir()
}
fn get_receiver_ctx(&self, receiver_name: &str) -> Option<&Context> {
self.builder.get_receiver_ctx(receiver_name)
}
fn get_var_info(&self, name: &str) -> Option<(&VarName, &VarInfo)> {
self.builder.get_var_info(name)
}
}
impl Buildable<PyScript> for Transpiler {
fn build(
&mut self,
src: String,
mode: &str,
) -> Result<CompleteArtifact<PyScript>, IncompleteArtifact<PyScript>> {
self.transpile(src, mode)
.map_err(|err| IncompleteArtifact::new(None, err.errors, err.warns))
}
pub fn pop_mod_ctx(&mut self) -> Option<Context>
pub fn dir(&mut self) -> Vec<(&VarName, &VarInfo)>
pub fn get_receiver_ctx(&self, receiver_name: &str) -> Option<&Context>
pub fn get_var_info(&self, name: &str) -> Option<(&VarName, &VarInfo)>
Trait Implementations§
source§impl Buildable<PyScript> for Transpiler
impl Buildable<PyScript> for Transpiler
fn build(
&mut self,
src: String,
mode: &str
) -> Result<CompleteArtifact<PyScript>, IncompleteArtifact<PyScript>>
fn pop_context(&mut self) -> Option<Context>
fn get_context(&self) -> Option<&Context>
source§impl ContextProvider for Transpiler
impl ContextProvider for Transpiler
source§impl Debug for Transpiler
impl Debug for Transpiler
source§impl Default for Transpiler
impl Default for Transpiler
source§fn default() -> Transpiler
fn default() -> Transpiler
Returns the “default value” for a type. Read more
source§impl Runnable for Transpiler
impl Runnable for Transpiler
type Err = CompileError
type Errs = CompileErrors
const NAME: &'static str = "Erg transpiler"
fn new(cfg: ErgConfig) -> Self
fn cfg(&self) -> &ErgConfig
fn cfg_mut(&mut self) -> &mut ErgConfig
fn finish(&mut self)
source§fn initialize(&mut self)
fn initialize(&mut self)
Erase all but immutable information.