Sfoglia il codice sorgente

LibCpp: Support parsing binary "==" Operator

Itamar 4 anni fa
parent
commit
cbb49f26d9

+ 3 - 0
Userland/Libraries/LibCpp/AST.cpp

@@ -203,6 +203,9 @@ void BinaryExpression::dump(size_t indent) const
     case BinaryOp::RightShift:
         op_string = ">>";
         break;
+    case BinaryOp::EqualsEquals:
+        op_string = "==";
+        break;
     }
 
     m_lhs->dump(indent + 1);

+ 1 - 0
Userland/Libraries/LibCpp/AST.h

@@ -371,6 +371,7 @@ enum class BinaryOp {
     BitwiseXor,
     LeftShift,
     RightShift,
+    EqualsEquals
 };
 
 class BinaryExpression : public Expression {

+ 4 - 1
Userland/Libraries/LibCpp/Parser.cpp

@@ -309,7 +309,7 @@ NonnullRefPtr<VariableDeclaration> Parser::parse_variable_declaration(ASTNode& p
         initial_value = parse_expression(var);
     }
 
-    if(expect_semicolon)
+    if (expect_semicolon)
         consume(Token::Type::Semicolon);
 
     var->set_end(position());
@@ -372,6 +372,7 @@ bool Parser::match_secondary_expression()
         || type == Token::Type::LessLessEquals
         || type == Token::Type::GreaterGreater
         || type == Token::Type::GreaterGreaterEquals
+        || type == Token::Type::EqualsEquals
         || type == Token::Type::AndAnd
         || type == Token::Type::PipePipe;
 }
@@ -494,6 +495,8 @@ NonnullRefPtr<Expression> Parser::parse_secondary_expression(ASTNode& parent, No
         return parse_binary_expression(parent, lhs, BinaryOp::Addition);
     case Token::Type::Less:
         return parse_binary_expression(parent, lhs, BinaryOp::LessThan);
+    case Token::Type::EqualsEquals:
+        return parse_binary_expression(parent, lhs, BinaryOp::EqualsEquals);
     case Token::Type::Equals:
         return parse_assignment_expression(parent, lhs, AssignmentOp::Assignment);
     case Token::Type::Dot: {