int main() { boost::optional<int> maybe = maybeInt(); if(!maybe) std::cout << "object is null\n"; }
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; }