请考虑我正在构建的词法分析器:
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 }
在以点结尾的行上,当前缓冲区将位于点所在的字符处,并表示无法识别输入。
我真的不知道自己做错了什么。