OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2012 the V8 project authors. All rights reserved. | 3 # Copyright 2012 the V8 project authors. All rights reserved. |
4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
6 # met: | 6 # met: |
7 # | 7 # |
8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 # Scan over the arguments | 101 # Scan over the arguments |
102 height = 1 | 102 height = 1 |
103 start = pattern_match.start() | 103 start = pattern_match.start() |
104 end = pattern_match.end() | 104 end = pattern_match.end() |
105 assert lines[end - 1] == '(' | 105 assert lines[end - 1] == '(' |
106 last_match = end | 106 last_match = end |
107 arg_index = [0] # Wrap state into array, to work around Python "scoping" | 107 arg_index = [0] # Wrap state into array, to work around Python "scoping" |
108 mapping = { } | 108 mapping = { } |
109 def add_arg(str): | 109 def add_arg(str): |
110 # Remember to expand recursively in the arguments | 110 # Remember to expand recursively in the arguments |
| 111 if arg_index[0] >= len(macro.args): |
| 112 lineno = lines.count(os.linesep, 0, start) + 1 |
| 113 raise Error('line %s: Too many arguments for macro "%s"' % (lineno, name
_pattern.pattern)) |
111 replacement = expander(str.strip()) | 114 replacement = expander(str.strip()) |
112 mapping[macro.args[arg_index[0]]] = replacement | 115 mapping[macro.args[arg_index[0]]] = replacement |
113 arg_index[0] += 1 | 116 arg_index[0] += 1 |
114 while end < len(lines) and height > 0: | 117 while end < len(lines) and height > 0: |
115 # We don't count commas at higher nesting levels. | 118 # We don't count commas at higher nesting levels. |
116 if lines[end] == ',' and height == 1: | 119 if lines[end] == ',' and height == 1: |
117 add_arg(lines[last_match:end]) | 120 add_arg(lines[last_match:end]) |
118 last_match = end + 1 | 121 last_match = end + 1 |
119 elif lines[end] in ['(', '{', '[']: | 122 elif lines[end] in ['(', '{', '[']: |
120 height = height + 1 | 123 height = height + 1 |
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 JS2C(args[2:], | 595 JS2C(args[2:], |
593 args[0], | 596 args[0], |
594 args[1], | 597 args[1], |
595 options.raw, | 598 options.raw, |
596 options.startup_blob, | 599 options.startup_blob, |
597 options.js) | 600 options.js) |
598 | 601 |
599 | 602 |
600 if __name__ == "__main__": | 603 if __name__ == "__main__": |
601 main() | 604 main() |
OLD | NEW |