OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
5 | 5 |
6 import re | 6 import re |
7 import subprocess | 7 import subprocess |
8 import tempfile | 8 import tempfile |
9 | 9 |
10 from pegparser import * | 10 from pegparser import * |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 | 404 |
405 Returns: | 405 Returns: |
406 The result of running gcc on the content. | 406 The result of running gcc on the content. |
407 | 407 |
408 Args: | 408 Args: |
409 content -- text to process. | 409 content -- text to process. |
410 defines -- an array of pre-processor defines. | 410 defines -- an array of pre-processor defines. |
411 includePaths -- an array of path strings. | 411 includePaths -- an array of path strings. |
412 """ | 412 """ |
413 # FIXME: Handle gcc not found, or any other processing errors | 413 # FIXME: Handle gcc not found, or any other processing errors |
414 gcc = '/usr/bin/gcc' | 414 gcc = 'gcc' |
415 cmd = [gcc, '-E', '-P', '-C', '-x', 'c++']; | 415 cmd = [gcc, '-E', '-P', '-C', '-x', 'c++']; |
416 for define in defines: | 416 for define in defines: |
417 cmd.append('-D%s' % define) | 417 cmd.append('-D%s' % define) |
418 cmd.append('-') | 418 cmd.append('-') |
419 pipe = subprocess.Popen(cmd, stdin=subprocess.PIPE, | 419 pipe = subprocess.Popen(cmd, stdin=subprocess.PIPE, |
420 stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 420 stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
421 (content, stderr) = pipe.communicate(content) | 421 (content, stderr) = pipe.communicate(content) |
422 return content | 422 return content |
423 | 423 |
424 def parse(self, content, defines=[], includePaths=[]): | 424 def parse(self, content, defines=[], includePaths=[]): |
425 """Parse the give content string. | 425 """Parse the give content string. |
426 | 426 |
427 The WebKit IDL syntax also allows gcc pre-processing instructions. | 427 The WebKit IDL syntax also allows gcc pre-processing instructions. |
428 Lists of defined variables and include paths can be provided. | 428 Lists of defined variables and include paths can be provided. |
429 | 429 |
430 Returns: | 430 Returns: |
431 An abstract syntax tree (AST). | 431 An abstract syntax tree (AST). |
432 | 432 |
433 Args: | 433 Args: |
434 content -- text to parse. | 434 content -- text to parse. |
435 defines -- an array of pre-processor defines. | 435 defines -- an array of pre-processor defines. |
436 includePaths -- an array of path strings used by the | 436 includePaths -- an array of path strings used by the |
437 gcc pre-processor. | 437 gcc pre-processor. |
438 """ | 438 """ |
439 if self._syntax == WEBKIT_SYNTAX: | 439 if self._syntax == WEBKIT_SYNTAX: |
440 content = self._pre_process(content, defines, includePaths) | 440 content = self._pre_process(content, defines, includePaths) |
441 | 441 |
442 return self._pegparser.parse(content) | 442 return self._pegparser.parse(content) |
OLD | NEW |