OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library engine.parser_test; | 5 library engine.parser_test; |
6 | 6 |
7 import 'package:analyzer/src/generated/ast.dart'; | 7 import 'package:analyzer/src/generated/ast.dart'; |
8 import 'package:analyzer/src/generated/element.dart'; | 8 import 'package:analyzer/src/generated/element.dart'; |
9 import 'package:analyzer/src/generated/engine.dart'; | 9 import 'package:analyzer/src/generated/engine.dart'; |
10 import 'package:analyzer/src/generated/error.dart'; | 10 import 'package:analyzer/src/generated/error.dart'; |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 Expression lhs = (section as AssignmentExpression).leftHandSide; | 352 Expression lhs = (section as AssignmentExpression).leftHandSide; |
353 EngineTestCase.assertInstanceOf( | 353 EngineTestCase.assertInstanceOf( |
354 (obj) => obj is IndexExpression, IndexExpression, lhs); | 354 (obj) => obj is IndexExpression, IndexExpression, lhs); |
355 IndexExpression index = lhs as IndexExpression; | 355 IndexExpression index = lhs as IndexExpression; |
356 expect(index.isCascaded, isTrue); | 356 expect(index.isCascaded, isTrue); |
357 expect(index.realTarget, same(target)); | 357 expect(index.realTarget, same(target)); |
358 } | 358 } |
359 } | 359 } |
360 | 360 |
361 void test_conditionalExpression_precedence_ifNullExpression() { | 361 void test_conditionalExpression_precedence_ifNullExpression() { |
362 _enableNullAwareOperators = true; | |
363 ConditionalExpression expression = parseExpression('a ?? b ? y : z'); | 362 ConditionalExpression expression = parseExpression('a ?? b ? y : z'); |
364 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 363 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
365 BinaryExpression, expression.condition); | 364 BinaryExpression, expression.condition); |
366 } | 365 } |
367 | 366 |
368 void test_conditionalExpression_precedence_logicalOrExpression() { | 367 void test_conditionalExpression_precedence_logicalOrExpression() { |
369 ConditionalExpression expression = parseExpression("a | b ? y : z"); | 368 ConditionalExpression expression = parseExpression("a | b ? y : z"); |
370 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 369 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
371 BinaryExpression, expression.condition); | 370 BinaryExpression, expression.condition); |
372 } | 371 } |
(...skipping 29 matching lines...) Expand all Loading... |
402 } | 401 } |
403 | 402 |
404 void test_equalityExpression_super() { | 403 void test_equalityExpression_super() { |
405 BinaryExpression expression = parseExpression("super == y != z", | 404 BinaryExpression expression = parseExpression("super == y != z", |
406 [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); | 405 [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); |
407 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 406 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
408 BinaryExpression, expression.leftOperand); | 407 BinaryExpression, expression.leftOperand); |
409 } | 408 } |
410 | 409 |
411 void test_ifNullExpression() { | 410 void test_ifNullExpression() { |
412 _enableNullAwareOperators = true; | |
413 BinaryExpression expression = parseExpression('x ?? y ?? z'); | 411 BinaryExpression expression = parseExpression('x ?? y ?? z'); |
414 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 412 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
415 BinaryExpression, expression.leftOperand); | 413 BinaryExpression, expression.leftOperand); |
416 } | 414 } |
417 | 415 |
418 void test_ifNullExpression_precedence_logicalOr_left() { | 416 void test_ifNullExpression_precedence_logicalOr_left() { |
419 _enableNullAwareOperators = true; | |
420 BinaryExpression expression = parseExpression('x || y ?? z'); | 417 BinaryExpression expression = parseExpression('x || y ?? z'); |
421 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 418 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
422 BinaryExpression, expression.leftOperand); | 419 BinaryExpression, expression.leftOperand); |
423 } | 420 } |
424 | 421 |
425 void test_ifNullExpression_precendce_logicalOr_right() { | 422 void test_ifNullExpression_precendce_logicalOr_right() { |
426 _enableNullAwareOperators = true; | |
427 BinaryExpression expression = parseExpression('x ?? y || z'); | 423 BinaryExpression expression = parseExpression('x ?? y || z'); |
428 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 424 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
429 BinaryExpression, expression.rightOperand); | 425 BinaryExpression, expression.rightOperand); |
430 } | 426 } |
431 | 427 |
432 void test_logicalAndExpression() { | 428 void test_logicalAndExpression() { |
433 BinaryExpression expression = parseExpression("x && y && z"); | 429 BinaryExpression expression = parseExpression("x && y && z"); |
434 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 430 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
435 BinaryExpression, expression.leftOperand); | 431 BinaryExpression, expression.leftOperand); |
436 } | 432 } |
(...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1331 void test_invalidInterpolationIdentifier_startWithDigit() { | 1327 void test_invalidInterpolationIdentifier_startWithDigit() { |
1332 parse4("parseStringLiteral", "'\$1'", [ParserErrorCode.MISSING_IDENTIFIER]); | 1328 parse4("parseStringLiteral", "'\$1'", [ParserErrorCode.MISSING_IDENTIFIER]); |
1333 } | 1329 } |
1334 | 1330 |
1335 void test_invalidOperator() { | 1331 void test_invalidOperator() { |
1336 parse3("parseClassMember", <Object>["C"], "void operator ===(x) {}", | 1332 parse3("parseClassMember", <Object>["C"], "void operator ===(x) {}", |
1337 [ParserErrorCode.INVALID_OPERATOR]); | 1333 [ParserErrorCode.INVALID_OPERATOR]); |
1338 } | 1334 } |
1339 | 1335 |
1340 void test_invalidOperatorAfterSuper_assignableExpression() { | 1336 void test_invalidOperatorAfterSuper_assignableExpression() { |
1341 _enableNullAwareOperators = true; | |
1342 parse3('parseAssignableExpression', <Object>[false], 'super?.v', | 1337 parse3('parseAssignableExpression', <Object>[false], 'super?.v', |
1343 [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); | 1338 [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
1344 } | 1339 } |
1345 | 1340 |
1346 void test_invalidOperatorAfterSuper_primaryExpression() { | 1341 void test_invalidOperatorAfterSuper_primaryExpression() { |
1347 _enableNullAwareOperators = true; | |
1348 parse4('parsePrimaryExpression', 'super?.v', | 1342 parse4('parsePrimaryExpression', 'super?.v', |
1349 [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); | 1343 [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
1350 } | 1344 } |
1351 | 1345 |
1352 void test_invalidOperatorForSuper() { | 1346 void test_invalidOperatorForSuper() { |
1353 parse4("parseUnaryExpression", "++super", | 1347 parse4("parseUnaryExpression", "++super", |
1354 [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); | 1348 [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
1355 } | 1349 } |
1356 | 1350 |
1357 void test_invalidStarAfterAsync() { | 1351 void test_invalidStarAfterAsync() { |
(...skipping 1221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2579 */ | 2573 */ |
2580 static bool parseFunctionBodies = true; | 2574 static bool parseFunctionBodies = true; |
2581 | 2575 |
2582 /** | 2576 /** |
2583 * A flag indicating whether generic method support should be enabled for a | 2577 * A flag indicating whether generic method support should be enabled for a |
2584 * specific test. | 2578 * specific test. |
2585 */ | 2579 */ |
2586 bool enableGenericMethods = false; | 2580 bool enableGenericMethods = false; |
2587 | 2581 |
2588 /** | 2582 /** |
2589 * If non-null, this value is used to override the default value of | |
2590 * [Scanner.enableNullAwareOperators] before scanning. | |
2591 */ | |
2592 bool _enableNullAwareOperators; | |
2593 | |
2594 /** | |
2595 * Return a CommentAndMetadata object with the given values that can be used f
or testing. | 2583 * Return a CommentAndMetadata object with the given values that can be used f
or testing. |
2596 * | 2584 * |
2597 * @param comment the comment to be wrapped in the object | 2585 * @param comment the comment to be wrapped in the object |
2598 * @param annotations the annotations to be wrapped in the object | 2586 * @param annotations the annotations to be wrapped in the object |
2599 * @return a CommentAndMetadata object that can be used for testing | 2587 * @return a CommentAndMetadata object that can be used for testing |
2600 */ | 2588 */ |
2601 CommentAndMetadata commentAndMetadata(Comment comment, | 2589 CommentAndMetadata commentAndMetadata(Comment comment, |
2602 [List<Annotation> annotations]) { | 2590 [List<Annotation> annotations]) { |
2603 return new CommentAndMetadata(comment, annotations); | 2591 return new CommentAndMetadata(comment, annotations); |
2604 } | 2592 } |
(...skipping 22 matching lines...) Expand all Loading... |
2627 * @throws AssertionFailedError if the result is `null` or the errors produced
while | 2615 * @throws AssertionFailedError if the result is `null` or the errors produced
while |
2628 * scanning and parsing the source do not match the expected errors | 2616 * scanning and parsing the source do not match the expected errors |
2629 */ | 2617 */ |
2630 Object invokeParserMethod(String methodName, List<Object> objects, | 2618 Object invokeParserMethod(String methodName, List<Object> objects, |
2631 String source, GatheringErrorListener listener) { | 2619 String source, GatheringErrorListener listener) { |
2632 // | 2620 // |
2633 // Scan the source. | 2621 // Scan the source. |
2634 // | 2622 // |
2635 Scanner scanner = | 2623 Scanner scanner = |
2636 new Scanner(null, new CharSequenceReader(source), listener); | 2624 new Scanner(null, new CharSequenceReader(source), listener); |
2637 if (_enableNullAwareOperators != null) { | |
2638 scanner.enableNullAwareOperators = _enableNullAwareOperators; | |
2639 } | |
2640 Token tokenStream = scanner.tokenize(); | 2625 Token tokenStream = scanner.tokenize(); |
2641 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 2626 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
2642 // | 2627 // |
2643 // Parse the source. | 2628 // Parse the source. |
2644 // | 2629 // |
2645 Parser parser = createParser(listener); | 2630 Parser parser = createParser(listener); |
2646 parser.parseGenericMethods = enableGenericMethods; | 2631 parser.parseGenericMethods = enableGenericMethods; |
2647 parser.parseFunctionBodies = parseFunctionBodies; | 2632 parser.parseFunctionBodies = parseFunctionBodies; |
2648 Object result = | 2633 Object result = |
2649 invokeParserMethodImpl(parser, methodName, objects, tokenStream); | 2634 invokeParserMethodImpl(parser, methodName, objects, tokenStream); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2764 * @param errorCodes the error codes of the errors that are expected to be fou
nd | 2749 * @param errorCodes the error codes of the errors that are expected to be fou
nd |
2765 * @return the expression that was parsed | 2750 * @return the expression that was parsed |
2766 * @throws Exception if the source could not be parsed, if the compilation err
ors in the source do | 2751 * @throws Exception if the source could not be parsed, if the compilation err
ors in the source do |
2767 * not match those that are expected, or if the result would have be
en `null` | 2752 * not match those that are expected, or if the result would have be
en `null` |
2768 */ | 2753 */ |
2769 Expression parseExpression(String source, | 2754 Expression parseExpression(String source, |
2770 [List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { | 2755 [List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { |
2771 GatheringErrorListener listener = new GatheringErrorListener(); | 2756 GatheringErrorListener listener = new GatheringErrorListener(); |
2772 Scanner scanner = | 2757 Scanner scanner = |
2773 new Scanner(null, new CharSequenceReader(source), listener); | 2758 new Scanner(null, new CharSequenceReader(source), listener); |
2774 if (_enableNullAwareOperators != null) { | |
2775 scanner.enableNullAwareOperators = _enableNullAwareOperators; | |
2776 } | |
2777 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 2759 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
2778 Token token = scanner.tokenize(); | 2760 Token token = scanner.tokenize(); |
2779 Parser parser = createParser(listener); | 2761 Parser parser = createParser(listener); |
2780 parser.parseGenericMethods = enableGenericMethods; | 2762 parser.parseGenericMethods = enableGenericMethods; |
2781 Expression expression = parser.parseExpression(token); | 2763 Expression expression = parser.parseExpression(token); |
2782 expect(expression, isNotNull); | 2764 expect(expression, isNotNull); |
2783 listener.assertErrorsWithCodes(errorCodes); | 2765 listener.assertErrorsWithCodes(errorCodes); |
2784 return expression; | 2766 return expression; |
2785 } | 2767 } |
2786 | 2768 |
(...skipping 2282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5069 void test_parseAssignableExpression_expression_index() { | 5051 void test_parseAssignableExpression_expression_index() { |
5070 IndexExpression expression = | 5052 IndexExpression expression = |
5071 parse("parseAssignableExpression", <Object>[false], "(x)[y]"); | 5053 parse("parseAssignableExpression", <Object>[false], "(x)[y]"); |
5072 expect(expression.target, isNotNull); | 5054 expect(expression.target, isNotNull); |
5073 expect(expression.leftBracket, isNotNull); | 5055 expect(expression.leftBracket, isNotNull); |
5074 expect(expression.index, isNotNull); | 5056 expect(expression.index, isNotNull); |
5075 expect(expression.rightBracket, isNotNull); | 5057 expect(expression.rightBracket, isNotNull); |
5076 } | 5058 } |
5077 | 5059 |
5078 void test_parseAssignableExpression_expression_question_dot() { | 5060 void test_parseAssignableExpression_expression_question_dot() { |
5079 _enableNullAwareOperators = true; | |
5080 PropertyAccess propertyAccess = | 5061 PropertyAccess propertyAccess = |
5081 parse("parseAssignableExpression", <Object>[false], "(x)?.y"); | 5062 parse("parseAssignableExpression", <Object>[false], "(x)?.y"); |
5082 expect(propertyAccess.target, isNotNull); | 5063 expect(propertyAccess.target, isNotNull); |
5083 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | 5064 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); |
5084 expect(propertyAccess.propertyName, isNotNull); | 5065 expect(propertyAccess.propertyName, isNotNull); |
5085 } | 5066 } |
5086 | 5067 |
5087 void test_parseAssignableExpression_identifier() { | 5068 void test_parseAssignableExpression_identifier() { |
5088 SimpleIdentifier identifier = | 5069 SimpleIdentifier identifier = |
5089 parse("parseAssignableExpression", <Object>[false], "x"); | 5070 parse("parseAssignableExpression", <Object>[false], "x"); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5129 void test_parseAssignableExpression_identifier_index() { | 5110 void test_parseAssignableExpression_identifier_index() { |
5130 IndexExpression expression = | 5111 IndexExpression expression = |
5131 parse("parseAssignableExpression", <Object>[false], "x[y]"); | 5112 parse("parseAssignableExpression", <Object>[false], "x[y]"); |
5132 expect(expression.target, isNotNull); | 5113 expect(expression.target, isNotNull); |
5133 expect(expression.leftBracket, isNotNull); | 5114 expect(expression.leftBracket, isNotNull); |
5134 expect(expression.index, isNotNull); | 5115 expect(expression.index, isNotNull); |
5135 expect(expression.rightBracket, isNotNull); | 5116 expect(expression.rightBracket, isNotNull); |
5136 } | 5117 } |
5137 | 5118 |
5138 void test_parseAssignableExpression_identifier_question_dot() { | 5119 void test_parseAssignableExpression_identifier_question_dot() { |
5139 _enableNullAwareOperators = true; | |
5140 PropertyAccess propertyAccess = | 5120 PropertyAccess propertyAccess = |
5141 parse("parseAssignableExpression", <Object>[false], "x?.y"); | 5121 parse("parseAssignableExpression", <Object>[false], "x?.y"); |
5142 expect(propertyAccess.target, isNotNull); | 5122 expect(propertyAccess.target, isNotNull); |
5143 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | 5123 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); |
5144 expect(propertyAccess.propertyName, isNotNull); | 5124 expect(propertyAccess.propertyName, isNotNull); |
5145 } | 5125 } |
5146 | 5126 |
5147 void test_parseAssignableExpression_super_dot() { | 5127 void test_parseAssignableExpression_super_dot() { |
5148 PropertyAccess propertyAccess = | 5128 PropertyAccess propertyAccess = |
5149 parse("parseAssignableExpression", <Object>[false], "super.y"); | 5129 parse("parseAssignableExpression", <Object>[false], "super.y"); |
(...skipping 30 matching lines...) Expand all Loading... |
5180 | 5160 |
5181 void test_parseAssignableSelector_none() { | 5161 void test_parseAssignableSelector_none() { |
5182 SimpleIdentifier selector = parse("parseAssignableSelector", <Object>[ | 5162 SimpleIdentifier selector = parse("parseAssignableSelector", <Object>[ |
5183 new SimpleIdentifier(null), | 5163 new SimpleIdentifier(null), |
5184 true | 5164 true |
5185 ], ";"); | 5165 ], ";"); |
5186 expect(selector, isNotNull); | 5166 expect(selector, isNotNull); |
5187 } | 5167 } |
5188 | 5168 |
5189 void test_parseAssignableSelector_question_dot() { | 5169 void test_parseAssignableSelector_question_dot() { |
5190 _enableNullAwareOperators = true; | |
5191 PropertyAccess selector = | 5170 PropertyAccess selector = |
5192 parse("parseAssignableSelector", <Object>[null, true], "?.x"); | 5171 parse("parseAssignableSelector", <Object>[null, true], "?.x"); |
5193 expect(selector.operator.type, TokenType.QUESTION_PERIOD); | 5172 expect(selector.operator.type, TokenType.QUESTION_PERIOD); |
5194 expect(selector.propertyName, isNotNull); | 5173 expect(selector.propertyName, isNotNull); |
5195 } | 5174 } |
5196 | 5175 |
5197 void test_parseAwaitExpression() { | 5176 void test_parseAwaitExpression() { |
5198 AwaitExpression expression = parse4("parseAwaitExpression", "await x;"); | 5177 AwaitExpression expression = parse4("parseAwaitExpression", "await x;"); |
5199 expect(expression.awaitKeyword, isNotNull); | 5178 expect(expression.awaitKeyword, isNotNull); |
5200 expect(expression.expression, isNotNull); | 5179 expect(expression.expression, isNotNull); |
(...skipping 3850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9051 void test_parsePostfixExpression_none_methodInvocation() { | 9030 void test_parsePostfixExpression_none_methodInvocation() { |
9052 MethodInvocation expression = parse4("parsePostfixExpression", "a.m()"); | 9031 MethodInvocation expression = parse4("parsePostfixExpression", "a.m()"); |
9053 expect(expression.target, isNotNull); | 9032 expect(expression.target, isNotNull); |
9054 expect(expression.operator.type, TokenType.PERIOD); | 9033 expect(expression.operator.type, TokenType.PERIOD); |
9055 expect(expression.methodName, isNotNull); | 9034 expect(expression.methodName, isNotNull); |
9056 expect(expression.typeArguments, isNull); | 9035 expect(expression.typeArguments, isNull); |
9057 expect(expression.argumentList, isNotNull); | 9036 expect(expression.argumentList, isNotNull); |
9058 } | 9037 } |
9059 | 9038 |
9060 void test_parsePostfixExpression_none_methodInvocation_question_dot() { | 9039 void test_parsePostfixExpression_none_methodInvocation_question_dot() { |
9061 _enableNullAwareOperators = true; | |
9062 MethodInvocation expression = parse4('parsePostfixExpression', 'a?.m()'); | 9040 MethodInvocation expression = parse4('parsePostfixExpression', 'a?.m()'); |
9063 expect(expression.target, isNotNull); | 9041 expect(expression.target, isNotNull); |
9064 expect(expression.operator.type, TokenType.QUESTION_PERIOD); | 9042 expect(expression.operator.type, TokenType.QUESTION_PERIOD); |
9065 expect(expression.methodName, isNotNull); | 9043 expect(expression.methodName, isNotNull); |
9066 expect(expression.typeArguments, isNull); | 9044 expect(expression.typeArguments, isNull); |
9067 expect(expression.argumentList, isNotNull); | 9045 expect(expression.argumentList, isNotNull); |
9068 } | 9046 } |
9069 | 9047 |
9070 void test_parsePostfixExpression_none_methodInvocation_question_dot_typeArgume
nts() { | 9048 void test_parsePostfixExpression_none_methodInvocation_question_dot_typeArgume
nts() { |
9071 enableGenericMethods = true; | 9049 enableGenericMethods = true; |
9072 _enableNullAwareOperators = true; | |
9073 MethodInvocation expression = parse4('parsePostfixExpression', 'a?.m<E>()'); | 9050 MethodInvocation expression = parse4('parsePostfixExpression', 'a?.m<E>()'); |
9074 expect(expression.target, isNotNull); | 9051 expect(expression.target, isNotNull); |
9075 expect(expression.operator.type, TokenType.QUESTION_PERIOD); | 9052 expect(expression.operator.type, TokenType.QUESTION_PERIOD); |
9076 expect(expression.methodName, isNotNull); | 9053 expect(expression.methodName, isNotNull); |
9077 expect(expression.typeArguments, isNotNull); | 9054 expect(expression.typeArguments, isNotNull); |
9078 expect(expression.argumentList, isNotNull); | 9055 expect(expression.argumentList, isNotNull); |
9079 } | 9056 } |
9080 | 9057 |
9081 void test_parsePostfixExpression_none_methodInvocation_typeArguments() { | 9058 void test_parsePostfixExpression_none_methodInvocation_typeArguments() { |
9082 enableGenericMethods = true; | 9059 enableGenericMethods = true; |
(...skipping 1591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10674 new Scanner(null, new CharSequenceReader(source), listener); | 10651 new Scanner(null, new CharSequenceReader(source), listener); |
10675 Token tokenStream = scanner.tokenize(); | 10652 Token tokenStream = scanner.tokenize(); |
10676 // | 10653 // |
10677 // Parse the source. | 10654 // Parse the source. |
10678 // | 10655 // |
10679 Parser parser = new Parser(null, listener); | 10656 Parser parser = new Parser(null, listener); |
10680 return invokeParserMethodImpl( | 10657 return invokeParserMethodImpl( |
10681 parser, methodName, <Object>[tokenStream], tokenStream) as Token; | 10658 parser, methodName, <Object>[tokenStream], tokenStream) as Token; |
10682 } | 10659 } |
10683 } | 10660 } |
OLD | NEW |