Unicode代码点的范围从U+000000
到U+10FFFF
。在F#中写自己的词法分析器时,我遇到了以下问题:
对于字符集定义,我打算使用类型为char * char
的简单元组,表示一系列字符。省略一些外围细节,我还需要一个调用All
的范围,它应该是完整的unicode范围。
现在,可以定义一个char文字:let c = '\u3000'
。对于字符串,也可以像这样引用一个真正的32位代码点:let s = "\U0010FFFF"
。但后者不适用于字符。原因是,.NET中的char是16位unicode字符,代码点会产生2个字,而不是1个字。
所以问题是 - 有没有办法可以坚持我的char * char
元组并以某种方式定义我的All
或者我需要将其更改为uint32 * uint32
并定义我的所有内容字符范围为32位值?如果我必须改变,是否有一种类型我应该优先于uint32
我还没有发现?
提前谢谢。