Sprache: анализировать целое число со знаком
Интересно, есть ли лучший способ для анализа подписанного целого числа с использованием фреймворка Sprache?
Хорошо известно определение парсера для целых чисел без знакаParse.Number.Select(int.Parse)
Но я хочу разобрать целые числа с -
префикс также.
Что у меня есть сейчас Parse.Regex(@"\-?\d+").Select(int.Parse)
,
Есть ли лучший способ сделать это без использования регулярных выражений?
Например использовать Parse.Char('-').Optional()
а затем разобрать следующий номер.
Спасибо
1 ответ
Решение
То, как я это делаю, похоже на следующее:
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 в зависимости от контекста того, что вы анализируете.