Add '*' and '?' and optional brace parse calls to the Parser

Closes #245

PiperOrigin-RevId: 281321459
Change-Id: Ica88f3e1d6c3441b43797fbdf20cfb51bd7fb719
This commit is contained in:
Eric Schweitz 2019-11-19 10:13:33 -08:00 committed by TensorFlower Gardener
parent a1233b60dc
commit cd67f4f372
2 changed files with 32 additions and 0 deletions

View File

@ -185,9 +185,15 @@ public:
/// Parse a '{' token.
virtual ParseResult parseLBrace() = 0;
/// Parse a '{' token if present
virtual ParseResult parseOptionalLBrace() = 0;
/// Parse a `}` token.
virtual ParseResult parseRBrace() = 0;
/// Parse a `}` token if present
virtual ParseResult parseOptionalRBrace() = 0;
/// Parse a `:` token.
virtual ParseResult parseColon() = 0;
@ -264,6 +270,12 @@ public:
/// Parse a `...` token if present;
virtual ParseResult parseOptionalEllipsis() = 0;
/// Parse a `?` token.
virtual ParseResult parseOptionalQuestion() = 0;
/// Parse a `*` token.
virtual ParseResult parseOptionalStar() = 0;
//===--------------------------------------------------------------------===//
// Attribute Parsing
//===--------------------------------------------------------------------===//

View File

@ -501,11 +501,21 @@ public:
return parser.parseToken(Token::l_brace, "expected '{'");
}
/// Parse a '{' token if present
ParseResult parseOptionalLBrace() override {
return success(parser.consumeIf(Token::l_brace));
}
/// Parse a `}` token.
ParseResult parseRBrace() override {
return parser.parseToken(Token::r_brace, "expected '}'");
}
/// Parse a `}` token if present
ParseResult parseOptionalRBrace() override {
return success(parser.consumeIf(Token::r_brace));
}
/// Parse a `:` token.
ParseResult parseColon() override {
return parser.parseToken(Token::colon, "expected ':'");
@ -596,6 +606,16 @@ public:
return success(parser.consumeIf(Token::r_square));
}
/// Parses a '?' if present.
ParseResult parseOptionalQuestion() override {
return success(parser.consumeIf(Token::question));
}
/// Parses a '*' if present.
ParseResult parseOptionalStar() override {
return success(parser.consumeIf(Token::star));
}
/// Returns if the current token corresponds to a keyword.
bool isCurrentTokenAKeyword() const {
return parser.getToken().is(Token::bare_identifier) ||