E4216#
コンパイラ診断名:lexscan_catchall_binder_not_supported。
lexscan のキャッチオールケースで束縛パターンが使用されています。
lexscan は正規表現がマッチした場合だけ入力を消費します。最後のキャッチオールは入力の終端も処理するため、マッチした部分文字列を束縛しません。このケースには _ を使い、テキストが必要な正規表現ケースでは as で束縛してください。対象がメモリ内の @lexbuf.StringScanner である場合も同様です。
誤った例#
///|
pub fn next_token(lexbuf : @lexbuf.Lexbuf) -> String {
lexscan lexbuf {
(re"^[a-z]+" as word) => word.to_owned()
rest => rest.to_owned()
}
}
提案#
キャッチオールの束縛を _ に置き換えてください。
///|
pub fn next_token(lexbuf : @lexbuf.Lexbuf) -> String {
lexscan lexbuf {
(re"^[a-z]+" as word) => word.to_owned()
_ => "end"
}
}