Skip to content

Commit

Permalink
[Parser] test binary operator parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
isuckatcs committed Jun 30, 2024
1 parent da9a828 commit 3a5a0c7
Showing 1 changed file with 118 additions and 0 deletions.
118 changes: 118 additions & 0 deletions test/parser/binop.al
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
// RUN: compiler %s -ast-dump 2>&1 | filecheck %s
fn main(): void {
// CHECK: [[# @LINE + 1 ]]:11: error: expected expression
1.0 + |;

// CHECK: [[# @LINE + 1 ]]:17: error: expected expression
1.0 + 1.0 + |;

// CHECK: [[# @LINE + 1 ]]:17: error: expected expression
1.0 + 1.0 * |;

1.0 * 2.0 * 3.0;
// CHECK: BinaryOperator: '*'
// CHECK-NEXT: BinaryOperator: '*'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 / 2.0 / 3.0;
// CHECK: BinaryOperator: '/'
// CHECK-NEXT: BinaryOperator: '/'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 / 2.0 * 3.0;
// CHECK: BinaryOperator: '*'
// CHECK-NEXT: BinaryOperator: '/'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 + 2.0 + 3.0;
// CHECK: BinaryOperator: '+'
// CHECK-NEXT: BinaryOperator: '+'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 - 2.0 - 3.0;
// CHECK: BinaryOperator: '-'
// CHECK-NEXT: BinaryOperator: '-'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 + 2.0 - 3.0;
// CHECK: BinaryOperator: '-'
// CHECK-NEXT: BinaryOperator: '+'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 + 2.0 * 3.0 + 4.0;
// CHECK: BinaryOperator: '+'
// CHECK-NEXT: BinaryOperator: '+'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: BinaryOperator: '*'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'
// CHECK-NEXT: NumberLiteral: '4.0'

1.0 + 2.0 / 3.0 - 4.0;
// CHECK: BinaryOperator: '-'
// CHECK-NEXT: BinaryOperator: '+'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: BinaryOperator: '/'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'
// CHECK-NEXT: NumberLiteral: '4.0'

1.0 < 2.0 < 3.0;
// CHECK: BinaryOperator: '<'
// CHECK-NEXT: BinaryOperator: '<'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 > 2.0 > 3.0;
// CHECK: BinaryOperator: '>'
// CHECK-NEXT: BinaryOperator: '>'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 == 2.0 == 3.0;
// CHECK: BinaryOperator: '=='
// CHECK-NEXT: BinaryOperator: '=='
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 && 2.0 && 3.0;
// CHECK: BinaryOperator: '&&'
// CHECK-NEXT: BinaryOperator: '&&'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 || 2.0 || 3.0;
// CHECK: BinaryOperator: '||'
// CHECK-NEXT: BinaryOperator: '||'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'

1.0 || 2.0 && 3.0 && (4.0 || 5.0);
// CHECK: BinaryOperator: '||'
// CHECK-NEXT: NumberLiteral: '1.0'
// CHECK-NEXT: BinaryOperator: '&&'
// CHECK-NEXT: BinaryOperator: '&&'
// CHECK-NEXT: NumberLiteral: '2.0'
// CHECK-NEXT: NumberLiteral: '3.0'
// CHECK-NEXT: GroupingExpr:
// CHECK-NEXT: BinaryOperator: '||'
// CHECK-NEXT: NumberLiteral: '4.0'
// CHECK-NEXT: NumberLiteral: '5.0'
}

0 comments on commit 3a5a0c7

Please sign in to comment.