
- 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
23 lines
805 B
C++
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: └─}
|