Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道是否有更好的方法来使用Sprache解析器框架解析有符号整数。
没有符号的整数有众所周知的解析器定义 Parse.Number.Select(int.Parse)
Parse.Number.Select(int.Parse)
但我也想解析带-前缀的整数。
-
我现在得到的是Parse.Regex(@"\-?\d+").Select(int.Parse)。
Parse.Regex(@"\-?\d+").Select(int.Parse)
有没有更好的方法可以在不使用正则表达式的情况下做到这一点?
例如使用Parse.Char('-').Optional()然后解析以下数字。
Parse.Char('-').Optional()
谢谢
我这样做的方式类似于以下内容:
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 部分。