Esempio n. 1
0
int main()
{
  boost::optional<int> maybe = maybeInt();

  if(!maybe)
    std::cout << "object is null\n";
}
Esempio n. 2
0
token_type getToken(const char *text, int *len) {
  token_type ret = tok_error;
  int n = 0;

  if (text[0] == '\0') {
    return tok_eof;
  }
  
  if (text[0] == '\n') {
    *len = 1;
    return tok_newline;
  }

  if (text[0] == '(') {
    *len = 1;
    return tok_open;
  }

  if (text[0] == ')') {
    *len = 1;
    return tok_close;
  }

  if (text[0] == '*') {
    *len = 1;
    return tok_mul;
  }

  if (text[0] == '/') {
    *len = 1;
    return tok_div;
  }

  if (text[0] == '>') {
    *len = 1;
    return tok_gt;
  }

  if (text[0] == '<') {
    *len = 1;
    return tok_lt;
  }

  if (text[0] == '=') {
    *len = 1;
    return tok_eq;
  }

  if (isWhitespace(text[0])) {
    do {
      n++;
    } while (isWhitespace(text[n]));
    *len = n;
    return tok_space;
  }

  if (maybeInt(text)) {
    return getIntToken(text, len);
  }

  if (isIdChar0(text[0])) {
    return getIdToken(text, len);
  }

  return ret;
}