| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 /** | 5 /** |
| 6 * This file contains code to generate serialization/deserialization logic for | 6 * This file contains code to generate serialization/deserialization logic for |
| 7 * summaries based on an "IDL" description of the summary format (written in | 7 * summaries based on an "IDL" description of the summary format (written in |
| 8 * stylized Dart). | 8 * stylized Dart). |
| 9 * | 9 * |
| 10 * For each class in the "IDL" input, two corresponding classes are generated: | 10 * For each class in the "IDL" input, two corresponding classes are generated: |
| 11 * - A class with the same name which represents deserialized summary data in | 11 * - A class with the same name which represents deserialized summary data in |
| 12 * memory. This class has read-only semantics. | 12 * memory. This class has read-only semantics. |
| 13 * - A "builder" class which can be used to generate serialized summary data. | 13 * - A "builder" class which can be used to generate serialized summary data. |
| 14 * This class has write-only semantics. | 14 * This class has write-only semantics. |
| 15 * | 15 * |
| 16 * Each of the "builder" classes has a single `finish` method which writes | 16 * Each of the "builder" classes has a single `finish` method which writes |
| 17 * the entity being built into the given FlatBuffer and returns the `Offset` | 17 * the entity being built into the given FlatBuffer and returns the `Offset` |
| 18 * reference to it. | 18 * reference to it. |
| 19 */ | 19 */ |
| 20 library analyzer.tool.summary.generate; | 20 library analyzer.tool.summary.generate; |
| 21 | 21 |
| 22 import 'dart:convert'; | 22 import 'dart:convert'; |
| 23 import 'dart:io' hide File; | 23 import 'dart:io'; |
| 24 | 24 |
| 25 import 'package:analyzer/file_system/file_system.dart'; | 25 import 'package:front_end/src/codegen/tools.dart'; |
| 26 import 'package:analyzer/file_system/physical_file_system.dart'; | |
| 27 import 'package:analyzer/src/codegen/tools.dart'; | |
| 28 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; | 26 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; |
| 29 import 'package:front_end/src/fasta/scanner/token.dart'; | 27 import 'package:front_end/src/fasta/scanner/token.dart'; |
| 30 import 'package:path/path.dart'; | 28 import 'package:path/path.dart'; |
| 31 | 29 |
| 32 import 'idl_model.dart' as idlModel; | 30 import 'idl_model.dart' as idlModel; |
| 33 import 'mini_ast.dart'; | 31 import 'mini_ast.dart'; |
| 34 | 32 |
| 35 main() { | 33 main() { |
| 36 String script = Platform.script.toFilePath(windows: Platform.isWindows); | 34 String script = Platform.script.toFilePath(windows: Platform.isWindows); |
| 37 String pkgPath = normalize(join(dirname(script), '..', '..')); | 35 String pkgPath = normalize(join(dirname(script), '..', '..')); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 */ | 71 */ |
| 74 String _indentation = ''; | 72 String _indentation = ''; |
| 75 | 73 |
| 76 /** | 74 /** |
| 77 * Semantic model of the "IDL" input file. | 75 * Semantic model of the "IDL" input file. |
| 78 */ | 76 */ |
| 79 idlModel.Idl _idl; | 77 idlModel.Idl _idl; |
| 80 | 78 |
| 81 _CodeGenerator(String pkgPath) { | 79 _CodeGenerator(String pkgPath) { |
| 82 // Parse the input "IDL" file. | 80 // Parse the input "IDL" file. |
| 83 PhysicalResourceProvider provider = new PhysicalResourceProvider( | |
| 84 PhysicalResourceProvider.NORMALIZE_EOL_ALWAYS); | |
| 85 String idlPath = join(pkgPath, 'lib', 'src', 'summary', 'idl.dart'); | 81 String idlPath = join(pkgPath, 'lib', 'src', 'summary', 'idl.dart'); |
| 86 File idlFile = provider.getFile(idlPath); | 82 File idlFile = new File(idlPath); |
| 87 String idlText = idlFile.readAsStringSync(); | 83 String idlText = |
| 84 idlFile.readAsStringSync().replaceAll(new RegExp('\r\n?'), '\n'); |
| 88 // Extract a description of the IDL and make sure it is valid. | 85 // Extract a description of the IDL and make sure it is valid. |
| 89 var scanner = new StringScanner(idlText, includeComments: true); | 86 var scanner = new StringScanner(idlText, includeComments: true); |
| 90 var startingToken = scanner.tokenize(); | 87 var startingToken = scanner.tokenize(); |
| 91 var listener = new MiniAstBuilder(); | 88 var listener = new MiniAstBuilder(); |
| 92 var parser = new MiniAstParser(listener); | 89 var parser = new MiniAstParser(listener); |
| 93 parser.parseUnit(startingToken); | 90 parser.parseUnit(startingToken); |
| 94 extractIdl(listener.compilationUnit); | 91 extractIdl(listener.compilationUnit); |
| 95 checkIdl(); | 92 checkIdl(); |
| 96 } | 93 } |
| 97 | 94 |
| (...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 Token token = comment.tokens.first; | 1005 Token token = comment.tokens.first; |
| 1009 return token.lexeme.split('\n').map((String line) { | 1006 return token.lexeme.split('\n').map((String line) { |
| 1010 line = line.trimLeft(); | 1007 line = line.trimLeft(); |
| 1011 if (line.startsWith('*')) line = ' ' + line; | 1008 if (line.startsWith('*')) line = ' ' + line; |
| 1012 return line; | 1009 return line; |
| 1013 }).join('\n'); | 1010 }).join('\n'); |
| 1014 } | 1011 } |
| 1015 return null; | 1012 return null; |
| 1016 } | 1013 } |
| 1017 } | 1014 } |
| OLD | NEW |