| // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| part 'src/charcodes.dart'; |
| |
| void main() { |
| print(String.fromCharCodes([ |
| _E, |
| _x, |
| _a, |
| _m, |
| _p, |
| _l, |
| _e, |
| _exclamation, |
| ])); |
| |
| if (!hasBalancedParentheses( |
| '(((a + b) + (c + d)) + (((e + f) + (g + h)) + i))')) { |
| print('Unbalanced!'); |
| } |
| } |
| |
| /// Check whether `(` and `)` are balanced in [input]. |
| bool hasBalancedParentheses(String input) { |
| var openParenCount = 0; |
| for (var i = 0; i < input.length; i++) { |
| var char = input.codeUnitAt(i); |
| if (char == _lparen) { |
| openParenCount++; |
| } else if (char == _rparen) { |
| openParenCount--; |
| if (openParenCount < 0) return false; |
| } |
| } |
| return openParenCount == 0; |
| } |