我想知道是否有更好的方法使用Sprache解析器框架解析有符号整数。
对于没有符号的整数,有众所周知的解析器定义
Parse.Number.Select(int.Parse)
但我想用-
前缀解析整数。
我现在所拥有的是Parse.Regex(@"\-?\d+").Select(int.Parse)
。
如果不使用正则表达式,有没有更好的方法呢?
例如,使用Parse.Char('-').Optional()
,然后解析以下编号。
由于
答案 0 :(得分:5)
我这样做的方式类似于以下内容:
from op in Parse.Optional(Parse.Char('-').Token())
from num in Parse.Decimal
from trailingSpaces in Parse.Char(' ').Many()
select decimal.Parse(num) * (op.IsDefined ? -1 : 1);
当然,请根据您正在解析的内容忽略trailingSpaces部分。