Syntax 奇怪的语法错误';错误:应为“、”或“:”,找到“else”';
目前我正在开发一个用Rust编写的VM。我遇到了两个语法错误,这两个错误我都在努力解决,因为它们对我来说似乎没有什么意义 代码如下:Syntax 奇怪的语法错误';错误:应为“、”或“:”,找到“else”';,syntax,compiler-errors,rust,rust-cargo,Syntax,Compiler Errors,Rust,Rust Cargo,目前我正在开发一个用Rust编写的VM。我遇到了两个语法错误,这两个错误我都在努力解决,因为它们对我来说似乎没有什么意义 代码如下: pub fn aaa(vm: &mut VM, pipeline: &Pipeline, _hv: &mut dyn Hypervisor) -> Result<(), VMError>{ let mut al = vm.get_reg(Reg8::AL as u8, ValueSize::Byte)?.u8_ex
pub fn aaa(vm: &mut VM, pipeline: &Pipeline, _hv: &mut dyn Hypervisor) -> Result<(), VMError>{
let mut al = vm.get_reg(Reg8::AL as u8, ValueSize::Byte)?.u8_exact()?;
let ah = vm.get_reg(Reg8::AH as u8, ValueSize::Byte)?.u8_exact()?;
let adjust = vm.flags.adjust;
if (al & 0x0F) > 9 | | adjust {
vm.set_reg(Reg8::AL as u8, SizedValue::Byte(al1.overflowing_add(6)));
vm.set_reg(Reg8::AH as u8, SizedValue::Byte(ah.overflowing_add(1)));
vm.flags.adjust = true;
vm.flags.carry = true;
} else {
vm.flags.adjust = false;
vm.flags.carry = false;
}
al = vm.get_reg(Reg8::AL as u8, ValueSize::Byte)?.u8_exact()?;
vm.set_reg(Reg8::AL as u8, SizedValue::Byte(al2 & 0x0F));
Ok(())
}
我只是试图访问struct字段实现的函数,我不知道为什么编译器会告诉我使用逗号而不是句号。此外,我不知道为什么它需要逗号或冒号而不是else语句。if-else似乎完全对齐。还有人碰到这个吗?这是一个编译器错误吗 您的问题是if条件下的
|
。它不是解析为逻辑OR(|
),而是解析为两个独立的按位OR运算符(|
)。只需将其更改为|
,中间无空格即可
一个简单的例子:
fn main() {
let adjust = true;
let al = 0xFF;
/* does not parse:
if (al & 0x0F) > 9 | | adjust {
}
*/
if (al & 0x0F) > 9 || adjust {
}
}
fn main() {
let adjust = true;
let al = 0xFF;
/* does not parse:
if (al & 0x0F) > 9 | | adjust {
}
*/
if (al & 0x0F) > 9 || adjust {
}
}