jef*_*eff 3 f# lexical-analysis
我用F#制作了扫描仪.目前,它返回一组带有类型(Token,string)的元组列表.
理想情况下,我想返回可能包含不同类型的元组列表.例如:
(Token, string)
//if it's an identifier
(Token, float)
//if it's a float.
(Token, int)
//etc
Run Code Online (Sandbox Code Playgroud)
所以,基本上我想返回类型,(Token, _) 但我不知道如何指定它.现在它只是抱怨错误类型的错误.我正在浏览我的书和wikibooks,但我不确定这是什么.
如果这真的不可能,我想我可以稍后转换类型,但我希望我能以这种方式返回东西.
kvb*_*kvb 12
在F#中有两种相对简单的方法可以解决这个问题.一个是创建一个受歧视的联盟:
type Expression =
| Identifier of string
| FloatValue of float
| IntValue of int
| ...
Run Code Online (Sandbox Code Playgroud)
然后定义你的函数,使它返回一个(Token * Expression) list.另一种可能性是将所有东西都装入一个物体,然后返回一个(Token * obj) list.这对于列表的制作者来说稍微容易一些,但对于消费者来说更烦人.
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |