| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Translate parse tree to Mojom IR""" | 6 """Translate parse tree to Mojom IR""" |
| 7 | 7 |
| 8 | 8 |
| 9 import sys | 9 import sys |
| 10 | 10 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 struct['fields'] = MapFields(fields) | 75 struct['fields'] = MapFields(fields) |
| 76 self.mojom['structs'].append(struct) | 76 self.mojom['structs'].append(struct) |
| 77 # TODO(darin): Add support for |attributes| | 77 # TODO(darin): Add support for |attributes| |
| 78 | 78 |
| 79 def AddInterface(self, name, methods): | 79 def AddInterface(self, name, methods): |
| 80 interface = {} | 80 interface = {} |
| 81 interface['name'] = name | 81 interface['name'] = name |
| 82 interface['methods'] = MapMethods(methods) | 82 interface['methods'] = MapMethods(methods) |
| 83 self.mojom['interfaces'].append(interface) | 83 self.mojom['interfaces'].append(interface) |
| 84 | 84 |
| 85 def AddModule(self, name, contents): | 85 def AddModule(self, name, namespace, contents): |
| 86 self.mojom['name'] = name | 86 self.mojom['name'] = name |
| 87 self.mojom['namespace'] = name | 87 self.mojom['namespace'] = namespace |
| 88 self.mojom['structs'] = [] | 88 self.mojom['structs'] = [] |
| 89 self.mojom['interfaces'] = [] | 89 self.mojom['interfaces'] = [] |
| 90 for item in contents: | 90 for item in contents: |
| 91 if item[0] == 'STRUCT': | 91 if item[0] == 'STRUCT': |
| 92 self.AddStruct(name=item[1], attributes=item[2], fields=item[3]) | 92 self.AddStruct(name=item[1], attributes=item[2], fields=item[3]) |
| 93 elif item[0] == 'INTERFACE': | 93 elif item[0] == 'INTERFACE': |
| 94 self.AddInterface(name=item[1], methods=item[2]) | 94 self.AddInterface(name=item[1], methods=item[2]) |
| 95 | 95 |
| 96 def Build(self, tree): | 96 def Build(self, tree, name): |
| 97 if tree[0] == 'MODULE': | 97 if tree[0] == 'MODULE': |
| 98 self.AddModule(name=tree[1], contents=tree[2]) | 98 self.AddModule(name=name, namespace=tree[1], contents=tree[2]) |
| 99 return self.mojom | 99 return self.mojom |
| 100 | 100 |
| 101 | 101 |
| 102 def Translate(tree): | 102 def Translate(tree, name): |
| 103 return MojomBuilder().Build(tree) | 103 return MojomBuilder().Build(tree, name) |
| 104 | 104 |
| 105 | 105 |
| 106 def Main(): | 106 def Main(): |
| 107 if len(sys.argv) < 2: | 107 if len(sys.argv) < 2: |
| 108 print("usage: %s filename" % (sys.argv[0])) | 108 print("usage: %s filename" % (sys.argv[0])) |
| 109 sys.exit(1) | 109 sys.exit(1) |
| 110 tree = eval(open(sys.argv[1]).read()) | 110 tree = eval(open(sys.argv[1]).read()) |
| 111 result = Translate(tree) | 111 name = os.path.splitext(os.path.basename(sys.argv[1]))[0] |
| 112 result = Translate(tree, name) |
| 112 print(result) | 113 print(result) |
| 113 | 114 |
| 114 | 115 |
| 115 if __name__ == '__main__': | 116 if __name__ == '__main__': |
| 116 Main() | 117 Main() |
| OLD | NEW |