Транслятор - PenzaStreetGames/Yo GitHub Wiki
Транслятор - программа, превращающая текст программы, понятный человеку в набор машинных команд. Процесс трансляции делится на следующие стадии.
- Построение синтаксического дерева
- Разделение на токены (набор символов со смыслом)
- Лексический анализ (осмысление роли токена)
- Синтаксический анализ (осмысление роли токена в окружении других токенов)
- Получение набора машинных команд
- Получение двоичного файла
Пример
Рассмотрим на примере простой программы:
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] чтобы была написана более подробная интересующаяся вас информация.