|  | #!/usr/bin/env python3 | 
|  |  | 
|  | import argparse | 
|  | import re | 
|  | import os | 
|  |  | 
|  | HEADER = """\ | 
|  | //===-- SBLanguages.h -----------------------------------------*- C++ -*-===// | 
|  | // | 
|  | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
|  | // See https://llvm.org/LICENSE.txt for license information. | 
|  | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLDB_API_SBLANGUAGE_H | 
|  | #define LLDB_API_SBLANGUAGE_H | 
|  |  | 
|  | #include <cstdint> | 
|  |  | 
|  | namespace lldb { | 
|  | /// Used by \\ref SBExpressionOptions. | 
|  | /// These enumerations use the same language enumerations as the DWARF | 
|  | /// specification for ease of use and consistency. | 
|  | enum SBSourceLanguageName : uint16_t { | 
|  | """ | 
|  |  | 
|  | FOOTER = """\ | 
|  | }; | 
|  |  | 
|  | } // namespace lldb | 
|  |  | 
|  | #endif | 
|  | """ | 
|  |  | 
|  | REGEX = re.compile( | 
|  | r'^ *HANDLE_DW_LNAME *\( *(?P<value>[^,]+), (?P<name>.*), "(?P<comment>[^"]+)",.*\)' | 
|  | ) | 
|  |  | 
|  |  | 
|  | def emit_enum(input, output): | 
|  | # Read the input and break it up by lines. | 
|  | lines = [] | 
|  | with open(input, "r") as f: | 
|  | lines = f.readlines() | 
|  |  | 
|  | # Create output folder if it does not exist | 
|  | os.makedirs(os.path.dirname(output), exist_ok=True) | 
|  |  | 
|  | # Write the output. | 
|  | with open(output, "w") as f: | 
|  | # Emit the header. | 
|  | f.write(HEADER) | 
|  |  | 
|  | # Emit the enum values. | 
|  | for line in lines: | 
|  | match = REGEX.match(line) | 
|  | if not match: | 
|  | continue | 
|  | f.write(f"  /// {match.group('comment')}.\n") | 
|  | f.write(f"  eLanguageName{match.group('name')} = {match.group('value')},\n") | 
|  |  | 
|  | # Emit the footer | 
|  | f.write(FOOTER) | 
|  |  | 
|  |  | 
|  | def main(): | 
|  | parser = argparse.ArgumentParser() | 
|  | parser.add_argument("--output", "-o") | 
|  | parser.add_argument("input") | 
|  | args = parser.parse_args() | 
|  |  | 
|  | emit_enum(args.input, args.output) | 
|  |  | 
|  |  | 
|  | if __name__ == "__main__": | 
|  | main() |