fslexを使用して、1 つのパターンに対して複数のトークンを返したいのですが、それを実現する方法がわかりません。複数のトークンを返す別のルール関数を使用してもうまくいきます。
私はこのようなものを使用しようとしています:
let identifier = [ 'a'-'z' 'A'-'Z' ]+
// ...
rule tokenize = parse
// ...
| '.' identifier '(' { let value = lexeme lexbuf
match operations.TryFind(value) with
// TODO: here is the problem:
// I would like to return like [DOT; op; LPAREN]
| Some op -> op
| None -> ID(value) }
| identifier { ID (lexeme lexbuf) }
// ...
ここで解決しようとしている問題は、が と の間にoperations
ある場合にのみ、事前定義されたトークン (マップを参照)と照合することです。それ以外の場合、一致は として返されます。identifier
.
(
ID
私は fslex にかなり慣れていないので、正しい方向への指針を喜んでいます。