diff --git a/third_party/mlir/include/mlir/IR/DialectImplementation.h b/third_party/mlir/include/mlir/IR/DialectImplementation.h index b8452acc7fb..c645a2427b2 100644 --- a/third_party/mlir/include/mlir/IR/DialectImplementation.h +++ b/third_party/mlir/include/mlir/IR/DialectImplementation.h @@ -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 //===--------------------------------------------------------------------===// diff --git a/third_party/mlir/lib/Parser/Parser.cpp b/third_party/mlir/lib/Parser/Parser.cpp index 9dd6d507ab9..e7842d375a3 100644 --- a/third_party/mlir/lib/Parser/Parser.cpp +++ b/third_party/mlir/lib/Parser/Parser.cpp @@ -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) ||