ht's Scheme Interpreter  1.0
a simplified scheme interpreter implementation
float.cpp
Go to the documentation of this file.
1 #include "arch.hpp"
2 #include "float.hpp"
3 #include <cstddef>
4 #include <string>
5 #include <cctype>
6 #include <algorithm>
7 namespace
8 {
9  bool isSimpleFloat(const std::string& s)
10  {
11  if (s=="") return false;
12  size_t pos = 0;
13  while (pos<s.size() && !std::isdigit(s[pos]) && s[pos]!='.')
14  {
15  if (s[pos]!='-' && s[pos]!='+') return false;
16  ++pos;
17  }
18  if (pos>=s.size()) return false;
19 
20  int cnt = std::count(s.begin()+pos, s.end(), '.');
21  if (cnt>1) return false;
22  if (cnt==0)
23  {
24  for(size_t i=pos; i<s.size(); ++i)
25  if (!std::isdigit(s[i]))
26  return false;
27  return true;
28  } else
29  {
30  if (pos == s.size() -1)
31  return false;
32  for(size_t i=pos; i<s.size(); ++i)
33  if (!std::isdigit(s[i]) && s[i]!='.')
34  return false;
35  return true;
36  }
37  }
38 }
39 
40 
41 bool isFloat(const std::string& token)
42 {
43  size_t posE = std::min( token.find('e'), token.find('E'));
44  return
45 
46 ExtraInfo getFloatExtraInfo(const std::string& token);
bool isFloat(const std::string &token)
Definition: float.cpp:41