diff options
Diffstat (limited to 'dhall_core/src')
-rw-r--r-- | dhall_core/src/parser.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/dhall_core/src/parser.rs b/dhall_core/src/parser.rs index f888f94..55fb177 100644 --- a/dhall_core/src/parser.rs +++ b/dhall_core/src/parser.rs @@ -406,7 +406,7 @@ make_parser! { token_rule!(minus_infinity_literal<()>); token_rule!(plus_infinity_literal<()>); - rule!(double_literal<core::Double>; + rule!(numeric_double_literal<core::Double>; captured_str!(s) => { let s = s.trim(); match s.parse::<f64>() { @@ -418,6 +418,13 @@ make_parser! { } ); + rule!(double_literal<core::Double>; children!( + [numeric_double_literal(n)] => n, + [minus_infinity_literal(n)] => std::f64::NEG_INFINITY.into(), + [plus_infinity_literal(n)] => std::f64::INFINITY.into(), + [NaN(n)] => std::f64::NAN.into(), + )); + rule!(natural_literal<core::Natural>; captured_str!(s) => { s.trim() @@ -737,11 +744,6 @@ make_parser! { rule!(literal_expression<ParsedExpr> as expression; children!( [double_literal(n)] => Expr::DoubleLit(n), - [minus_infinity_literal(n)] => - Expr::DoubleLit(std::f64::NEG_INFINITY.into()), - [plus_infinity_literal(n)] => - Expr::DoubleLit(std::f64::INFINITY.into()), - [NaN(n)] => Expr::DoubleLit(std::f64::NAN.into()), [natural_literal(n)] => Expr::NaturalLit(n), [integer_literal(n)] => Expr::IntegerLit(n), [double_quote_literal(s)] => Expr::TextLit(s), |