поправь конвертацию из C  в pascal  вот мой код 
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>C to Pascal Конвертер</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/codemirror.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/theme/dracula.min.css">
    <style>
        /* Общие стили */
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: #2d2d2d;
            color: #f8f8f2;
            margin: 0;
            padding: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
            transition: background 0.5s, color 0.5s;
        }

        h1, h3 {
            text-align: center;
            margin-bottom: 20px;
        }

        /* Контейнеры */
        .container {
            width: 90%;
            max-width: 1000px;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 20px;
            margin-bottom: 40px;
        }

        .code-section {
            width: 100%;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }

        textarea, pre {
            width: 100%;
            border: 1px solid #44475a;
            border-radius: 8px;
            background: #282a36;
            color: #f8f8f2;
            padding: 15px;
            font-size: 16px;
            transition: background 0.3s, color 0.3s, border 0.3s;
        }

        textarea:focus {
            border-color: #50fa7b;
            outline: none;
        }

        pre {
            overflow: auto;
            white-space: pre-wrap;
            word-wrap: break-word;
        }

        /* Кнопка */
        .button {
            padding: 12px 24px;
            background-color: #50fa7b;
            color: #282a36;
            border: none;
            border-radius: 25px;
            font-size: 16px;
            cursor: pointer;
            transition: background-color 0.3s, transform 0.2s;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
        }

        .button:hover {
            background-color: #40e372;
        }

        .button:active {
            transform: scale(0.95);
        }

        /* Сообщение об ошибке */
        .error {
            color: #ff5555;
            font-weight: bold;
            animation: fadeIn 0.5s ease-in-out;
        }

        /* Анимация появления */
        @keyframes fadeIn {
            from { opacity: 0; }
            to { opacity: 1; }
        }

        /* Анимация загрузки */
        .loading-spinner {
            border: 4px solid rgba(255, 255, 255, 0.2);
            border-top: 4px solid #50fa7b;
            border-radius: 50%;
            width: 30px;
            height: 30px;
            animation: spin 1s linear infinite;
            margin-top: 10px;
        }

        @keyframes spin {
            from { transform: rotate(0deg); }
            to { transform: rotate(360deg); }
        }

        /* Темный режим переключатель */
        .theme-toggle {
            position: absolute;
            top: 20px;
            right: 20px;
            background: #44475a;
            border: none;
            border-radius: 50%;
            width: 40px;
            height: 40px;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.3s;
        }

        .theme-toggle:hover {
            background: #6272a4;
        }

        .theme-toggle img {
            width: 20px;
            height: 20px;
        }

        /* Респонсивность */
        @media (min-width: 768px) {
            .container {
                flex-direction: row;
                justify-content: space-between;
            }

            .code-section {
                width: 48%;
            }
        }
    </style>
</head>
<body>
    <!-- Переключатель темы -->
    <button class="theme-toggle" onclick="toggleTheme()" title="Переключить тему">
        <img id="themeIcon" src="https://img.icons8.com/ios-glyphs/30/ffffff/moon-symbol.png" alt="Темная тема"/>
    </button>

    <div class="container">
        <!-- Секция ввода C кода -->
        <div class="code-section">
            <h3>Код на C:</h3>
            <textarea id="cCode" placeholder="Введите ваш C код здесь...">
#include <stdio.h>

// Функция сложения двух чисел
int add(int a, int b) {
    return a + b;
}

int main() {
    int a = 10;
    int b = 20;
    int sum = add(a, b);
    printf("Сумма: %d\n", sum);

    if (sum > 20) {
        printf("Сумма больше 20\n");
    } else {
        printf("Сумма 20 или меньше\n");
    }

    for (int i = 0; i < sum; i++) {
        printf("i = %d\n", i);
    }

    return 0;
}
            </textarea>
            <button class="button" onclick="convertCtoPascal()">Конвертировать в Pascal</button>
            <div id="loading" class="loading-spinner" style="display: none;"></div>
            <div id="errorMessage" class="error"></div>
        </div>

        <!-- Секция вывода Pascal кода -->
        <div class="code-section">
            <h3>Код на Pascal:</h3>
            <pre id="pascalCode"></pre>
        </div>
    </div>

    <!-- Подключение CodeMirror -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/codemirror.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.13/mode/clike/clike.min.js"></script>
    <script>
        // Инициализация CodeMirror для textarea
        const editor = CodeMirror.fromTextArea(document.getElementById('cCode'), {
            lineNumbers: true,
            mode: 'text/x-csrc',
            theme: 'dracula',
            lineWrapping: true
        });

        // Переключение темы
        let darkTheme = true;
        function toggleTheme() {
            darkTheme = !darkTheme;
            if (darkTheme) {
                document.body.style.background = '#2d2d2d';
                document.body.style.color = '#f8f8f2';
                editor.setOption("theme", "dracula");
                document.getElementById('themeIcon').src = "https://img.icons8.com/ios-glyphs/30/ffffff/moon-symbol.png";
            } else {
                document.body.style.background = '#f0f0f0';
                document.body.style.color = '#282a36';
                editor.setOption("theme", "eclipse");
                document.getElementById('themeIcon').src = "https://img.icons8.com/ios-glyphs/30/000000/sun--v1.png";
            }
        }

        // Функция конвертации C в Pascal
        function convertCtoPascal() {
            document.getElementById('errorMessage').innerText = '';
            document.getElementById('pascalCode').innerText = '';
            document.getElementById('loading').style.display = 'block';

            setTimeout(() => { // Имитация задержки для анимации загрузки
                try {
                    let cCode = editor.getValue();
                    let pascalCode = cCode;
                    let errorMessages = [];

                    // Удаление препроцессорных директив
                    pascalCode = pascalCode.replace(/#include\s*<[^>]+>/g, '');

                    // Замена типов данных
                    const typeMappings = {
                        '\\bint\\b': 'integer',
                        '\\bfloat\\b': 'real',
                        '\\bdouble\\b': 'real',
                        '\\bchar\\b': 'char',
                        '\\bvoid\\b': 'procedure'
                    };
                    for (let [cType, pascalType] of Object.entries(typeMappings)) {
                        let regex = new RegExp(cType, 'g');
                        pascalCode = pascalCode.replace(regex, pascalType);
                    }

                    // Замена объявлений переменных (поддержка нескольких переменных в одной строке)
                    pascalCode = pascalCode.replace(/(?:integer|real|char)\s+([^;]+);/g, function(match, p1) {
                        let variables = p1.split(',');
                        return variables.map(varDecl => {
                            varDecl = varDecl.trim();
                            let parts = varDecl.split('=');
                            if (parts.length === 2) {
                                let varName = parts[0].trim();
                                let varValue = parts[1].trim();
                                return `var ${varName}: ${determinePascalType(varDecl)} := ${varValue};`;
                            } else {
                                let varName = varDecl.trim();
                                return `var ${varName}: ${determinePascalType(varDecl)};`;
                            }
                        }).join('\n');
                    });

                    // Замена функций
                    pascalCode = pascalCode.replace(/integer\s+(\w+)\s*\(([^)]*)\)\s*\{/g, 'function $1($2): integer;\nbegin');
                    pascalCode = pascalCode.replace(/procedure\s+(\w+)\s*\(([^)]*)\)\s*\{/g, 'procedure $1($2);\nbegin');

                    // Замена return
                    pascalCode = pascalCode.replace(/return\s+([^;]+);/g, 'Result := $1;');

                    // Замена printf на writeln
                    pascalCode = pascalCode.replace(/printf\s*\(\s*"([^"]+)"\s*,\s*([^)]+)\);/g, 'writeln($1, $2);');
                    pascalCode = pascalCode.replace(/printf\s*\(\s*"([^"]+)"\s*\);/g, 'writeln($1);');

                    // Замена scanf на readln (упрощенно)
                    pascalCode = pascalCode.replace(/scanf\s*\(\s*"[^"]+"\s*,\s*&(\w+)\s*\);/g, 'readln($1);');

                    // Замена return 0; на end.
                    pascalCode = pascalCode.replace(/return\s+0;/g, 'end.');

                    // Замена функции main
                    pascalCode = pascalCode.replace(/integer\s+main\s*\(\s*\)\s*\{/g, 'begin');

                    // Замена if-else
                    pascalCode = pascalCode.replace(/if\s*\(([^)]+)\)\s*\{/g, 'if ($1) then begin');
                    pascalCode = pascalCode.replace(/else\s*\{/g, 'end else begin');

                    // Замена циклов for
                    pascalCode = pascalCode.replace(/for\s*\(\s*integer\s+(\w+)\s*=\s*(\d+);\s*\1\s*<\s*(\w+);\s*\1\+\+\s*\)\s*\{/g, 'for $1 := $2 to $3 - 1 do begin');
                    pascalCode = pascalCode.replace(/for\s*\(\s*(\w+)\s*=\s*(\d+);\s*\1\s*<=\s*(\w+);\s*\1\+\+\s*\)\s*\{/g, 'for $1 := $2 to $3 do begin');

                    // Замена циклов while
                    pascalCode = pascalCode.replace(/while\s*\(([^)]+)\)\s*\{/g, 'while ($1) do begin');

                    // Замена циклов do-while
                    pascalCode = pascalCode.replace(/do\s*\{/g, 'begin');
                    pascalCode = pascalCode.replace(/while\s*\(([^)]+)\)\s*;/g, 'end;');

                    // Замена switch-case
                    pascalCode = pascalCode.replace(/switch\s*\(([^)]+)\)\s*\{/g, 'case $1 of');
                    pascalCode = pascalCode.replace(/case\s+([^:]+):/g, '$1: begin');
                    pascalCode = pascalCode.replace(/break\s*;/g, 'end;');
                    pascalCode = pascalCode.replace(/default\s*:/g, 'else begin');

                    // Замена логических операторов
                    const logicalMappings = {
                        '&&': 'and',
                        '\\|\\|': 'or',
                        '!': 'not',
                        '!=': '<>',
                        '==': '=',
                        '<=': '<=',
                        '>=': '>='
                    };
                    for (let [cOp, pascalOp] of Object.entries(logicalMappings)) {
                        let regex = new RegExp(cOp, 'g');
                        pascalCode = pascalCode.replace(regex, pascalOp);
                    }

                    // Замена инкрементов и декрементов
                    pascalCode = pascalCode.replace(/(\w+)\+\+/g, '$1 := $1 + 1');
                    pascalCode = pascalCode.replace(/(\w+)--/g, '$1 := $1 - 1');

                    // Замена операторов присваивания
                    pascalCode = pascalCode.replace(/(\w+)\s*=\s*([^;]+);/g, '$1 := $2;');

                    // Замена фигурных скобок на begin/end
                    pascalCode = pascalCode.replace(/\{/g, 'begin');
                    pascalCode = pascalCode.replace(/\}/g, 'end;');

                    // Добавление заголовка программы
                    pascalCode = "program ConvertedProgram;\n\n" + pascalCode;

                    // Форматирование отступов
                    pascalCode = pascalCode.replace(/begin/g, 'begin\n  ');
                    pascalCode = pascalCode.replace(/end;/g, 'end;\n');

                    // Удаление лишних отступов
                    pascalCode = pascalCode.replace(/\n\s+\n/g, '\n');

                    // Отображение результата
                    document.getElementById('pascalCode').innerText = pascalCode;
                    document.getElementById('errorMessage').innerText = '';
                } catch (error) {
                    console.error(error);
                    document.getElementById('errorMessage').innerText = 'Произошла ошибка при конвертации: ' + error.message;
                    document.getElementById('pascalCode').innerText = '';
                } finally {
                    document.getElementById('loading').style.display = 'none';
                }
            }, 500); // Задержка в 0.5 секунды для анимации загрузки

            // Функция для определения типа Pascal на основе объявления переменной
            function determinePascalType(varDecl) {
                if (/integer/.test(varDecl)) return 'integer';
                if (/real/.test(varDecl)) return 'real';
                if (/char/.test(varDecl)) return 'char';
                return 'variant';
            }
        }
    </script>
</body>
</html>