mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:57:45 +00:00
JSSpecCompiler: Parse "NewTarget" in xspec mode
This commit is contained in:
parent
4d8f74c149
commit
ba61b61d67
4 changed files with 5 additions and 1 deletions
|
@ -135,6 +135,7 @@ class WellKnownNode : public Expression {
|
||||||
public:
|
public:
|
||||||
enum Type {
|
enum Type {
|
||||||
False,
|
False,
|
||||||
|
NewTarget,
|
||||||
Null,
|
Null,
|
||||||
This,
|
This,
|
||||||
True,
|
True,
|
||||||
|
|
|
@ -39,6 +39,7 @@ void WellKnownNode::dump_tree(StringBuilder& builder)
|
||||||
{
|
{
|
||||||
static constexpr StringView type_to_name[] = {
|
static constexpr StringView type_to_name[] = {
|
||||||
"False"sv,
|
"False"sv,
|
||||||
|
"NewTarget"sv,
|
||||||
"Null"sv,
|
"Null"sv,
|
||||||
"This"sv,
|
"This"sv,
|
||||||
"True"sv,
|
"True"sv,
|
||||||
|
|
|
@ -76,6 +76,7 @@ void tokenize_string(SpecificationParsingContext& ctx, XML::Node const* node, St
|
||||||
{ "?"sv, TokenType::QuestionMark },
|
{ "?"sv, TokenType::QuestionMark },
|
||||||
{ "]"sv, TokenType::SquareBracketClose },
|
{ "]"sv, TokenType::SquareBracketClose },
|
||||||
{ "["sv, TokenType::SquareBracketOpen },
|
{ "["sv, TokenType::SquareBracketOpen },
|
||||||
|
{ "NewTarget"sv, TokenType::WellKnownValue },
|
||||||
};
|
};
|
||||||
|
|
||||||
LineTrackingLexer lexer(view, node->offset);
|
LineTrackingLexer lexer(view, node->offset);
|
||||||
|
@ -95,7 +96,7 @@ void tokenize_string(SpecificationParsingContext& ctx, XML::Node const* node, St
|
||||||
bool matched = false;
|
bool matched = false;
|
||||||
for (auto const& [text_to_match, token_type] : choices) {
|
for (auto const& [text_to_match, token_type] : choices) {
|
||||||
if (lexer.consume_specific(text_to_match)) {
|
if (lexer.consume_specific(text_to_match)) {
|
||||||
tokens.append({ token_type, ""sv, move(token_location) });
|
tokens.append({ token_type, text_to_match, move(token_location) });
|
||||||
matched = true;
|
matched = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -220,6 +220,7 @@ TextParseErrorOr<Tree> TextParser::parse_value()
|
||||||
WellKnownNode::Type type;
|
WellKnownNode::Type type;
|
||||||
} translations[] = {
|
} translations[] = {
|
||||||
{ "false"sv, WellKnownNode::Type::False },
|
{ "false"sv, WellKnownNode::Type::False },
|
||||||
|
{ "NewTarget"sv, WellKnownNode::Type::NewTarget },
|
||||||
{ "null"sv, WellKnownNode::Type::Null },
|
{ "null"sv, WellKnownNode::Type::Null },
|
||||||
{ "this"sv, WellKnownNode::Type::This },
|
{ "this"sv, WellKnownNode::Type::This },
|
||||||
{ "true"sv, WellKnownNode::Type::True },
|
{ "true"sv, WellKnownNode::Type::True },
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue