diff --git a/libs/parser/rules/pslang.y b/libs/parser/rules/pslang.y index cb1b14b..77ea339 100644 --- a/libs/parser/rules/pslang.y +++ b/libs/parser/rules/pslang.y @@ -48,7 +48,12 @@ template { T value; #ifdef __clang__ - value = std::strtoll(str.data(), nullptr, 10); + if constexpr (std::is_floating_point_v) + value = std::atof(str.data()); + else if constexpr (std::is_signed_v) + value = std::strtoll(str.data(), nullptr, 10); + else + value = std::strtoull(str.data(), nullptr, 10); #else auto result = std::from_chars(str.data(), str.data() + str.size(), value); if (result.ec != std::errc())