Implement parser/IR support for CFG functions, basic blocks and return instruction.
This is pretty much minimal scaffolding for this step. Basic block arguments,
instructions, other terminators, a proper IR representation for
blocks/instructions, etc are all coming.
PiperOrigin-RevId: 201826439
diff --git a/lib/Parser/Lexer.cpp b/lib/Parser/Lexer.cpp
index 2e79271..5d224c7 100644
--- a/lib/Parser/Lexer.cpp
+++ b/lib/Parser/Lexer.cpp
@@ -66,9 +66,12 @@
// Ignore whitespace.
return lexToken();
+ case ':': return formToken(Token::colon, tokStart);
case ',': return formToken(Token::comma, tokStart);
case '(': return formToken(Token::l_paren, tokStart);
case ')': return formToken(Token::r_paren, tokStart);
+ case '{': return formToken(Token::l_brace, tokStart);
+ case '}': return formToken(Token::r_brace, tokStart);
case '<': return formToken(Token::less, tokStart);
case '>': return formToken(Token::greater, tokStart);
@@ -148,6 +151,7 @@
.Case("int", Token::kw_int)
.Case("memref", Token::kw_memref)
.Case("mlfunc", Token::kw_mlfunc)
+ .Case("return", Token::kw_return)
.Case("tensor", Token::kw_tensor)
.Case("vector", Token::kw_vector)
.Default(Token::bare_identifier);