Haojian Wu 2a88fb2ecb [pseudo] Eliminate the dangling-else syntax ambiguity.
- the grammar ambiguity is eliminated by a guard;
- modify the guard function signatures, now all parameters are folded in
  to a single object, avoid a long parameter list (as we will add more
  parameters in the near future);

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D130160
2022-07-22 09:13:09 +02:00

23 lines
805 B
C++

// RUN: clang-pseudo -grammar=cxx -source=%s --start-symbol=statement-seq --print-forest | FileCheck %s
// Verify the else should belong to the nested if statement
if (true) if (true) {} else {}
// CHECK: statement-seq~selection-statement := IF ( condition ) statement
// CHECK-NEXT: ├─IF
// CHECK-NEXT: ├─(
// CHECK-NEXT: ├─condition~TRUE
// CHECK-NEXT: ├─)
// CHECK-NEXT: └─statement~selection-statement
// CHECK-NEXT: ├─IF
// CHECK-NEXT: ├─(
// CHECK-NEXT: ├─condition~TRUE
// CHECK-NEXT: ├─)
// CHECK-NEXT: ├─statement~compound-statement := { }
// CHECK-NEXT: │ ├─{
// CHECK-NEXT: │ └─}
// CHECK-NEXT: ├─ELSE
// CHECK-NEXT: └─statement~compound-statement := { }
// CHECK-NEXT: ├─{
// CHECK-NEXT: └─}