#!/usr/bin/env python3 import os import sys DIR = os.path.dirname(os.path.realpath(sys.argv[0])) # Demand file as input if len(sys.argv) < 2: print("Usage: /path/to/translate CPP_FILE") sys.exit(1) FILE_IN = sys.argv[1] # Read file. lines_in = [] with open(FILE_IN) as file: for line in file: lines_in.append(line.rstrip()) # Translate. lines_out = [] isDeclaration = False isDeclarationLine = False isBody = False functionName = None returnType = None argumentNames = [] argumentTypes = [] for ln in lines_in: ln = ln.lstrip() # Ignore includes. if "#include" in ln: continue parts = ln.split(" ") count = len(parts) lastPart = parts[count - 1] if not isBody and lastPart.endswith("("): isDeclaration = True isDeclarationLine = True isBody = False # End of function arguments. if not isDeclarationLine and not isBody and ln.endswith(") {"): isDeclaration = False isBody = True # Function argument. if ( isDeclaration and not isDeclarationLine and not isBody and not ln.endswith(") {") ): print(f"TODO argument: '{ln}'") # Function return type and function name. if isDeclaration and lastPart.endswith("("): functionName = lastPart[:-1] returnType = ln[:-len(lastPart) - 1] # -1 for space before function name print(f"Function name: '{functionName}'") print(f"Return type: '{returnType}'") isDeclarationLine = False lines_out.append(ln) # Output result. print(lines_out)