Rebased
This commit is contained in:
parent
db4f632bd4
commit
dbfb7482e3
|
@ -88,6 +88,15 @@ pub struct Block {
|
||||||
crate expression: ast::Expression,
|
crate expression: ast::Expression,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Serialize for Block {
|
||||||
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
where
|
||||||
|
S: Serializer,
|
||||||
|
{
|
||||||
|
serializer.serialize_str(&self.expression.print())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Block {
|
impl Block {
|
||||||
pub fn invoke(&self, value: &Value) -> Result<Value, ShellError> {
|
pub fn invoke(&self, value: &Value) -> Result<Value, ShellError> {
|
||||||
let scope = Scope::new(value.copy());
|
let scope = Scope::new(value.copy());
|
||||||
|
@ -115,7 +124,7 @@ impl Serialize for Value {
|
||||||
Value::Primitive(p) => p.serialize(serializer),
|
Value::Primitive(p) => p.serialize(serializer),
|
||||||
Value::Object(o) => o.serialize(serializer),
|
Value::Object(o) => o.serialize(serializer),
|
||||||
Value::List(l) => l.serialize(serializer),
|
Value::List(l) => l.serialize(serializer),
|
||||||
Value::Operation(o) => o.serialize(serializer),
|
Value::Block(b) => b.serialize(serializer),
|
||||||
Value::Error(e) => e.serialize(serializer),
|
Value::Error(e) => e.serialize(serializer),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use byte_unit::Byte;
|
||||||
use crate::parser::ast::*;
|
use crate::parser::ast::*;
|
||||||
|
|
||||||
grammar;
|
grammar;
|
||||||
|
@ -83,7 +84,7 @@ String: String = {
|
||||||
DQString,
|
DQString,
|
||||||
}
|
}
|
||||||
|
|
||||||
RawBareWord: String = <s:r#"[^0-9"'\-\.][^\s"'\.]*"#> => <>.to_string();
|
RawBareWord: String = <s:r#"[^0-9"'\-][^\s"']*"#> => <>.to_string();
|
||||||
DQString: String = <s:r#""([^"]|\\")*""#> => s[1..s.len() - 1].to_string();
|
DQString: String = <s:r#""([^"]|\\")*""#> => s[1..s.len() - 1].to_string();
|
||||||
SQString: String = <s:r#"'([^']|\\')*'"#> => s[1..s.len() - 1].to_string();
|
SQString: String = <s:r#"'([^']|\\')*'"#> => s[1..s.len() - 1].to_string();
|
||||||
Num: i64 = <s:r"-?[0-9]+"> => i64::from_str(s).unwrap();
|
Num: i64 = <s:r"-?[0-9]+"> => i64::from_str(s).unwrap();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// auto-generated: "lalrpop 0.17.0"
|
// auto-generated: "lalrpop 0.17.0"
|
||||||
// sha256: 347c9d51fb526e7c1b1440f4e4a3f5e56f21d618a4d53bf27751cbc31d96dae4
|
// sha256: 4ee276758faf25a1744699f385437040e58a7988edbff39291ce342def61
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use byte_unit::Byte;
|
||||||
use crate::parser::ast::*;
|
use crate::parser::ast::*;
|
||||||
#[allow(unused_extern_crates)]
|
#[allow(unused_extern_crates)]
|
||||||
extern crate lalrpop_util as __lalrpop_util;
|
extern crate lalrpop_util as __lalrpop_util;
|
||||||
|
@ -12,6 +13,7 @@ mod __parse__Pipeline {
|
||||||
#![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens)]
|
#![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens)]
|
||||||
|
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use byte_unit::Byte;
|
||||||
use crate::parser::ast::*;
|
use crate::parser::ast::*;
|
||||||
#[allow(unused_extern_crates)]
|
#[allow(unused_extern_crates)]
|
||||||
extern crate lalrpop_util as __lalrpop_util;
|
extern crate lalrpop_util as __lalrpop_util;
|
||||||
|
@ -424,7 +426,7 @@ mod __parse__Pipeline {
|
||||||
r###"r#"\'([^\']|\\\\\')*\'"#"###,
|
r###"r#"\'([^\']|\\\\\')*\'"#"###,
|
||||||
r###"r#"-?[0-9]+"#"###,
|
r###"r#"-?[0-9]+"#"###,
|
||||||
r###"r#"-?[0-9]+[A-Za-z]+"#"###,
|
r###"r#"-?[0-9]+[A-Za-z]+"#"###,
|
||||||
r###"r#"[^0-9\"\'\\-\\.][^\\s\"\'\\.]*"#"###,
|
r###"r#"[^0-9\"\'\\-][^\\s\"\']*"#"###,
|
||||||
];
|
];
|
||||||
__ACTION[(__state * 23)..].iter().zip(__TERMINAL).filter_map(|(&state, terminal)| {
|
__ACTION[(__state * 23)..].iter().zip(__TERMINAL).filter_map(|(&state, terminal)| {
|
||||||
if state == 0 {
|
if state == 0 {
|
||||||
|
@ -2212,7 +2214,7 @@ mod __parse__Pipeline {
|
||||||
_: ::std::marker::PhantomData<(&'input ())>,
|
_: ::std::marker::PhantomData<(&'input ())>,
|
||||||
) -> (usize, usize)
|
) -> (usize, usize)
|
||||||
{
|
{
|
||||||
// RawBareWord = r#"[^0-9\"\'\\-\\.][^\\s\"\'\\.]*"# => ActionFn(36);
|
// RawBareWord = r#"[^0-9\"\'\\-][^\\s\"\']*"# => ActionFn(36);
|
||||||
let __sym0 = __pop_Variant0(__symbols);
|
let __sym0 = __pop_Variant0(__symbols);
|
||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
|
@ -2417,6 +2419,7 @@ pub use self::__parse__Pipeline::PipelineParser;
|
||||||
mod __intern_token {
|
mod __intern_token {
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use byte_unit::Byte;
|
||||||
use crate::parser::ast::*;
|
use crate::parser::ast::*;
|
||||||
#[allow(unused_extern_crates)]
|
#[allow(unused_extern_crates)]
|
||||||
extern crate lalrpop_util as __lalrpop_util;
|
extern crate lalrpop_util as __lalrpop_util;
|
||||||
|
@ -2445,7 +2448,7 @@ mod __intern_token {
|
||||||
"^(\'([\u{0}-\\&\\(-\u{10ffff}]|\\\\\')*\')",
|
"^(\'([\u{0}-\\&\\(-\u{10ffff}]|\\\\\')*\')",
|
||||||
"^(\\-?[0-9]+)",
|
"^(\\-?[0-9]+)",
|
||||||
"^(\\-?[0-9]+[A-Za-z]+)",
|
"^(\\-?[0-9]+[A-Za-z]+)",
|
||||||
"^([\u{0}-!\\#-\\&\\(-,/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\\-/-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)",
|
"^([\u{0}-!\\#-\\&\\(-,\\.-/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)",
|
||||||
"^(!=)",
|
"^(!=)",
|
||||||
"^(\\$)",
|
"^(\\$)",
|
||||||
"^(\\$false)",
|
"^(\\$false)",
|
||||||
|
@ -2471,7 +2474,7 @@ mod __intern_token {
|
||||||
__regex::Regex::new("^(\'([\u{0}-\\&\\(-\u{10ffff}]|\\\\\')*\')").unwrap(),
|
__regex::Regex::new("^(\'([\u{0}-\\&\\(-\u{10ffff}]|\\\\\')*\')").unwrap(),
|
||||||
__regex::Regex::new("^(\\-?[0-9]+)").unwrap(),
|
__regex::Regex::new("^(\\-?[0-9]+)").unwrap(),
|
||||||
__regex::Regex::new("^(\\-?[0-9]+[A-Za-z]+)").unwrap(),
|
__regex::Regex::new("^(\\-?[0-9]+[A-Za-z]+)").unwrap(),
|
||||||
__regex::Regex::new("^([\u{0}-!\\#-\\&\\(-,/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\\-/-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)").unwrap(),
|
__regex::Regex::new("^([\u{0}-!\\#-\\&\\(-,\\.-/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)").unwrap(),
|
||||||
__regex::Regex::new("^(!=)").unwrap(),
|
__regex::Regex::new("^(!=)").unwrap(),
|
||||||
__regex::Regex::new("^(\\$)").unwrap(),
|
__regex::Regex::new("^(\\$)").unwrap(),
|
||||||
__regex::Regex::new("^(\\$false)").unwrap(),
|
__regex::Regex::new("^(\\$false)").unwrap(),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user