Add match parsing (#3664)

Adds `match` parsing to toolchain
This commit is contained in:
czapiga
2024-02-13 00:27:06 +00:00
committed by GitHub
parent cc6f21e402
commit 99bc9734d9
21 changed files with 1356 additions and 17 deletions
+13 -1
View File
@@ -6,7 +6,7 @@
namespace Carbon::Parse {
// Handles ParenConditionAs(If|While).
// Handles ParenConditionAs(If|While|Match).
static auto HandleParenCondition(Context& context, NodeKind start_kind,
State finish_state) -> void {
auto state = context.PopState();
@@ -39,6 +39,11 @@ auto HandleParenConditionAsWhile(Context& context) -> void {
State::ParenConditionFinishAsWhile);
}
auto HandleParenConditionAsMatch(Context& context) -> void {
HandleParenCondition(context, NodeKind::MatchConditionStart,
State::ParenConditionFinishAsMatch);
}
auto HandleParenConditionFinishAsIf(Context& context) -> void {
auto state = context.PopState();
@@ -52,4 +57,11 @@ auto HandleParenConditionFinishAsWhile(Context& context) -> void {
NodeKind::WhileCondition);
}
auto HandleParenConditionFinishAsMatch(Context& context) -> void {
auto state = context.PopState();
context.ConsumeAndAddCloseSymbol(state.token, state,
NodeKind::MatchCondition);
}
} // namespace Carbon::Parse