Произошла ошибка с определением моего файла лексера, которое, как мне кажется, скомпилировано, когда я сделал следующее определение лексера. Эксперты могут глубже понять причины, а понимание того, что у меня есть тип лексбуфа, который используется в лексере, должно как-то быть связано с определением, которое анализатор генерирует
{
open System
open LanguageParser
open Microsoft.FSharp.Text.Lexing
open Microsoft.FSharp.Text.Parsing
open System.Text
let newline (lexbuf:LexBuffer<_>) = lexbuf.EndPos <- lexbuf.EndPos.NextLine
}
let char = ['a'-'z' 'A'-'Z']
let digit = ['0'-'9']
let float = '-'?digit+ '.' digit+
let ident = char+ (char | digit)*
let whitespace = [' ' '\t']
let newline = ('\n' | '\r' '\n')
rule tokenize = parse
| "maximize" { MAXIMIZE }
| "minimize" { MINIMIZE }
| "where" { WHERE }
| '+' { PLUS }
| '-' { MINUS }
| '*' { MULTIPLY }
| '=' { EQUALS }
| '>' { STRICTGREATERTHAN }
| '<' { STRICTLESSTHAN }
| ">=" { GREATERTHANEQUALS }
| "<=" { LESSTHANEQUALS }
| '[' { LSQUARE }
| ']' { RSQUARE }
| whitespace { tokenize lexbuf }
| newline { newline lexbuf; tokenize lexbuf }
| ident { ID <| Encoding.UTF8.GetString(lexbuf.Lexeme) }
| float { FLOAT <| Double.Parse(Encoding.UTF8.GetString(lexbuf.Lexeme)) }
| ';' { SEMICOLON }
| eof { EOF }
| _ { failwith ("Unexpected Character") }