+RefPtr<Literal> Parser::parse_literal()
+{
+ RefPtr<Literal> literal = create_node<Literal>();
+ literal->token = tokenizer.parse_token();
+ if(isdigit(literal->token[0]))
+ {
+ // TODO have the tokenizer return the type of the token
+ if(isnumrc(literal->token))
+ literal->value = lexical_cast<int>(literal->token);
+ else
+ literal->value = lexical_cast<float>(literal->token);
+ }
+ else if(literal->token=="true" || literal->token=="false")
+ literal->value = (literal->token=="true");
+ else
+ throw parse_error(tokenizer.get_location(), literal->token, "a literal");
+
+ return literal;
+}
+