void Parser::ParseIncludeDirective() {
Tokenizer::Token t(GetToken());
AssertTokenType(t.type, Tokenizer::Token::STRING);
void Parser::ParseIncludeDirective() {
Tokenizer::Token t(GetToken());
AssertTokenType(t.type, Tokenizer::Token::STRING);
bool Parser::BeginningOfLiteral(const Tokenizer::Token &t) const {
switch (t.type) {
case Tokenizer::Token::CHEVRON_OPEN:
bool Parser::BeginningOfLiteral(const Tokenizer::Token &t) const {
switch (t.type) {
case Tokenizer::Token::CHEVRON_OPEN:
case Tokenizer::Token::BRACKET_OPEN:
case Tokenizer::Token::PARENTHESIS_OPEN:
case Tokenizer::Token::NUMBER:
case Tokenizer::Token::BRACKET_OPEN:
case Tokenizer::Token::PARENTHESIS_OPEN:
case Tokenizer::Token::NUMBER:
return new Literal(red.number, green.number, blue.number);
} else if (t.type != Tokenizer::Token::COMMA) {
Tokenizer::Token alpha(GetToken());
return new Literal(red.number, green.number, blue.number);
} else if (t.type != Tokenizer::Token::COMMA) {
Tokenizer::Token alpha(GetToken());