mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 06:17:34 +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
|
@ -231,7 +231,7 @@ Vector<Endpoint> parse(ByteBuffer const& file_contents)
|
|||
consume_whitespace();
|
||||
parse_includes();
|
||||
consume_whitespace();
|
||||
lexer.consume_specific("endpoint");
|
||||
lexer.consume_specific("endpoint"sv);
|
||||
consume_whitespace();
|
||||
endpoints.last().name = lexer.consume_while([](char ch) { return !isspace(ch); });
|
||||
endpoints.last().magic = Traits<ByteString>::hash(endpoints.last().name);
|
||||
|
|
|
@ -166,7 +166,7 @@ EasingFunctionMetadata easing_function_metadata(EasingFunction easing_function)
|
|||
auto parameter_type_name = lexer.consume_until([](char ch) { return ch == ' ' || ch == '>'; });
|
||||
auto has_bounds = false;
|
||||
auto is_optional = false;
|
||||
if (lexer.consume_specific(" [")) {
|
||||
if (lexer.consume_specific(" ["sv)) {
|
||||
has_bounds = true;
|
||||
auto contents = lexer.consume_until(']');
|
||||
VERIFY(contents == "0, 1"sv);
|
||||
|
|
|
@ -28,7 +28,7 @@ static void consume_whitespace(GenericLexer& lexer)
|
|||
while (consumed) {
|
||||
consumed = lexer.consume_while(is_ascii_space).length() > 0;
|
||||
|
||||
if (lexer.consume_specific("//")) {
|
||||
if (lexer.consume_specific("//"sv)) {
|
||||
lexer.consume_until('\n');
|
||||
lexer.ignore();
|
||||
consumed = true;
|
||||
|
|
|
@ -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