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