私の現在のプロジェクトには、スクリプト コードの字句解析と解析が含まれているため、fslex と fsyacc を使用しています。Fslex LexBuffers にはいずれかLexBuffer<char>
のLexBuffer<byte>
種類があり、両方を使用するオプションが必要です。
両方を使用するには、タイプ ^buf -> string の語彙素関数が必要です。これまでのところ、私の専門化の試みは次のようになっています。
let inline lexeme (lexbuf: ^buf) : ^buf -> string where ^buf : (member Lexeme: char array) =
new System.String(lexbuf.Lexeme)
let inline lexeme (lexbuf: ^buf) : ^buf -> string where ^buf : (member Lexeme: byte array) =
System.Text.Encoding.UTF8.GetString(lexbuf.Lexeme)
関数本体の型は である必要があるという型エラーが表示されます^buf -> string
が、推定される型は ですstring
。明らかに、私は何か(主に?) 間違っています。
私が試みていることはF#でも可能ですか? もしそうなら、誰かが私に適切な道を教えてもらえますか?
ありがとう!