brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 689c7f8 Raw
78 lines · python
1#!/usr/bin/env python32 3import argparse4import re5import os6 7HEADER = """\8//===-- SBLanguages.h -----------------------------------------*- C++ -*-===//9//10// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.11// See https://llvm.org/LICENSE.txt for license information.12// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception13//14//===----------------------------------------------------------------------===//15 16#ifndef LLDB_API_SBLANGUAGE_H17#define LLDB_API_SBLANGUAGE_H18 19#include <cstdint>20 21namespace lldb {22/// Used by \\ref SBExpressionOptions.23/// These enumerations use the same language enumerations as the DWARF24/// specification for ease of use and consistency.25enum SBSourceLanguageName : uint16_t {26"""27 28FOOTER = """\29};30 31} // namespace lldb32 33#endif34"""35 36REGEX = re.compile(37    r'^ *HANDLE_DW_LNAME *\( *(?P<value>[^,]+), (?P<name>.*), "(?P<comment>[^"]+)",.*\)'38)39 40 41def emit_enum(input, output):42    # Read the input and break it up by lines.43    lines = []44    with open(input, "r") as f:45        lines = f.readlines()46 47    # Create output folder if it does not exist48    os.makedirs(os.path.dirname(output), exist_ok=True)49 50    # Write the output.51    with open(output, "w") as f:52        # Emit the header.53        f.write(HEADER)54 55        # Emit the enum values.56        for line in lines:57            match = REGEX.match(line)58            if not match:59                continue60            f.write(f"  /// {match.group('comment')}.\n")61            f.write(f"  eLanguageName{match.group('name')} = {match.group('value')},\n")62 63        # Emit the footer64        f.write(FOOTER)65 66 67def main():68    parser = argparse.ArgumentParser()69    parser.add_argument("--output", "-o")70    parser.add_argument("input")71    args = parser.parse_args()72 73    emit_enum(args.input, args.output)74 75 76if __name__ == "__main__":77    main()78