Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import re
def read_reserved_word_list(filename, *args):
enable_decorators = False
enable_explicit_resource_management = False
for arg in args:
if arg == "--enable-decorators":
enable_decorators = True
elif arg == "--enable-explicit-resource-management":
enable_explicit_resource_management = True
else:
raise ValueError("Unknown argument: " + arg)
macro_pat = re.compile(r"MACRO\(([^,]+), *[^,]+, *[^\)]+\)\s*\\?")
reserved_word_list = []
index = 0
with open(filename) as f:
for line in f:
m = macro_pat.search(line)
if m:
reserved_word = m.group(1)
if reserved_word == "accessor" and not enable_decorators:
continue
if reserved_word == "using" and not enable_explicit_resource_management:
continue
reserved_word_list.append((index, reserved_word))
index += 1
assert len(reserved_word_list) != 0
return reserved_word_list