### Godot version

4.0 beta 16 and 17

### System information

Windows 11

### Issue description

Before beta 16 you could write `@export_category(name)` and it would make a category with "name" as the name.
Now you must use a string when defining the category name. (`@export_category("name")`)
The issue is that the moment you type something that doesn't start with `"` the engine crashes.

### Steps to reproduce

1. Create a script.
2. Write one of the following:
a) `@export_category()`
b) `@export_group()`
c) `@export_subgroup()`
3. In the parentheses write *any* character other than `"`.
4. Watch it crash.

If you managed to save the file the project will crash when opened.

### Minimal reproduction project

[Minimal.zip](https://github.com/godotengine/godot/files/10561826/Minimal.zip)

}
GDScriptParser::MatchNode *GDScriptParser::parse_match() {
	MatchNode *match = alloc_node<MatchNode>();
	match->test = parse_expression(false);
	if (match->test == nullptr) {
		push_error(R"(Expected expression to test after "match".)");
	}
	consume(GDScriptTokenizer::Token::COLON, R"(Expected ":" after "match" expression.)");
	consume(GDScriptTokenizer::Token::NEWLINE, R"(Expected a newline after "match" statement.)");
	if (!consume(GDScriptTokenizer::Token::INDENT, R"(Expected an indented block after "match" statement.)")) {
		complete_extents(match);
		return match;
	}
	bool all_have_return = true;
	bool have_wildcard = false;
	while (!check(GDScriptTokenizer::Token::DEDENT) && !is_at_end()) {
		MatchBranchNode *branch = parse_match_branch();
		if (branch == nullptr) {
			advance();
			continue;
		}
#ifdef DEBUG_ENABLED
		if (have_wildcard && !branch->patterns.is_empty()) {
			push_warning(branch->patterns[0], GDScriptWarning::UNREACHABLE_PATTERN);
		}
#endif
		have_wildcard = have_wildcard || branch->has_wildcard;
		all_have_return = all_have_return && branch->block->has_return;
		match->branches.push_back(branch);
	}