E4222

E4222#

编译器诊断名称:invalid_lexscan_target

无效的词法匹配目标。

lexmatch 接受内存中的 StringStringViewlexscan 接受内存中的 @lexbuf.StringScanner、同步的 @lexbuf.Lexbuf 或异步的 @lexbuf.AsyncLexbufStringStringView 值不是有效的 lexscan 目标;如只需对一个内存值进行匹配,请使用 lexmatch,如需在多次扫描之间维护游标,请构造 StringScanner。数字或用户自定义的类词法缓冲区类型等其他值不能由这些表达式匹配。

错误示例#

///|
pub fn scan_text(text : String) -> Unit {
  lexscan text with longest {
    _ => ()
  }
}

建议#

请对字符串类型的值使用 lexmatch,或者为 lexscan 创建 StringScannerLexbufAsyncLexbuf

///|
pub fn match_text(text : String) -> Unit {
  lexmatch text with longest {
    _ => ()
  }
}