MCPcopy Create free account
hub / github.com/SerenityOS/jakt / parse_attribute

Method parse_attribute

bootstrap/stage0/parser.cpp:1824–1999  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1822}
1823
1824JaktInternal::Optional<Jakt::parser::ParsedAttribute> Jakt::parser::Parser::parse_attribute() {
1825{
1826Jakt::utility::Span const span = this->current().span();
1827ByteString const name = ({
1828 auto&& _jakt_value = ([&]() -> JaktInternal::ExplicitValueOrControlFlow<ByteString, JaktInternal::Optional<Jakt::parser::ParsedAttribute>>{
1829auto&& __jakt_match_variant = this->current();
1830switch(__jakt_match_variant.__jakt_init_index()) {
1831case 3 /* Identifier */: {
1832auto&& __jakt_match_value = __jakt_match_variant.as.Identifier;ByteString const& name = __jakt_match_value.name;
1833{
1834this->index++;
1835return JaktInternal::ExplicitValue<ByteString>(name);
1836}
1837VERIFY_NOT_REACHED();
1838};/*case end*/
1839case 100 /* This */:{
1840this->index++;
1841return JaktInternal::ExplicitValue<ByteString>(ByteString::from_utf8_without_validation("this"sv));
1842}
1843VERIFY_NOT_REACHED();
1844default:{
1845this->error(ByteString::from_utf8_without_validation("Expected identifier"sv),this->current().span());
1846this->index++;
1847return JaktInternal::OptionalNone();
1848}
1849}/*switch end*/
1850}()
1851);
1852 if (_jakt_value.is_return())
1853 return _jakt_value.release_return();
1854 _jakt_value.release_value();
1855});
1856JaktInternal::DynamicArray<Jakt::parser::ParsedAttributeArgument> arguments = DynamicArray<Jakt::parser::ParsedAttributeArgument>::create_with({});
1857if (this->current().__jakt_init_index() == 7 /* LParen */){
1858this->index++;
1859while ((!this->eof()) && (!(this->current().__jakt_init_index() == 8 /* RParen */))){
1860Jakt::utility::Span const span = this->current().span();
1861ByteString const argument_name = ({
1862 auto&& _jakt_value = ([&]() -> JaktInternal::ExplicitValueOrControlFlow<ByteString, JaktInternal::Optional<Jakt::parser::ParsedAttribute>>{
1863auto&& __jakt_match_variant = this->current();
1864switch(__jakt_match_variant.__jakt_init_index()) {
1865case 3 /* Identifier */: {
1866auto&& __jakt_match_value = __jakt_match_variant.as.Identifier;ByteString const& name = __jakt_match_value.name;
1867{
1868this->index++;
1869return JaktInternal::ExplicitValue<ByteString>(name);
1870}
1871VERIFY_NOT_REACHED();
1872};/*case end*/
1873case 100 /* This */:{
1874this->index++;
1875return JaktInternal::ExplicitValue<ByteString>(ByteString::from_utf8_without_validation("this"sv));
1876}
1877VERIFY_NOT_REACHED();
1878case 1 /* QuotedString */: {
1879auto&& __jakt_match_value = __jakt_match_variant.as.QuotedString;ByteString const& quote = __jakt_match_value.quote;
1880{
1881this->index++;

Callers 1

parse_attribute_listMethod · 0.95

Calls 14

currentMethod · 0.95
errorMethod · 0.95
eofMethod · 0.95
OptionalNoneClass · 0.85
ParsedAttributeClass · 0.85
spanMethod · 0.45
__jakt_init_indexMethod · 0.45
is_returnMethod · 0.45
release_returnMethod · 0.45
release_valueMethod · 0.45
is_loop_breakMethod · 0.45

Tested by

no test coverage detected