OLD | NEW |
---|---|
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 package com.google.dart.compiler.parser; | 5 package com.google.dart.compiler.parser; |
6 | 6 |
7 import com.google.common.annotations.VisibleForTesting; | 7 import com.google.common.annotations.VisibleForTesting; |
8 import com.google.common.io.CharStreams; | 8 import com.google.common.io.CharStreams; |
9 import com.google.dart.compiler.DartCompilationError; | 9 import com.google.dart.compiler.DartCompilationError; |
10 import com.google.dart.compiler.DartCompilerListener; | 10 import com.google.dart.compiler.DartCompilerListener; |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
355 expect(Token.LIBRARY); | 355 expect(Token.LIBRARY); |
356 expect(Token.LPAREN); | 356 expect(Token.LPAREN); |
357 beginLiteral(); | 357 beginLiteral(); |
358 expect(Token.STRING); | 358 expect(Token.STRING); |
359 DartStringLiteral libname = done(DartStringLiteral.get(ctx.getTokenString()) ); | 359 DartStringLiteral libname = done(DartStringLiteral.get(ctx.getTokenString()) ); |
360 expectCloseParen(); | 360 expectCloseParen(); |
361 expect(Token.SEMICOLON); | 361 expect(Token.SEMICOLON); |
362 return new DartLibraryDirective(libname); | 362 return new DartLibraryDirective(libname); |
363 } | 363 } |
364 | 364 |
365 private boolean VerifyStringIdentifier(String id) { | |
mmendez
2011/11/02 13:45:58
Nit: VerifyString... -> verifyString...
Please ad
codefu
2011/11/02 14:32:57
Done.
| |
366 boolean pass = false; | |
367 if(id.charAt(0) == '$') { | |
368 pass = id.matches("[_$a-zA-Z]([_$A-Za-z0-9]*)"); | |
369 } else { | |
370 pass = id.matches("[_a-zA-Z]([_A-Za-z0-9]*)"); | |
371 } | |
372 return pass; | |
373 } | |
374 | |
365 private DartImportDirective parseImportDirective() { | 375 private DartImportDirective parseImportDirective() { |
366 expect(Token.IMPORT); | 376 expect(Token.IMPORT); |
367 expect(Token.LPAREN); | 377 expect(Token.LPAREN); |
368 beginLiteral(); | 378 beginLiteral(); |
369 expect(Token.STRING); | 379 expect(Token.STRING); |
370 DartStringLiteral libUri = done(DartStringLiteral.get(ctx.getTokenString())) ; | 380 DartStringLiteral libUri = done(DartStringLiteral.get(ctx.getTokenString())) ; |
371 DartStringLiteral prefix = null; | 381 DartStringLiteral prefix = null; |
372 if (optional(Token.COMMA)) { | 382 if (optional(Token.COMMA)) { |
373 if (!optionalPseudoKeyword(PREFIX_KEYWORD)) { | 383 if (!optionalPseudoKeyword(PREFIX_KEYWORD)) { |
374 reportError(position(), ParserErrorCode.EXPECTED_PREFIX_KEYWORD); | 384 reportError(position(), ParserErrorCode.EXPECTED_PREFIX_KEYWORD); |
375 } | 385 } |
376 expect(Token.COLON); | 386 expect(Token.COLON); |
377 beginLiteral(); | 387 beginLiteral(); |
378 expect(Token.STRING); | 388 expect(Token.STRING); |
389 if (!VerifyStringIdentifier(ctx.getTokenString())){ | |
390 reportError(position(), ParserErrorCode.EXPECTED_PREFIX_IDENTIFIER); | |
391 } | |
379 prefix = done(DartStringLiteral.get(ctx.getTokenString())); | 392 prefix = done(DartStringLiteral.get(ctx.getTokenString())); |
380 } | 393 } |
381 expectCloseParen(); | 394 expectCloseParen(); |
382 expect(Token.SEMICOLON); | 395 expect(Token.SEMICOLON); |
383 return new DartImportDirective(libUri, prefix); | 396 return new DartImportDirective(libUri, prefix); |
384 } | 397 } |
385 | 398 |
386 private DartSourceDirective parseSourceDirective() { | 399 private DartSourceDirective parseSourceDirective() { |
387 expect(Token.SOURCE); | 400 expect(Token.SOURCE); |
388 expect(Token.LPAREN); | 401 expect(Token.LPAREN); |
(...skipping 3083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3472 } else { | 3485 } else { |
3473 ctx.error(dartError); | 3486 ctx.error(dartError); |
3474 errorHistory.add(dartError.hashCode()); | 3487 errorHistory.add(dartError.hashCode()); |
3475 } | 3488 } |
3476 } | 3489 } |
3477 | 3490 |
3478 private void reportError(DartNode node, ErrorCode errorCode, Object... argumen ts) { | 3491 private void reportError(DartNode node, ErrorCode errorCode, Object... argumen ts) { |
3479 reportError(new DartCompilationError(node, errorCode, arguments)); | 3492 reportError(new DartCompilationError(node, errorCode, arguments)); |
3480 } | 3493 } |
3481 } | 3494 } |
OLD | NEW |