mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 08:35:09 +00:00
AK: Remove ByteString from GenericLexer
A bunch of users used consume_specific with a constant ByteString literal, which can be replaced by an allocation-free StringView literal. The generic consume_while overload gains a requires clause so that consume_specific("abc") causes a more understandable and actionable error.
This commit is contained in:
parent
7c88ab2836
commit
eada4f2ee8
16 changed files with 89 additions and 86 deletions
|
@ -56,7 +56,7 @@ parse_state_machine(StringView input)
|
|||
bool consumed = true;
|
||||
while (consumed) {
|
||||
consumed = lexer.consume_while(isspace).length() > 0;
|
||||
if (lexer.consume_specific("//")) {
|
||||
if (lexer.consume_specific("//"sv)) {
|
||||
lexer.consume_line();
|
||||
consumed = true;
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ parse_state_machine(StringView input)
|
|||
auto consume_number = [&] {
|
||||
int num = 0;
|
||||
consume_whitespace();
|
||||
if (lexer.consume_specific("0x")) {
|
||||
if (lexer.consume_specific("0x"sv)) {
|
||||
auto hex_digits = lexer.consume_while([](char c) {
|
||||
if (isdigit(c)) return true;
|
||||
else {
|
||||
|
@ -107,7 +107,7 @@ parse_state_machine(StringView input)
|
|||
consume_whitespace();
|
||||
condition.begin = consume_number();
|
||||
consume_whitespace();
|
||||
lexer.consume_specific("..");
|
||||
lexer.consume_specific(".."sv);
|
||||
consume_whitespace();
|
||||
condition.end = consume_number();
|
||||
consume_whitespace();
|
||||
|
@ -123,16 +123,16 @@ parse_state_machine(StringView input)
|
|||
auto consume_action = [&]() {
|
||||
StateTransition action;
|
||||
consume_whitespace();
|
||||
lexer.consume_specific("=>");
|
||||
lexer.consume_specific("=>"sv);
|
||||
consume_whitespace();
|
||||
lexer.consume_specific('(');
|
||||
consume_whitespace();
|
||||
if (!lexer.consume_specific("_"))
|
||||
if (!lexer.consume_specific("_"sv))
|
||||
action.new_state = consume_identifier();
|
||||
consume_whitespace();
|
||||
lexer.consume_specific(',');
|
||||
consume_whitespace();
|
||||
if (!lexer.consume_specific("_"))
|
||||
if (!lexer.consume_specific("_"sv))
|
||||
action.action = consume_identifier();
|
||||
consume_whitespace();
|
||||
lexer.consume_specific(')');
|
||||
|
@ -152,10 +152,10 @@ parse_state_machine(StringView input)
|
|||
if (lexer.consume_specific('}')) {
|
||||
break;
|
||||
}
|
||||
if (lexer.consume_specific("@entry")) {
|
||||
if (lexer.consume_specific("@entry"sv)) {
|
||||
consume_whitespace();
|
||||
state.entry_action = consume_identifier();
|
||||
} else if (lexer.consume_specific("@exit")) {
|
||||
} else if (lexer.consume_specific("@exit"sv)) {
|
||||
consume_whitespace();
|
||||
state.exit_action = consume_identifier();
|
||||
} else if (lexer.next_is('@')) {
|
||||
|
@ -176,13 +176,13 @@ parse_state_machine(StringView input)
|
|||
consume_whitespace();
|
||||
if (lexer.is_eof())
|
||||
break;
|
||||
if (lexer.consume_specific("@namespace")) {
|
||||
if (lexer.consume_specific("@namespace"sv)) {
|
||||
consume_whitespace();
|
||||
state_machine->namespaces = lexer.consume_while([](char c) { return isalpha(c) || c == ':'; });
|
||||
} else if (lexer.consume_specific("@begin")) {
|
||||
} else if (lexer.consume_specific("@begin"sv)) {
|
||||
consume_whitespace();
|
||||
state_machine->initial_state = consume_identifier();
|
||||
} else if (lexer.consume_specific("@name")) {
|
||||
} else if (lexer.consume_specific("@name"sv)) {
|
||||
consume_whitespace();
|
||||
state_machine->name = consume_identifier();
|
||||
} else if (lexer.next_is("@anywhere")) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue