mirror of
https://github.com/fluencelabs/aquavm
synced 2024-12-04 23:20:18 +00:00
Optional call output (#20)
This commit is contained in:
parent
cfd5aa7c40
commit
f9924bcfb3
76
Cargo.lock
generated
76
Cargo.lock
generated
@ -67,7 +67,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "aquamarine-vm"
|
name = "aquamarine-vm"
|
||||||
version = "0.1.2"
|
version = "0.1.2"
|
||||||
source = "git+https://github.com/fluencelabs/fce#ddd3448af7b63017f68205c62ec7591888499a70"
|
source = "git+https://github.com/fluencelabs/fce?branch=master#e24bb8e1ac503cdde9b1397a34ebced0132feaf1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fluence-faas",
|
"fluence-faas",
|
||||||
"maplit",
|
"maplit",
|
||||||
@ -250,9 +250,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.0.61"
|
version = "1.0.62"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d"
|
checksum = "f1770ced377336a88a67c473594ccc14eca6f4559217c34f64aac8f83d641b40"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
@ -638,8 +638,8 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fce"
|
name = "fce"
|
||||||
version = "0.1.10"
|
version = "0.1.11"
|
||||||
source = "git+https://github.com/fluencelabs/fce#ddd3448af7b63017f68205c62ec7591888499a70"
|
source = "git+https://github.com/fluencelabs/fce?branch=master#e24bb8e1ac503cdde9b1397a34ebced0132feaf1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boolinator",
|
"boolinator",
|
||||||
"fce-utils",
|
"fce-utils",
|
||||||
@ -661,12 +661,12 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "fce-utils"
|
name = "fce-utils"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/fluencelabs/fce#ddd3448af7b63017f68205c62ec7591888499a70"
|
source = "git+https://github.com/fluencelabs/fce?branch=master#e24bb8e1ac503cdde9b1397a34ebced0132feaf1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fce-wit-interfaces"
|
name = "fce-wit-interfaces"
|
||||||
version = "0.1.7"
|
version = "0.1.8"
|
||||||
source = "git+https://github.com/fluencelabs/fce#ddd3448af7b63017f68205c62ec7591888499a70"
|
source = "git+https://github.com/fluencelabs/fce?branch=master#e24bb8e1ac503cdde9b1397a34ebced0132feaf1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"multimap",
|
"multimap",
|
||||||
"wasmer-interface-types-fl",
|
"wasmer-interface-types-fl",
|
||||||
@ -674,8 +674,8 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fce-wit-parser"
|
name = "fce-wit-parser"
|
||||||
version = "0.1.9"
|
version = "0.1.10"
|
||||||
source = "git+https://github.com/fluencelabs/fce#ddd3448af7b63017f68205c62ec7591888499a70"
|
source = "git+https://github.com/fluencelabs/fce?branch=master#e24bb8e1ac503cdde9b1397a34ebced0132feaf1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"fce-wit-interfaces",
|
"fce-wit-interfaces",
|
||||||
@ -692,22 +692,22 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence"
|
name = "fluence"
|
||||||
version = "0.2.8"
|
version = "0.2.9"
|
||||||
source = "git+https://github.com/fluencelabs/rust-sdk#a6c587db0b6f22c3d3af81f10b187f148f8e9d30"
|
source = "git+https://github.com/fluencelabs/rust-sdk#fd9672636e8d7a91275e5e0b8b88a34494336e5a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fluence-sdk-macro 0.2.8 (git+https://github.com/fluencelabs/rust-sdk)",
|
"fluence-sdk-macro 0.2.9 (git+https://github.com/fluencelabs/rust-sdk)",
|
||||||
"fluence-sdk-main 0.2.8 (git+https://github.com/fluencelabs/rust-sdk)",
|
"fluence-sdk-main 0.2.9 (git+https://github.com/fluencelabs/rust-sdk)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence-faas"
|
name = "fluence-faas"
|
||||||
version = "0.1.11"
|
version = "0.1.12"
|
||||||
source = "git+https://github.com/fluencelabs/fce#ddd3448af7b63017f68205c62ec7591888499a70"
|
source = "git+https://github.com/fluencelabs/fce?branch=master#e24bb8e1ac503cdde9b1397a34ebced0132feaf1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cmd_lib",
|
"cmd_lib",
|
||||||
"fce",
|
"fce",
|
||||||
"fce-utils",
|
"fce-utils",
|
||||||
"fluence-sdk-main 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"fluence-sdk-main 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"itertools",
|
"itertools",
|
||||||
"log",
|
"log",
|
||||||
"safe-transmute",
|
"safe-transmute",
|
||||||
@ -723,46 +723,47 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence-sdk-macro"
|
name = "fluence-sdk-macro"
|
||||||
version = "0.2.8"
|
version = "0.2.9"
|
||||||
source = "git+https://github.com/fluencelabs/rust-sdk#a6c587db0b6f22c3d3af81f10b187f148f8e9d30"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ca5ffdf0ccf817b1e4e8438f6da7e8fa024679c706a69bde7aa8cad8b43e90ee"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fluence-sdk-wit 0.2.8 (git+https://github.com/fluencelabs/rust-sdk)",
|
"fluence-sdk-wit 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence-sdk-macro"
|
name = "fluence-sdk-macro"
|
||||||
version = "0.2.8"
|
version = "0.2.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/fluencelabs/rust-sdk#fd9672636e8d7a91275e5e0b8b88a34494336e5a"
|
||||||
checksum = "4b1720124376ac6bb13e523e3eceeef4475041a03a6434ca7d988cbdc031a5c4"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fluence-sdk-wit 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"fluence-sdk-wit 0.2.9 (git+https://github.com/fluencelabs/rust-sdk)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence-sdk-main"
|
name = "fluence-sdk-main"
|
||||||
version = "0.2.8"
|
version = "0.2.9"
|
||||||
source = "git+https://github.com/fluencelabs/rust-sdk#a6c587db0b6f22c3d3af81f10b187f148f8e9d30"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d4f81c3778c18d372fec6d96049f25e29fc4ff7ba4ab65ef4c2285f971e8670a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fluence-sdk-macro 0.2.8 (git+https://github.com/fluencelabs/rust-sdk)",
|
"fluence-sdk-macro 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence-sdk-main"
|
name = "fluence-sdk-main"
|
||||||
version = "0.2.8"
|
version = "0.2.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/fluencelabs/rust-sdk#fd9672636e8d7a91275e5e0b8b88a34494336e5a"
|
||||||
checksum = "5484ff6f5e091d4904217c45ed86cd0215e496090adaa9716e510742177fc512"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fluence-sdk-macro 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"fluence-sdk-macro 0.2.9 (git+https://github.com/fluencelabs/rust-sdk)",
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence-sdk-wit"
|
name = "fluence-sdk-wit"
|
||||||
version = "0.2.8"
|
version = "0.2.9"
|
||||||
source = "git+https://github.com/fluencelabs/rust-sdk#a6c587db0b6f22c3d3af81f10b187f148f8e9d30"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f9c68c4d07e821e1be23b01c278acdae4e825d03c46879f453426ea3160b3e25"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@ -774,9 +775,8 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fluence-sdk-wit"
|
name = "fluence-sdk-wit"
|
||||||
version = "0.2.8"
|
version = "0.2.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/fluencelabs/rust-sdk#fd9672636e8d7a91275e5e0b8b88a34494336e5a"
|
||||||
checksum = "560baf91197ded38a99a5c94ff366a3dd971ebf33f5d987ecce31d3dedf86d17"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@ -1988,9 +1988,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-interface-types-fl"
|
name = "wasmer-interface-types-fl"
|
||||||
version = "0.17.12"
|
version = "0.17.17"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e916b92f2d315ea27d5ff1d3d6410fe852c51d21bb91a8d1ba7adbf701de7f53"
|
checksum = "35785dfb889bbd6f83f5239fb1b950889368ceba23acf1603c371f337e8c4d1c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"nom",
|
"nom",
|
||||||
|
@ -60,16 +60,7 @@ pub enum Value<'i> {
|
|||||||
pub enum CallOutput<'i> {
|
pub enum CallOutput<'i> {
|
||||||
Scalar(&'i str),
|
Scalar(&'i str),
|
||||||
Accumulator(&'i str),
|
Accumulator(&'i str),
|
||||||
}
|
None,
|
||||||
|
|
||||||
impl<'i> CallOutput<'i> {
|
|
||||||
pub fn name(&self) -> &'i str {
|
|
||||||
use CallOutput::*;
|
|
||||||
|
|
||||||
match self {
|
|
||||||
Scalar(name) | Accumulator(name) => name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
|
@ -15,8 +15,10 @@ pub Instr: Box<Instruction<'input>> = {
|
|||||||
"(" "par" <l:Instr> <r:Instr> ")" => Box::new(Instruction::Par(Par(l, r))),
|
"(" "par" <l:Instr> <r:Instr> ")" => Box::new(Instruction::Par(Par(l, r))),
|
||||||
"(" "xor" <l:Instr> <r:Instr> ")" => Box::new(Instruction::Xor(Xor(l, r))),
|
"(" "xor" <l:Instr> <r:Instr> ")" => Box::new(Instruction::Xor(Xor(l, r))),
|
||||||
|
|
||||||
"(" "call" <p:PeerPart> <f:FPart> <args:Args> <output:Output> ")" =>
|
"(" "call" <p:PeerPart> <f:FPart> <args:Args> <output:Output?> ")" => {
|
||||||
Box::new(Instruction::Call(Call{peer_part: p, function_part: f, args, output})),
|
let output = output.unwrap_or(CallOutput::None);
|
||||||
|
Box::new(Instruction::Call(Call{peer_part: p, function_part: f, args, output}))
|
||||||
|
},
|
||||||
|
|
||||||
"(" "fold" <iterable:Alphanumeric> <iterator:Alphanumeric> <i:Instr> ")" => {
|
"(" "fold" <iterable:Alphanumeric> <iterator:Alphanumeric> <i:Instr> ")" => {
|
||||||
let instruction = Rc::new(*i);
|
let instruction = Rc::new(*i);
|
||||||
@ -44,7 +46,6 @@ PeerPart: PeerPart<'input> = {
|
|||||||
"(" <pid:PeerId> <sid:ServiceId> ")" => PeerPart::PeerPkWithServiceId(pid, sid),
|
"(" <pid:PeerId> <sid:ServiceId> ")" => PeerPart::PeerPkWithServiceId(pid, sid),
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: make output one of _ () "" and absence
|
|
||||||
Output: CallOutput<'input> = {
|
Output: CallOutput<'input> = {
|
||||||
<o:Alphanumeric> => CallOutput::Scalar(o),
|
<o:Alphanumeric> => CallOutput::Scalar(o),
|
||||||
<o:ACCUMULATOR> => CallOutput::Accumulator(&o[..o.len()-2]),
|
<o:ACCUMULATOR> => CallOutput::Accumulator(&o[..o.len()-2]),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// auto-generated: "lalrpop 0.19.1"
|
// auto-generated: "lalrpop 0.19.1"
|
||||||
// sha256: 27f883e0d94a494ad7832f5179eb9175ab38b8dc898d2e12eec6d9cb70ec10
|
// sha256: 9467c547a220171aaf78fe3f8795514c281b4cff41de6a38a5021d6edcea737
|
||||||
use crate::ast::*;
|
use crate::ast::*;
|
||||||
use crate::lalrpop::parser::InstructionError;
|
use crate::lalrpop::parser::InstructionError;
|
||||||
use lalrpop_util::ErrorRecovery;
|
use lalrpop_util::ErrorRecovery;
|
||||||
@ -33,7 +33,8 @@ mod __parse__Instr {
|
|||||||
Variant5(FunctionPart<'input>),
|
Variant5(FunctionPart<'input>),
|
||||||
Variant6(Box<Instruction<'input>>),
|
Variant6(Box<Instruction<'input>>),
|
||||||
Variant7(CallOutput<'input>),
|
Variant7(CallOutput<'input>),
|
||||||
Variant8(PeerPart<'input>),
|
Variant8(::std::option::Option<CallOutput<'input>>),
|
||||||
|
Variant9(PeerPart<'input>),
|
||||||
}
|
}
|
||||||
const __ACTION: &[i8] = &[
|
const __ACTION: &[i8] = &[
|
||||||
// State 0
|
// State 0
|
||||||
@ -73,37 +74,37 @@ mod __parse__Instr {
|
|||||||
// State 17
|
// State 17
|
||||||
0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
|
0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
|
||||||
// State 18
|
// State 18
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 30, 0, 0, 0,
|
0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 30, 0, 0, 0,
|
||||||
// State 19
|
// State 19
|
||||||
9, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0,
|
9, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0,
|
||||||
// State 20
|
// State 20
|
||||||
9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0,
|
9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0,
|
||||||
// State 21
|
// State 21
|
||||||
9, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0,
|
9, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0,
|
||||||
// State 22
|
// State 22
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 23
|
// State 23
|
||||||
0, 0, 0, 0, 0, 2, 3, 4, 26, 5, 6, 7, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 2, 3, 4, 26, 5, 6, 7, 0, 0, 0, 0, 0,
|
||||||
// State 24
|
// State 24
|
||||||
0, -20, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20,
|
0, -21, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21,
|
||||||
// State 25
|
// State 25
|
||||||
0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 26
|
// State 26
|
||||||
-29, -29, -29, -29, -29, 0, 0, 0, 0, 0, 0, 0, 0, -29, -29, -29, 0,
|
-32, -32, -32, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, -32, -32, 0,
|
||||||
// State 27
|
// State 27
|
||||||
-24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, -24, -24, 0,
|
-27, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, -27, -27, 0,
|
||||||
// State 28
|
// State 28
|
||||||
-23, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, -23, -23, 0,
|
-26, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, -26, -26, 0,
|
||||||
// State 29
|
// State 29
|
||||||
-6, -6, -6, -6, -6, 0, 0, 0, 0, 0, 0, 0, 0, -6, -6, -6, -6,
|
-6, -6, -6, -6, -6, 0, 0, 0, 0, 0, 0, 0, 0, -6, -6, -6, -6,
|
||||||
// State 30
|
// State 30
|
||||||
-31, -31, -31, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, -31, -31, -31, 0,
|
-34, -34, -34, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, -34, -34, -34, 0,
|
||||||
// State 31
|
// State 31
|
||||||
-30, -30, -30, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, -30, -30, -30, 0,
|
-33, -33, -33, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, -33, -33, 0,
|
||||||
// State 32
|
// State 32
|
||||||
0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 33
|
// State 33
|
||||||
0, -19, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19,
|
0, -20, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20,
|
||||||
// State 34
|
// State 34
|
||||||
0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 35
|
// State 35
|
||||||
@ -111,9 +112,9 @@ mod __parse__Instr {
|
|||||||
// State 36
|
// State 36
|
||||||
44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 37
|
// State 37
|
||||||
-27, -27, -27, -27, -27, 0, 0, 0, 0, 0, 0, 0, 0, -27, -27, -27, 0,
|
-30, -30, -30, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, -30, -30, -30, 0,
|
||||||
// State 38
|
// State 38
|
||||||
0, -18, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18,
|
0, -19, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19,
|
||||||
// State 39
|
// State 39
|
||||||
0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 40
|
// State 40
|
||||||
@ -121,13 +122,13 @@ mod __parse__Instr {
|
|||||||
// State 41
|
// State 41
|
||||||
0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 42
|
// State 42
|
||||||
-26, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, -26, -26, 0,
|
-29, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29, -29, -29, 0,
|
||||||
// State 43
|
// State 43
|
||||||
-28, -28, -28, -28, -28, 0, 0, 0, 0, 0, 0, 0, 0, -28, -28, -28, 0,
|
-31, -31, -31, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, -31, -31, -31, 0,
|
||||||
// State 44
|
// State 44
|
||||||
0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
// State 45
|
|
||||||
0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
// State 45
|
||||||
|
0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 46
|
// State 46
|
||||||
0, -14, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14,
|
0, -14, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14,
|
||||||
// State 47
|
// State 47
|
||||||
@ -135,30 +136,32 @@ mod __parse__Instr {
|
|||||||
// State 48
|
// State 48
|
||||||
0, -15, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15,
|
0, -15, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15,
|
||||||
// State 49
|
// State 49
|
||||||
0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
// State 50
|
|
||||||
0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
// State 51
|
|
||||||
0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 52
|
// State 50
|
||||||
-4, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, -4, 0,
|
0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
// State 53
|
// State 51
|
||||||
-7, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, -7, -7, -7, 0,
|
|
||||||
// State 54
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, 0, 0, 0,
|
|
||||||
// State 55
|
|
||||||
0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
// State 56
|
|
||||||
-25, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, -25, -25, 0,
|
|
||||||
// State 57
|
|
||||||
0, -17, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17,
|
0, -17, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17,
|
||||||
|
// State 52
|
||||||
|
0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
// State 53
|
||||||
|
-4, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, -4, 0,
|
||||||
|
// State 54
|
||||||
|
-7, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, -7, -7, -7, 0,
|
||||||
|
// State 55
|
||||||
|
0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, 0, 0, 0,
|
||||||
|
// State 56
|
||||||
|
0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
// State 57
|
||||||
|
-28, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, -28, -28, 0,
|
||||||
// State 58
|
// State 58
|
||||||
0, -16, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16,
|
0, -18, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18,
|
||||||
// State 59
|
// State 59
|
||||||
-5, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, -5, -5, -5, 0,
|
0, -16, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16,
|
||||||
// State 60
|
// State 60
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -9, 0, 0, 0,
|
-5, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, -5, -5, -5, 0,
|
||||||
// State 61
|
// State 61
|
||||||
|
0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -9, 0, 0, 0,
|
||||||
|
// State 62
|
||||||
0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
];
|
];
|
||||||
fn __action(state: i8, integer: usize) -> i8 {
|
fn __action(state: i8, integer: usize) -> i8 {
|
||||||
@ -210,11 +213,11 @@ mod __parse__Instr {
|
|||||||
// State 21
|
// State 21
|
||||||
0,
|
0,
|
||||||
// State 22
|
// State 22
|
||||||
-32,
|
-35,
|
||||||
// State 23
|
// State 23
|
||||||
0,
|
0,
|
||||||
// State 24
|
// State 24
|
||||||
-20,
|
-21,
|
||||||
// State 25
|
// State 25
|
||||||
0,
|
0,
|
||||||
// State 26
|
// State 26
|
||||||
@ -232,7 +235,7 @@ mod __parse__Instr {
|
|||||||
// State 32
|
// State 32
|
||||||
0,
|
0,
|
||||||
// State 33
|
// State 33
|
||||||
-19,
|
-20,
|
||||||
// State 34
|
// State 34
|
||||||
0,
|
0,
|
||||||
// State 35
|
// State 35
|
||||||
@ -242,7 +245,7 @@ mod __parse__Instr {
|
|||||||
// State 37
|
// State 37
|
||||||
0,
|
0,
|
||||||
// State 38
|
// State 38
|
||||||
-18,
|
-19,
|
||||||
// State 39
|
// State 39
|
||||||
0,
|
0,
|
||||||
// State 40
|
// State 40
|
||||||
@ -268,7 +271,7 @@ mod __parse__Instr {
|
|||||||
// State 50
|
// State 50
|
||||||
0,
|
0,
|
||||||
// State 51
|
// State 51
|
||||||
0,
|
-17,
|
||||||
// State 52
|
// State 52
|
||||||
0,
|
0,
|
||||||
// State 53
|
// State 53
|
||||||
@ -280,15 +283,17 @@ mod __parse__Instr {
|
|||||||
// State 56
|
// State 56
|
||||||
0,
|
0,
|
||||||
// State 57
|
// State 57
|
||||||
-17,
|
|
||||||
// State 58
|
|
||||||
-16,
|
|
||||||
// State 59
|
|
||||||
0,
|
0,
|
||||||
|
// State 58
|
||||||
|
-18,
|
||||||
|
// State 59
|
||||||
|
-16,
|
||||||
// State 60
|
// State 60
|
||||||
0,
|
0,
|
||||||
// State 61
|
// State 61
|
||||||
0,
|
0,
|
||||||
|
// State 62
|
||||||
|
0,
|
||||||
];
|
];
|
||||||
fn __goto(state: i8, nt: usize) -> i8 {
|
fn __goto(state: i8, nt: usize) -> i8 {
|
||||||
match nt {
|
match nt {
|
||||||
@ -302,13 +307,13 @@ mod __parse__Instr {
|
|||||||
_ => 26,
|
_ => 26,
|
||||||
},
|
},
|
||||||
4 => match state {
|
4 => match state {
|
||||||
21 => 59,
|
21 => 60,
|
||||||
_ => 52,
|
_ => 53,
|
||||||
},
|
},
|
||||||
5 => 18,
|
5 => 18,
|
||||||
6 => 14,
|
6 => 14,
|
||||||
7 => match state {
|
7 => match state {
|
||||||
20 => 55,
|
20 => 56,
|
||||||
_ => 34,
|
_ => 34,
|
||||||
},
|
},
|
||||||
8 => match state {
|
8 => match state {
|
||||||
@ -322,19 +327,19 @@ mod __parse__Instr {
|
|||||||
_ => 11,
|
_ => 11,
|
||||||
},
|
},
|
||||||
9 => 50,
|
9 => 50,
|
||||||
10 => match state {
|
11 => match state {
|
||||||
1 => 27,
|
1 => 27,
|
||||||
_ => 16,
|
_ => 16,
|
||||||
},
|
},
|
||||||
11 => 7,
|
12 => 7,
|
||||||
12 => match state {
|
13 => match state {
|
||||||
16 => 44,
|
16 => 44,
|
||||||
_ => 20,
|
_ => 20,
|
||||||
},
|
},
|
||||||
13 => match state {
|
14 => match state {
|
||||||
7 | 20 => 35,
|
7 | 20 => 35,
|
||||||
15..=16 => 42,
|
15..=16 => 42,
|
||||||
19 | 21 => 53,
|
19 | 21 => 54,
|
||||||
_ => 28,
|
_ => 28,
|
||||||
},
|
},
|
||||||
_ => 0,
|
_ => 0,
|
||||||
@ -627,26 +632,26 @@ mod __parse__Instr {
|
|||||||
}
|
}
|
||||||
17 => {
|
17 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 4,
|
states_to_pop: 6,
|
||||||
nonterminal_produced: 8,
|
nonterminal_produced: 8,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
18 => {
|
18 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 3,
|
states_to_pop: 4,
|
||||||
nonterminal_produced: 8,
|
nonterminal_produced: 8,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
19 => {
|
19 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 1,
|
states_to_pop: 3,
|
||||||
nonterminal_produced: 8,
|
nonterminal_produced: 8,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
20 => {
|
20 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 1,
|
states_to_pop: 1,
|
||||||
nonterminal_produced: 9,
|
nonterminal_produced: 8,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
21 => {
|
21 => {
|
||||||
@ -658,37 +663,37 @@ mod __parse__Instr {
|
|||||||
22 => {
|
22 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 1,
|
states_to_pop: 1,
|
||||||
nonterminal_produced: 10,
|
nonterminal_produced: 9,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
23 => {
|
23 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 1,
|
states_to_pop: 1,
|
||||||
nonterminal_produced: 11,
|
nonterminal_produced: 10,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
24 => {
|
24 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 4,
|
states_to_pop: 0,
|
||||||
nonterminal_produced: 11,
|
nonterminal_produced: 10,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
25 => {
|
25 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 1,
|
states_to_pop: 1,
|
||||||
nonterminal_produced: 12,
|
nonterminal_produced: 11,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
26 => {
|
26 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 2,
|
states_to_pop: 1,
|
||||||
nonterminal_produced: 13,
|
nonterminal_produced: 12,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
27 => {
|
27 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 3,
|
states_to_pop: 4,
|
||||||
nonterminal_produced: 13,
|
nonterminal_produced: 12,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
28 => {
|
28 => {
|
||||||
@ -699,17 +704,35 @@ mod __parse__Instr {
|
|||||||
}
|
}
|
||||||
29 => {
|
29 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 1,
|
states_to_pop: 2,
|
||||||
nonterminal_produced: 13,
|
nonterminal_produced: 14,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
30 => {
|
30 => {
|
||||||
__state_machine::SimulatedReduce::Reduce {
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
states_to_pop: 1,
|
states_to_pop: 3,
|
||||||
nonterminal_produced: 13,
|
nonterminal_produced: 14,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
31 => __state_machine::SimulatedReduce::Accept,
|
31 => {
|
||||||
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
|
states_to_pop: 1,
|
||||||
|
nonterminal_produced: 14,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
32 => {
|
||||||
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
|
states_to_pop: 1,
|
||||||
|
nonterminal_produced: 14,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
33 => {
|
||||||
|
__state_machine::SimulatedReduce::Reduce {
|
||||||
|
states_to_pop: 1,
|
||||||
|
nonterminal_produced: 14,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
34 => __state_machine::SimulatedReduce::Accept,
|
||||||
_ => panic!("invalid reduction index {}", __reduce_index)
|
_ => panic!("invalid reduction index {}", __reduce_index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -893,6 +916,15 @@ mod __parse__Instr {
|
|||||||
__reduce30(errors, input, __lookahead_start, __symbols, ::std::marker::PhantomData::<(&(), &())>)
|
__reduce30(errors, input, __lookahead_start, __symbols, ::std::marker::PhantomData::<(&(), &())>)
|
||||||
}
|
}
|
||||||
31 => {
|
31 => {
|
||||||
|
__reduce31(errors, input, __lookahead_start, __symbols, ::std::marker::PhantomData::<(&(), &())>)
|
||||||
|
}
|
||||||
|
32 => {
|
||||||
|
__reduce32(errors, input, __lookahead_start, __symbols, ::std::marker::PhantomData::<(&(), &())>)
|
||||||
|
}
|
||||||
|
33 => {
|
||||||
|
__reduce33(errors, input, __lookahead_start, __symbols, ::std::marker::PhantomData::<(&(), &())>)
|
||||||
|
}
|
||||||
|
34 => {
|
||||||
// __Instr = Instr => ActionFn(0);
|
// __Instr = Instr => ActionFn(0);
|
||||||
let __sym0 = __pop_Variant6(__symbols);
|
let __sym0 = __pop_Variant6(__symbols);
|
||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
@ -946,14 +978,14 @@ mod __parse__Instr {
|
|||||||
_ => __symbol_type_mismatch()
|
_ => __symbol_type_mismatch()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn __pop_Variant8<
|
fn __pop_Variant9<
|
||||||
'input,
|
'input,
|
||||||
>(
|
>(
|
||||||
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
|
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
|
||||||
) -> (usize, PeerPart<'input>, usize)
|
) -> (usize, PeerPart<'input>, usize)
|
||||||
{
|
{
|
||||||
match __symbols.pop() {
|
match __symbols.pop() {
|
||||||
Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r),
|
Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r),
|
||||||
_ => __symbol_type_mismatch()
|
_ => __symbol_type_mismatch()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -990,6 +1022,17 @@ mod __parse__Instr {
|
|||||||
_ => __symbol_type_mismatch()
|
_ => __symbol_type_mismatch()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fn __pop_Variant8<
|
||||||
|
'input,
|
||||||
|
>(
|
||||||
|
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
|
||||||
|
) -> (usize, ::std::option::Option<CallOutput<'input>>, usize)
|
||||||
|
{
|
||||||
|
match __symbols.pop() {
|
||||||
|
Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r),
|
||||||
|
_ => __symbol_type_mismatch()
|
||||||
|
}
|
||||||
|
}
|
||||||
fn __pop_Variant3<
|
fn __pop_Variant3<
|
||||||
'input,
|
'input,
|
||||||
>(
|
>(
|
||||||
@ -1079,11 +1122,11 @@ mod __parse__Instr {
|
|||||||
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
) -> (usize, usize)
|
) -> (usize, usize)
|
||||||
{
|
{
|
||||||
// (<Arg>)+ = Arg => ActionFn(31);
|
// (<Arg>)+ = Arg => ActionFn(33);
|
||||||
let __sym0 = __pop_Variant2(__symbols);
|
let __sym0 = __pop_Variant2(__symbols);
|
||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
let __nt = super::__action31::<>(errors, input, __sym0);
|
let __nt = super::__action33::<>(errors, input, __sym0);
|
||||||
__symbols.push((__start, __Symbol::Variant3(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant3(__nt), __end));
|
||||||
(1, 2)
|
(1, 2)
|
||||||
}
|
}
|
||||||
@ -1098,13 +1141,13 @@ mod __parse__Instr {
|
|||||||
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
) -> (usize, usize)
|
) -> (usize, usize)
|
||||||
{
|
{
|
||||||
// (<Arg>)+ = (<Arg>)+, Arg => ActionFn(32);
|
// (<Arg>)+ = (<Arg>)+, Arg => ActionFn(34);
|
||||||
assert!(__symbols.len() >= 2);
|
assert!(__symbols.len() >= 2);
|
||||||
let __sym1 = __pop_Variant2(__symbols);
|
let __sym1 = __pop_Variant2(__symbols);
|
||||||
let __sym0 = __pop_Variant3(__symbols);
|
let __sym0 = __pop_Variant3(__symbols);
|
||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym1.2.clone();
|
let __end = __sym1.2.clone();
|
||||||
let __nt = super::__action32::<>(errors, input, __sym0, __sym1);
|
let __nt = super::__action34::<>(errors, input, __sym0, __sym1);
|
||||||
__symbols.push((__start, __Symbol::Variant3(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant3(__nt), __end));
|
||||||
(2, 2)
|
(2, 2)
|
||||||
}
|
}
|
||||||
@ -1157,13 +1200,13 @@ mod __parse__Instr {
|
|||||||
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
) -> (usize, usize)
|
) -> (usize, usize)
|
||||||
{
|
{
|
||||||
// Args = "[", "]" => ActionFn(33);
|
// Args = "[", "]" => ActionFn(35);
|
||||||
assert!(__symbols.len() >= 2);
|
assert!(__symbols.len() >= 2);
|
||||||
let __sym1 = __pop_Variant0(__symbols);
|
let __sym1 = __pop_Variant0(__symbols);
|
||||||
let __sym0 = __pop_Variant0(__symbols);
|
let __sym0 = __pop_Variant0(__symbols);
|
||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym1.2.clone();
|
let __end = __sym1.2.clone();
|
||||||
let __nt = super::__action33::<>(errors, input, __sym0, __sym1);
|
let __nt = super::__action35::<>(errors, input, __sym0, __sym1);
|
||||||
__symbols.push((__start, __Symbol::Variant4(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant4(__nt), __end));
|
||||||
(2, 5)
|
(2, 5)
|
||||||
}
|
}
|
||||||
@ -1178,14 +1221,14 @@ mod __parse__Instr {
|
|||||||
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
) -> (usize, usize)
|
) -> (usize, usize)
|
||||||
{
|
{
|
||||||
// Args = "[", (<Arg>)+, "]" => ActionFn(34);
|
// Args = "[", (<Arg>)+, "]" => ActionFn(36);
|
||||||
assert!(__symbols.len() >= 3);
|
assert!(__symbols.len() >= 3);
|
||||||
let __sym2 = __pop_Variant0(__symbols);
|
let __sym2 = __pop_Variant0(__symbols);
|
||||||
let __sym1 = __pop_Variant3(__symbols);
|
let __sym1 = __pop_Variant3(__symbols);
|
||||||
let __sym0 = __pop_Variant0(__symbols);
|
let __sym0 = __pop_Variant0(__symbols);
|
||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym2.2.clone();
|
let __end = __sym2.2.clone();
|
||||||
let __nt = super::__action34::<>(errors, input, __sym0, __sym1, __sym2);
|
let __nt = super::__action36::<>(errors, input, __sym0, __sym1, __sym2);
|
||||||
__symbols.push((__start, __Symbol::Variant4(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant4(__nt), __end));
|
||||||
(3, 5)
|
(3, 5)
|
||||||
}
|
}
|
||||||
@ -1333,18 +1376,18 @@ mod __parse__Instr {
|
|||||||
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
) -> (usize, usize)
|
) -> (usize, usize)
|
||||||
{
|
{
|
||||||
// Instr = "(", "call", PeerPart, FPart, Args, Output, ")" => ActionFn(4);
|
// Instr = "(", "call", PeerPart, FPart, Args, Output, ")" => ActionFn(37);
|
||||||
assert!(__symbols.len() >= 7);
|
assert!(__symbols.len() >= 7);
|
||||||
let __sym6 = __pop_Variant0(__symbols);
|
let __sym6 = __pop_Variant0(__symbols);
|
||||||
let __sym5 = __pop_Variant7(__symbols);
|
let __sym5 = __pop_Variant7(__symbols);
|
||||||
let __sym4 = __pop_Variant4(__symbols);
|
let __sym4 = __pop_Variant4(__symbols);
|
||||||
let __sym3 = __pop_Variant5(__symbols);
|
let __sym3 = __pop_Variant5(__symbols);
|
||||||
let __sym2 = __pop_Variant8(__symbols);
|
let __sym2 = __pop_Variant9(__symbols);
|
||||||
let __sym1 = __pop_Variant0(__symbols);
|
let __sym1 = __pop_Variant0(__symbols);
|
||||||
let __sym0 = __pop_Variant0(__symbols);
|
let __sym0 = __pop_Variant0(__symbols);
|
||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym6.2.clone();
|
let __end = __sym6.2.clone();
|
||||||
let __nt = super::__action4::<>(errors, input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
|
let __nt = super::__action37::<>(errors, input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
|
||||||
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
||||||
(7, 8)
|
(7, 8)
|
||||||
}
|
}
|
||||||
@ -1358,6 +1401,31 @@ mod __parse__Instr {
|
|||||||
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
|
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
|
||||||
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
) -> (usize, usize)
|
) -> (usize, usize)
|
||||||
|
{
|
||||||
|
// Instr = "(", "call", PeerPart, FPart, Args, ")" => ActionFn(38);
|
||||||
|
assert!(__symbols.len() >= 6);
|
||||||
|
let __sym5 = __pop_Variant0(__symbols);
|
||||||
|
let __sym4 = __pop_Variant4(__symbols);
|
||||||
|
let __sym3 = __pop_Variant5(__symbols);
|
||||||
|
let __sym2 = __pop_Variant9(__symbols);
|
||||||
|
let __sym1 = __pop_Variant0(__symbols);
|
||||||
|
let __sym0 = __pop_Variant0(__symbols);
|
||||||
|
let __start = __sym0.0.clone();
|
||||||
|
let __end = __sym5.2.clone();
|
||||||
|
let __nt = super::__action38::<>(errors, input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
|
||||||
|
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
||||||
|
(6, 8)
|
||||||
|
}
|
||||||
|
pub(crate) fn __reduce17<
|
||||||
|
'input,
|
||||||
|
'err,
|
||||||
|
>(
|
||||||
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
|
input: &'input str,
|
||||||
|
__lookahead_start: Option<&usize>,
|
||||||
|
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
|
||||||
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
|
) -> (usize, usize)
|
||||||
{
|
{
|
||||||
// Instr = "(", "fold", Alphanumeric, Alphanumeric, Instr, ")" => ActionFn(5);
|
// Instr = "(", "fold", Alphanumeric, Alphanumeric, Instr, ")" => ActionFn(5);
|
||||||
assert!(__symbols.len() >= 6);
|
assert!(__symbols.len() >= 6);
|
||||||
@ -1373,7 +1441,7 @@ mod __parse__Instr {
|
|||||||
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
||||||
(6, 8)
|
(6, 8)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce17<
|
pub(crate) fn __reduce18<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1396,7 +1464,7 @@ mod __parse__Instr {
|
|||||||
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
||||||
(4, 8)
|
(4, 8)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce18<
|
pub(crate) fn __reduce19<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1418,7 +1486,7 @@ mod __parse__Instr {
|
|||||||
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
||||||
(3, 8)
|
(3, 8)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce19<
|
pub(crate) fn __reduce20<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1437,7 +1505,7 @@ mod __parse__Instr {
|
|||||||
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant6(__nt), __end));
|
||||||
(1, 8)
|
(1, 8)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce20<
|
pub(crate) fn __reduce21<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1456,7 +1524,7 @@ mod __parse__Instr {
|
|||||||
__symbols.push((__start, __Symbol::Variant7(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant7(__nt), __end));
|
||||||
(1, 9)
|
(1, 9)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce21<
|
pub(crate) fn __reduce22<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1475,7 +1543,44 @@ mod __parse__Instr {
|
|||||||
__symbols.push((__start, __Symbol::Variant7(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant7(__nt), __end));
|
||||||
(1, 9)
|
(1, 9)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce22<
|
pub(crate) fn __reduce23<
|
||||||
|
'input,
|
||||||
|
'err,
|
||||||
|
>(
|
||||||
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
|
input: &'input str,
|
||||||
|
__lookahead_start: Option<&usize>,
|
||||||
|
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
|
||||||
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
|
) -> (usize, usize)
|
||||||
|
{
|
||||||
|
// Output? = Output => ActionFn(29);
|
||||||
|
let __sym0 = __pop_Variant7(__symbols);
|
||||||
|
let __start = __sym0.0.clone();
|
||||||
|
let __end = __sym0.2.clone();
|
||||||
|
let __nt = super::__action29::<>(errors, input, __sym0);
|
||||||
|
__symbols.push((__start, __Symbol::Variant8(__nt), __end));
|
||||||
|
(1, 10)
|
||||||
|
}
|
||||||
|
pub(crate) fn __reduce24<
|
||||||
|
'input,
|
||||||
|
'err,
|
||||||
|
>(
|
||||||
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
|
input: &'input str,
|
||||||
|
__lookahead_start: Option<&usize>,
|
||||||
|
__symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
|
||||||
|
_: ::std::marker::PhantomData<(&'input (), &'err ())>,
|
||||||
|
) -> (usize, usize)
|
||||||
|
{
|
||||||
|
// Output? = => ActionFn(30);
|
||||||
|
let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
|
||||||
|
let __end = __start.clone();
|
||||||
|
let __nt = super::__action30::<>(errors, input, &__start, &__end);
|
||||||
|
__symbols.push((__start, __Symbol::Variant8(__nt), __end));
|
||||||
|
(0, 10)
|
||||||
|
}
|
||||||
|
pub(crate) fn __reduce25<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1492,9 +1597,9 @@ mod __parse__Instr {
|
|||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
let __nt = super::__action17::<>(errors, input, __sym0);
|
let __nt = super::__action17::<>(errors, input, __sym0);
|
||||||
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
||||||
(1, 10)
|
(1, 11)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce23<
|
pub(crate) fn __reduce26<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1510,10 +1615,10 @@ mod __parse__Instr {
|
|||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
let __nt = super::__action12::<>(errors, input, __sym0);
|
let __nt = super::__action12::<>(errors, input, __sym0);
|
||||||
__symbols.push((__start, __Symbol::Variant8(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant9(__nt), __end));
|
||||||
(1, 11)
|
(1, 12)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce24<
|
pub(crate) fn __reduce27<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1533,10 +1638,10 @@ mod __parse__Instr {
|
|||||||
let __start = __sym0.0.clone();
|
let __start = __sym0.0.clone();
|
||||||
let __end = __sym3.2.clone();
|
let __end = __sym3.2.clone();
|
||||||
let __nt = super::__action13::<>(errors, input, __sym0, __sym1, __sym2, __sym3);
|
let __nt = super::__action13::<>(errors, input, __sym0, __sym1, __sym2, __sym3);
|
||||||
__symbols.push((__start, __Symbol::Variant8(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant9(__nt), __end));
|
||||||
(4, 11)
|
(4, 12)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce25<
|
pub(crate) fn __reduce28<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1553,9 +1658,9 @@ mod __parse__Instr {
|
|||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
let __nt = super::__action18::<>(errors, input, __sym0);
|
let __nt = super::__action18::<>(errors, input, __sym0);
|
||||||
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
||||||
(1, 12)
|
(1, 13)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce26<
|
pub(crate) fn __reduce29<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1574,9 +1679,9 @@ mod __parse__Instr {
|
|||||||
let __end = __sym1.2.clone();
|
let __end = __sym1.2.clone();
|
||||||
let __nt = super::__action20::<>(errors, input, __sym0, __sym1);
|
let __nt = super::__action20::<>(errors, input, __sym0, __sym1);
|
||||||
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
||||||
(2, 13)
|
(2, 14)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce27<
|
pub(crate) fn __reduce30<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1596,9 +1701,9 @@ mod __parse__Instr {
|
|||||||
let __end = __sym2.2.clone();
|
let __end = __sym2.2.clone();
|
||||||
let __nt = super::__action21::<>(errors, input, __sym0, __sym1, __sym2);
|
let __nt = super::__action21::<>(errors, input, __sym0, __sym1, __sym2);
|
||||||
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
||||||
(3, 13)
|
(3, 14)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce28<
|
pub(crate) fn __reduce31<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1615,9 +1720,9 @@ mod __parse__Instr {
|
|||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
let __nt = super::__action22::<>(errors, input, __sym0);
|
let __nt = super::__action22::<>(errors, input, __sym0);
|
||||||
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
||||||
(1, 13)
|
(1, 14)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce29<
|
pub(crate) fn __reduce32<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1634,9 +1739,9 @@ mod __parse__Instr {
|
|||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
let __nt = super::__action23::<>(errors, input, __sym0);
|
let __nt = super::__action23::<>(errors, input, __sym0);
|
||||||
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
||||||
(1, 13)
|
(1, 14)
|
||||||
}
|
}
|
||||||
pub(crate) fn __reduce30<
|
pub(crate) fn __reduce33<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -1653,7 +1758,7 @@ mod __parse__Instr {
|
|||||||
let __end = __sym0.2.clone();
|
let __end = __sym0.2.clone();
|
||||||
let __nt = super::__action24::<>(errors, input, __sym0);
|
let __nt = super::__action24::<>(errors, input, __sym0);
|
||||||
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
__symbols.push((__start, __Symbol::Variant2(__nt), __end));
|
||||||
(1, 13)
|
(1, 14)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub use self::__parse__Instr::InstrParser;
|
pub use self::__parse__Instr::InstrParser;
|
||||||
@ -1769,11 +1874,14 @@ fn __action4<
|
|||||||
(_, p, _): (usize, PeerPart<'input>, usize),
|
(_, p, _): (usize, PeerPart<'input>, usize),
|
||||||
(_, f, _): (usize, FunctionPart<'input>, usize),
|
(_, f, _): (usize, FunctionPart<'input>, usize),
|
||||||
(_, args, _): (usize, Vec<Value<'input>>, usize),
|
(_, args, _): (usize, Vec<Value<'input>>, usize),
|
||||||
(_, output, _): (usize, CallOutput<'input>, usize),
|
(_, output, _): (usize, ::std::option::Option<CallOutput<'input>>, usize),
|
||||||
(_, _, _): (usize, &'input str, usize),
|
(_, _, _): (usize, &'input str, usize),
|
||||||
) -> Box<Instruction<'input>>
|
) -> Box<Instruction<'input>>
|
||||||
{
|
{
|
||||||
Box::new(Instruction::Call(Call{peer_part: p, function_part: f, args, output}))
|
{
|
||||||
|
let output = output.unwrap_or(CallOutput::None);
|
||||||
|
Box::new(Instruction::Call(Call{peer_part: p, function_part: f, args, output}))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
@ -2122,6 +2230,33 @@ fn __action28<
|
|||||||
fn __action29<
|
fn __action29<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
|
>(
|
||||||
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
|
input: &'input str,
|
||||||
|
(_, __0, _): (usize, CallOutput<'input>, usize),
|
||||||
|
) -> ::std::option::Option<CallOutput<'input>>
|
||||||
|
{
|
||||||
|
Some(__0)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(unused_variables)]
|
||||||
|
fn __action30<
|
||||||
|
'input,
|
||||||
|
'err,
|
||||||
|
>(
|
||||||
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
|
input: &'input str,
|
||||||
|
__lookbehind: &usize,
|
||||||
|
__lookahead: &usize,
|
||||||
|
) -> ::std::option::Option<CallOutput<'input>>
|
||||||
|
{
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(unused_variables)]
|
||||||
|
fn __action31<
|
||||||
|
'input,
|
||||||
|
'err,
|
||||||
>(
|
>(
|
||||||
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
input: &'input str,
|
input: &'input str,
|
||||||
@ -2132,7 +2267,7 @@ fn __action29<
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
fn __action30<
|
fn __action32<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -2146,7 +2281,7 @@ fn __action30<
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
fn __action31<
|
fn __action33<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -2163,7 +2298,7 @@ fn __action31<
|
|||||||
__0,
|
__0,
|
||||||
);
|
);
|
||||||
let __temp0 = (__start0, __temp0, __end0);
|
let __temp0 = (__start0, __temp0, __end0);
|
||||||
__action29(
|
__action31(
|
||||||
errors,
|
errors,
|
||||||
input,
|
input,
|
||||||
__temp0,
|
__temp0,
|
||||||
@ -2171,7 +2306,7 @@ fn __action31<
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
fn __action32<
|
fn __action34<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -2189,7 +2324,7 @@ fn __action32<
|
|||||||
__1,
|
__1,
|
||||||
);
|
);
|
||||||
let __temp0 = (__start0, __temp0, __end0);
|
let __temp0 = (__start0, __temp0, __end0);
|
||||||
__action30(
|
__action32(
|
||||||
errors,
|
errors,
|
||||||
input,
|
input,
|
||||||
__0,
|
__0,
|
||||||
@ -2198,7 +2333,7 @@ fn __action32<
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
fn __action33<
|
fn __action35<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -2227,7 +2362,7 @@ fn __action33<
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
fn __action34<
|
fn __action36<
|
||||||
'input,
|
'input,
|
||||||
'err,
|
'err,
|
||||||
>(
|
>(
|
||||||
@ -2255,6 +2390,80 @@ fn __action34<
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(unused_variables)]
|
||||||
|
fn __action37<
|
||||||
|
'input,
|
||||||
|
'err,
|
||||||
|
>(
|
||||||
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
|
input: &'input str,
|
||||||
|
__0: (usize, &'input str, usize),
|
||||||
|
__1: (usize, &'input str, usize),
|
||||||
|
__2: (usize, PeerPart<'input>, usize),
|
||||||
|
__3: (usize, FunctionPart<'input>, usize),
|
||||||
|
__4: (usize, Vec<Value<'input>>, usize),
|
||||||
|
__5: (usize, CallOutput<'input>, usize),
|
||||||
|
__6: (usize, &'input str, usize),
|
||||||
|
) -> Box<Instruction<'input>>
|
||||||
|
{
|
||||||
|
let __start0 = __5.0.clone();
|
||||||
|
let __end0 = __5.2.clone();
|
||||||
|
let __temp0 = __action29(
|
||||||
|
errors,
|
||||||
|
input,
|
||||||
|
__5,
|
||||||
|
);
|
||||||
|
let __temp0 = (__start0, __temp0, __end0);
|
||||||
|
__action4(
|
||||||
|
errors,
|
||||||
|
input,
|
||||||
|
__0,
|
||||||
|
__1,
|
||||||
|
__2,
|
||||||
|
__3,
|
||||||
|
__4,
|
||||||
|
__temp0,
|
||||||
|
__6,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(unused_variables)]
|
||||||
|
fn __action38<
|
||||||
|
'input,
|
||||||
|
'err,
|
||||||
|
>(
|
||||||
|
errors: &'err mut Vec<ErrorRecovery<usize, Token<'input>, InstructionError>>,
|
||||||
|
input: &'input str,
|
||||||
|
__0: (usize, &'input str, usize),
|
||||||
|
__1: (usize, &'input str, usize),
|
||||||
|
__2: (usize, PeerPart<'input>, usize),
|
||||||
|
__3: (usize, FunctionPart<'input>, usize),
|
||||||
|
__4: (usize, Vec<Value<'input>>, usize),
|
||||||
|
__5: (usize, &'input str, usize),
|
||||||
|
) -> Box<Instruction<'input>>
|
||||||
|
{
|
||||||
|
let __start0 = __4.2.clone();
|
||||||
|
let __end0 = __5.0.clone();
|
||||||
|
let __temp0 = __action30(
|
||||||
|
errors,
|
||||||
|
input,
|
||||||
|
&__start0,
|
||||||
|
&__end0,
|
||||||
|
);
|
||||||
|
let __temp0 = (__start0, __temp0, __end0);
|
||||||
|
__action4(
|
||||||
|
errors,
|
||||||
|
input,
|
||||||
|
__0,
|
||||||
|
__1,
|
||||||
|
__2,
|
||||||
|
__3,
|
||||||
|
__4,
|
||||||
|
__temp0,
|
||||||
|
__5,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub trait __ToTriple<'input, 'err, > {
|
pub trait __ToTriple<'input, 'err, > {
|
||||||
fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError<usize, Token<'input>, InstructionError>>;
|
fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError<usize, Token<'input>, InstructionError>>;
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,8 @@ fn parse(source_code: &str) -> Instruction {
|
|||||||
fn parse_seq() {
|
fn parse_seq() {
|
||||||
let source_code = r#"
|
let source_code = r#"
|
||||||
(seq
|
(seq
|
||||||
(call peerid function [] void)
|
(call peerid function [] output)
|
||||||
(call "id" "f" ["hello" name] void[])
|
(call "id" "f" ["hello" name])
|
||||||
)
|
)
|
||||||
"#;
|
"#;
|
||||||
let instruction = parse(source_code);
|
let instruction = parse(source_code);
|
||||||
@ -40,13 +40,13 @@ fn parse_seq() {
|
|||||||
peer_part: PeerPk(Variable("peerid")),
|
peer_part: PeerPk(Variable("peerid")),
|
||||||
function_part: FuncName(Variable("function")),
|
function_part: FuncName(Variable("function")),
|
||||||
args: vec![],
|
args: vec![],
|
||||||
output: Scalar("void"),
|
output: Scalar("output"),
|
||||||
}),
|
}),
|
||||||
Instruction::Call(Call {
|
Instruction::Call(Call {
|
||||||
peer_part: PeerPk(Literal("id")),
|
peer_part: PeerPk(Literal("id")),
|
||||||
function_part: FuncName(Literal("f")),
|
function_part: FuncName(Literal("f")),
|
||||||
args: vec![Literal("hello"), Variable("name")],
|
args: vec![Literal("hello"), Variable("name")],
|
||||||
output: Accumulator("void"),
|
output: None,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
assert_eq!(instruction, expected);
|
assert_eq!(instruction, expected);
|
||||||
@ -57,10 +57,10 @@ fn parse_seq_seq() {
|
|||||||
let source_code = r#"
|
let source_code = r#"
|
||||||
(seq
|
(seq
|
||||||
(seq
|
(seq
|
||||||
(call peerid function [] void)
|
(call peerid function [])
|
||||||
(call (peerid serviceA) ("serviceB" function) [] void)
|
(call (peerid serviceA) ("serviceB" function) [])
|
||||||
)
|
)
|
||||||
(call "id" "f" ["hello" name] void[])
|
(call "id" "f" ["hello" name] output[])
|
||||||
)
|
)
|
||||||
"#;
|
"#;
|
||||||
let instruction = parse(source_code);
|
let instruction = parse(source_code);
|
||||||
@ -70,20 +70,20 @@ fn parse_seq_seq() {
|
|||||||
peer_part: PeerPk(Variable("peerid")),
|
peer_part: PeerPk(Variable("peerid")),
|
||||||
function_part: FuncName(Variable("function")),
|
function_part: FuncName(Variable("function")),
|
||||||
args: vec![],
|
args: vec![],
|
||||||
output: Scalar("void"),
|
output: None,
|
||||||
}),
|
}),
|
||||||
Instruction::Call(Call {
|
Instruction::Call(Call {
|
||||||
peer_part: PeerPkWithServiceId(Variable("peerid"), Variable("serviceA")),
|
peer_part: PeerPkWithServiceId(Variable("peerid"), Variable("serviceA")),
|
||||||
function_part: ServiceIdWithFuncName(Literal("serviceB"), Variable("function")),
|
function_part: ServiceIdWithFuncName(Literal("serviceB"), Variable("function")),
|
||||||
args: vec![],
|
args: vec![],
|
||||||
output: Scalar("void"),
|
output: None,
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
Instruction::Call(Call {
|
Instruction::Call(Call {
|
||||||
peer_part: PeerPk(Literal("id")),
|
peer_part: PeerPk(Literal("id")),
|
||||||
function_part: FuncName(Literal("f")),
|
function_part: FuncName(Literal("f")),
|
||||||
args: vec![Literal("hello"), Variable("name")],
|
args: vec![Literal("hello"), Variable("name")],
|
||||||
output: Accumulator("void"),
|
output: Accumulator("output"),
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
assert_eq!(instruction, expected);
|
assert_eq!(instruction, expected);
|
||||||
@ -356,6 +356,21 @@ fn seq_with_empty_and_dash() {
|
|||||||
assert_eq!(instruction, expected);
|
assert_eq!(instruction, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_output() {
|
||||||
|
let source_code = r#"
|
||||||
|
(call peer (service fname) [])
|
||||||
|
"#;
|
||||||
|
let instruction = parse(&source_code.as_ref());
|
||||||
|
let expected = Instruction::Call(Call {
|
||||||
|
peer_part: PeerPk(Variable("peer")),
|
||||||
|
function_part: ServiceIdWithFuncName(Variable("service"), Variable("fname")),
|
||||||
|
args: vec![],
|
||||||
|
output: None,
|
||||||
|
});
|
||||||
|
assert_eq!(instruction, expected);
|
||||||
|
}
|
||||||
|
|
||||||
// Test DSL
|
// Test DSL
|
||||||
|
|
||||||
fn seq<'a>(l: Instruction<'a>, r: Instruction<'a>) -> Instruction<'a> {
|
fn seq<'a>(l: Instruction<'a>, r: Instruction<'a>) -> Instruction<'a> {
|
||||||
|
@ -10,5 +10,5 @@ path = "src/lib.rs"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
fluence = { git = "https://github.com/fluencelabs/rust-sdk", features = ["logger"] }
|
fluence = { git = "https://github.com/fluencelabs/rust-sdk", features = ["logger"] }
|
||||||
aquamarine-vm = { git = "https://github.com/fluencelabs/fce" }
|
aquamarine-vm = { git = "https://github.com/fluencelabs/fce", branch = "master" }
|
||||||
serde_json = "1.0.56"
|
serde_json = "1.0.56"
|
||||||
|
@ -24,7 +24,7 @@ wasm-bindgen = "0.2.68"
|
|||||||
|
|
||||||
[dev_dependencies]
|
[dev_dependencies]
|
||||||
aqua-test-utils = { path = "../crates/test-utils" }
|
aqua-test-utils = { path = "../crates/test-utils" }
|
||||||
aquamarine-vm = { git = "https://github.com/fluencelabs/fce", features = ["raw-aquamarine-vm-api"] }
|
aquamarine-vm = { git = "https://github.com/fluencelabs/fce", features = ["raw-aquamarine-vm-api"], branch = "master" }
|
||||||
|
|
||||||
criterion = "0.3.3"
|
criterion = "0.3.3"
|
||||||
once_cell = "1.4.1"
|
once_cell = "1.4.1"
|
||||||
|
@ -56,6 +56,7 @@ pub(super) fn set_local_call_result<'i>(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
CallOutput::None => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Loading…
Reference in New Issue
Block a user