// 2025-2026 Богданович Давид Когут Прихожденко (кдб.дійсність.укр)
/* Перекладач Мавки */
взяти визначення мавка/машина;
взяти визначення мавка/розбирач;
простір мавка {
простір перекладач {
структура ПомилкаПерекладу {
позиція_в_тексті: природне;
рядок: природне;
стовпець: природне;
повідомлення: кд; // має звільнити той хто оброляє помилку
}
синонім ДіяСтворитиКод = (М: *Машина, шлях: адреса) -> адреса;
синонім ДіяПокластиКонстантуЧисла = (М: *Машина, код: адреса, значення: р64) -> п32;
синонім ДіяПокластиКонстантуТексту = (М: *Машина, код: адреса, значення: кд) -> п32;
синонім ДіяПокластиКонстантуКоду = (М: *Машина, код: адреса, значення: адреса) -> п32;
синонім ДіяПокластиВказівку = (М: *Машина, код: адреса, рядок: п32, вид: п8) -> п32;
синонім ДіяПокластиВказівкуЗАргументом = (М: *Машина, код: адреса, рядок: п32, вид: п8, аргумент: п32) -> п32;
синонім ДіяПокластиВказівкуЗДвомаАргументами = (М: *Машина, код: адреса, рядок: п32, вид: п8, аргумент1: п32, аргумент2: п32) -> п32;
синонім ДіяЗмінитиАргументВказівки = (М: *Машина, код: адреса, позиція_виду_вказівки: п32, позиція_аргумента_вказівки: п32, новий_аргумент: п32) -> ніщо;
синонім ДіяОтриматиРозмірВказівок = (М: *Машина, код: адреса) -> п32;
синонім ДіяОтриматиШляхКоду = (М: *Машина, код: адреса) -> адреса;
структура Дії {
створити_код: ДіяСтворитиКод;
покласти_константу_числа: ДіяПокластиКонстантуЧисла;
покласти_константу_тексту: ДіяПокластиКонстантуТексту;
покласти_константу_коду: ДіяПокластиКонстантуКоду;
покласти_вказівку: ДіяПокластиВказівку;
покласти_вказівку_з_аргументом: ДіяПокластиВказівкуЗАргументом;
покласти_вказівку_з_двома_аргументами: ДіяПокластиВказівкуЗДвомаАргументами;
змінити_аргумент_вказівки: ДіяЗмінитиАргументВказівки;
отримати_розмір_вказівок: ДіяОтриматиРозмірВказівок;
отримати_шлях_коду: ДіяОтриматиШляхКоду;
}
дія перекласти(
М: *Машина,
шлях: адреса,
сирий_текст: кд,
знаки: розбирач::Знаки,
здійснимі: розбирач::Сполуки,
дії: Дії,
вихід_коду: *адреса,
вихід_помилки: *ПомилкаПерекладу
) -> логічне;
}
дія перекласти_в_код(
М: *Машина,
шлях: *ПредметДаних,
сирий_текст: кд,
знаки: розбирач::Знаки,
здійснимі: розбирач::Сполуки,
вихід_коду: **ПредметКоду,
вихід_помилки: *перекладач::ПомилкаПерекладу
) -> логічне;
дія перекласти_у_файл_коду(
М: *Машина,
сирий_текст: кд,
знаки: розбирач::Знаки,
здійснимі: розбирач::Сполуки,
вихід_розміру: *природне,
вихід_даних: **п8,
вихід_помилки: *перекладач::ПомилкаПерекладу
) -> логічне;
}