This commit is contained in:
Михаил Капелько
2024-03-21 22:33:57 +03:00
parent a46fc88c13
commit 2ae4a8a72f
2 changed files with 75 additions and 1 deletions

View File

@@ -1,7 +1,9 @@
#include <map>
#include "Memory.h"
std::map<int, int> memory_generateConstPlayfield(int n) {
std::map<int, int> memory_generateConstPlayfield(
int n
) {
std::map<int, int> idGroups;
int id = 0;
for (int gid = 0; gid < n; ++gid) {

72
translator-C++-Swift/translate Executable file
View File

@@ -0,0 +1,72 @@
#!/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)