Транслятор - PenzaStreetGames/Yo GitHub Wiki

Транслятор - программа, превращающая текст программы, понятный человеку в набор машинных команд. Процесс трансляции делится на следующие стадии.

  1. Построение синтаксического дерева
    1. Разделение на токены (набор символов со смыслом)
    2. Лексический анализ (осмысление роли токена)
    3. Синтаксический анализ (осмысление роли токена в окружении других токенов)
  2. Получение набора машинных команд
  3. Получение двоичного файла

Пример

Рассмотрим на примере простой программы:

print("Hello, world!")

При разборе мы получим следующее дерево:

indent_program program
    call (
        name print
        call_expression (
            string "Hello, world!"

Это дерево превратится в следующий набор машинных команд:

0  Crt  2 str "Hello, world!"
20  Pop  22 lnk 26
24  Out  26 lnk 0
28  Pop  30 non 0
32  End 

Каждый тип данных переводится в байты по своему алгоритму. Так, в файл разрешения .yovc будет содержать следующие байты:

0 0 0 2 0 0 0 3 0 0 0 5 0 0 0 34 0 0 0 72 0 0 0 101 0 0 0 108 0 0 0 108 0 0 0 111 0 0 0 44 0 0 0 32 0 0 0 119 0 0 0 111 0 0 0 114 0 0 0 108 0 0 0 100 0 0 0 33 0 0 0 34 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 11 0 0 0 1 0 0 0 26 0 0 0 2 0 0 0 9 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0

Пишите на почту [email protected] чтобы была написана более подробная интересующаяся вас информация.