2
我的程序中有令牌数据类型。它看起来像这样:向haskell类型添加其他信息
data Token
= StringToken Strin
| NumberToken Integer
| IfToken
| ElseToken
... -- lots of tokens here
我在我的解析器中使用这种数据类型蚂蚁它工作正常。但是现在我想为令牌附加一些额外的信息(源位置信息)。所以,我可以改变我的数据类型声明和使用记录:
data Token
= StringToken {value :: String, srcLoc :: SourceLocation}
| NumberToken {value :: String, srcLoc :: SourceLocation}
| IfToken {srcLoc :: SourceLocation}
| ElseToken {srcLoc :: SourceLocation}
... -- lots of tokens here
但是这种解决方案似乎并不十分实用,美观到我。那么这个问题有更好的解决方案吗? 谢谢。
http://stackoverflow.com/questions/16204177/how-should-i-represent-an-ast-annotated-with-additional-information – Arjan 2013-05-12 15:04:02
@Arjan谢谢,它对我很有用。 – sergeyz 2013-05-12 19:14:22