使用fslex我想为一个模式返回多个标记,但我看不到如何实现这一点。即使使用另一个返回多个令牌的规则函数也对我有用。
我正在尝试使用这样的东西:
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 还很陌生,所以我很高兴看到正确方向的任何指示。