我正在Rust写一个玩具编程语言.我在Ruby中构建了解析器逻辑原型:
def rd_tree(chars)
loop do
case c = chars.next
when /\s/
# whitespace stuff
when "("
# open paren stuff
when ")"
# close paren stuff
else
# default stuff
end
end
end
Run Code Online (Sandbox Code Playgroud)
现在我将它转换为Rust:
fn rd_tree(chars: std::str::Chars) {
while let Some(c) = chars.next() {
if c.is_whitespace() {
// whitespace stuff
} else if c == '(' {
// open paren stuff
} else if c == ')' {
// close paren stuff
} else {
// default stuff
}
} …Run Code Online (Sandbox Code Playgroud)