diff --git a/components/fx/lexer.cpp b/components/fx/lexer.cpp index e2759e7af0..07d7f060a4 100644 --- a/components/fx/lexer.cpp +++ b/components/fx/lexer.cpp @@ -1,9 +1,14 @@ #include "lexer.hpp" #include -#include #include +#ifndef __cpp_lib_to_chars +#include +#else +#include +#endif + namespace Fx { namespace Lexer @@ -289,8 +294,14 @@ namespace Fx Token Lexer::scanNumber() { double buffer; +#ifndef __cpp_lib_to_chars + char* endPtr = nullptr; + buffer = std::strtod(mHead, &endPtr); + if (endPtr == nullptr || endPtr == mHead) +#else const auto [endPtr, ec] = std::from_chars(mHead, mTail, buffer); if (ec != std::errc()) +#endif error("critical error while parsing number"); std::string_view literal(mHead, endPtr);