def decimal_step

cli@0.2.0.0 · cli.bend:1959

import cli@0.2.0.0/cli.bend as Cli
import Base

1959def decimal_step(state: DecimalState, +c: Char) -> DecimalState:
1960  match state:
1961    case DecStart{}:
1962      Bool.pick(DecimalState, Char.is_eq(c, '-'), DecAfterMinus{},
1963        Bool.pick(DecimalState, Char.is_digit(c), DecInt{},
1964          Bool.pick(DecimalState, Char.is_eq(c, '.'), DecDotFirst{}, DecInvalid{})))
1965    case DecAfterMinus{}:
1966      Bool.pick(DecimalState, Char.is_digit(c), DecInt{},
1967        Bool.pick(DecimalState, Char.is_eq(c, '.'), DecDotFirst{}, DecInvalid{}))
1968    case DecInt{}:
1969      Bool.pick(DecimalState, Char.is_digit(c), DecInt{},
1970        Bool.pick(DecimalState, Char.is_eq(c, '.'), DecDotAfterInt{},
1971          Bool.pick(DecimalState, is_exponent(c), DecExpStart{}, DecInvalid{})))
1972    case DecDotFirst{}:
1973      Bool.pick(DecimalState, Char.is_digit(c), DecFrac{}, DecInvalid{})
1974    case DecDotAfterInt{}:
1975      Bool.pick(DecimalState, Char.is_digit(c), DecFrac{},
1976        Bool.pick(DecimalState, is_exponent(c), DecExpStart{}, DecInvalid{}))
1977    case DecFrac{}:
1978      Bool.pick(DecimalState, Char.is_digit(c), DecFrac{},
1979        Bool.pick(DecimalState, is_exponent(c), DecExpStart{}, DecInvalid{}))
1980    case DecExpStart{}:
1981      Bool.pick(DecimalState, is_sign(c), DecExpSign{},
1982        Bool.pick(DecimalState, Char.is_digit(c), DecExpDigits{}, DecInvalid{}))
1983    case DecExpSign{}:
1984      Bool.pick(DecimalState, Char.is_digit(c), DecExpDigits{}, DecInvalid{})
1985    case DecExpDigits{}:
1986      Bool.pick(DecimalState, Char.is_digit(c), DecExpDigits{}, DecInvalid{})
1987    case DecInvalid{}:
1988      DecInvalid{}

Uses (7)

Used by (1)