fslex - совпадение проблем с ограничителем строки

Пожалуйста, рассмотрите этот кусок лексера, который я создаю:

let newline = "\n\r" | '\n' | '\r'
let dot = "\."
let lineTerminator  = "\."newline

rule tokenize = parse
  ...
  | lineTerminator  { lexbuf.EndPos <- lexbuf.EndPos.NextLine; tokenize lexbuf; }
  | newline         { lexbuf.EndPos <- lexbuf.EndPos.NextLine; tokenize lexbuf }
  | eof             { EOF }
  | _ { failwithf "unrecognized input: '%s'" <| lexeme lexbuf }

В строке, оканчивающейся точкой, текущий буфер будет находиться в символе, где находится точка, и скажет, что он не может распознать ввод.

Я действительно не знаю, что я делаю неправильно.

0 ответов

Другие вопросы по тегам