diff options
author | Itamar <itamar8910@gmail.com> | 2021-04-19 19:41:43 +0300 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-04-19 21:48:42 +0200 |
commit | 4831dc0e309d964abcab367d3d9eb714a4646764 (patch) | |
tree | 1ee5cee8f1a343994b45f6f9e69698cfd900bd63 /Userland/Libraries | |
parent | 247f8f8dbb19afcc36711bc77b14e830bb2f9497 (diff) | |
download | serenity-4831dc0e309d964abcab367d3d9eb714a4646764.zip |
LibCpp: Support parsing class declarations
Diffstat (limited to 'Userland/Libraries')
-rw-r--r-- | Userland/Libraries/LibCpp/Parser.cpp | 9 | ||||
-rw-r--r-- | Userland/Libraries/LibCpp/Parser.h | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/Userland/Libraries/LibCpp/Parser.cpp b/Userland/Libraries/LibCpp/Parser.cpp index a78baac06b..f5bbc13e50 100644 --- a/Userland/Libraries/LibCpp/Parser.cpp +++ b/Userland/Libraries/LibCpp/Parser.cpp @@ -128,6 +128,8 @@ NonnullRefPtr<Declaration> Parser::parse_declaration(ASTNode& parent, Declaratio return parse_variable_declaration(parent); case DeclarationType::Enum: return parse_enum_declaration(parent); + case DeclarationType::Class: + return parse_struct_or_class_declaration(parent, StructOrClassDeclaration::Type::Class); case DeclarationType::Struct: return parse_struct_or_class_declaration(parent, StructOrClassDeclaration::Type::Struct); case DeclarationType::Namespace: @@ -640,6 +642,8 @@ Optional<Parser::DeclarationType> Parser::match_declaration_in_translation_unit( return DeclarationType::Function; if (match_enum_declaration()) return DeclarationType::Enum; + if (match_class_declaration()) + return DeclarationType::Class; if (match_struct_declaration()) return DeclarationType::Struct; if (match_namespace_declaration()) @@ -654,6 +658,11 @@ bool Parser::match_enum_declaration() return match_keyword("enum"); } +bool Parser::match_class_declaration() +{ + return match_keyword("class"); +} + bool Parser::match_struct_declaration() { return match_keyword("struct"); diff --git a/Userland/Libraries/LibCpp/Parser.h b/Userland/Libraries/LibCpp/Parser.h index aad21bd9d0..64bc114bc8 100644 --- a/Userland/Libraries/LibCpp/Parser.h +++ b/Userland/Libraries/LibCpp/Parser.h @@ -69,6 +69,7 @@ private: Enum, Struct, Namespace, + Class, }; Optional<DeclarationType> match_declaration_in_translation_unit(); @@ -80,6 +81,7 @@ private: bool match_expression(); bool match_secondary_expression(); bool match_enum_declaration(); + bool match_class_declaration(); bool match_struct_declaration(); bool match_literal(); bool match_unary_expression(); |