Михаил Капелько 3 months ago
parent
commit
2ae4a8a72f
2 changed files with 75 additions and 1 deletions
  1. +3
    -1
      language-C++/Memory/src/Memory.Aux.cpp
  2. +72
    -0
      translator-C++-Swift/translate

+ 3
- 1
language-C++/Memory/src/Memory.Aux.cpp 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
- 0
translator-C++-Swift/translate 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)

Loading…
Cancel
Save