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 в зависимости от контекста того, что вы анализируете.

Другие вопросы по тегам