-
Notifications
You must be signed in to change notification settings - Fork 0
pasha9797/Javascript-VM
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Описание конечного языка. Это типа ассемблер для VM javascript. Виртуальная машина содержит глобальный стек и таблицу переменных. На уровне данного языка есть: Комманды, константы, переменные, функции, массивы. Типов данных нет. Список комманд: push #1 - положить значение #1 в стек pushFromVar #1 - положить значение из переменной #1 в стек pushFromArray - положить в стек значения из массива. Стек должен содержать от головы: сам массив, индекс pop #1 - взять из стека значение и записать в переменную #1 popToArray - запись значения из стека в массив. Стек должен содержать от головы: Массив, индекс, значение. decl #1 - объявить переменную #1 declArray #1 - объявить массив с именем #1 jumpTrue #1 - прыгнуть на комманду #1 если в стеке лежит 1 jumpFalse #1 - прыгнуть на комманду #1 если в стеке лежит не 1 jump #1 - прыгнуть на комманду #1 sub - вычесть 2 значения из стека. Результат записать в стек mul - умножить 2 значения из стека. Результат записать в стек div - разделить 2 значения из стека. Результат записать в стек add - сложить 2 значения из стека. Результат записать в стек mod - остаток от деления 2 значений из стека. Результат записать в стек and - Логическое И к 2 значениям из стека. Результат записать в стек or - Логическое ИЛИ к 2 значениям из стека. Результат записать в стек gt - Операция > к 2 значениям из стека. Результат записать в стек ge - Операция >= к 2 значениям из стека. Результат записать в стек lt - Операция < к 2 значениям из стека. Результат записать в стек le - Операция <= И к 2 значениям из стека. Результат записать в стек equals - Операция == к 2 значениям из стека. Результат записать в стек not - если в стеке была 1, положить 0. Иначе положить 1 functionStart #1 - комманда объявления функции. VM создат функцию и запишет её в таблицу переменных, потом выполнится комманда, следующая за functionEnd. functionEnd #1 - комманда завершения объявления функции. Нужна в качестве метки для VM call - Вызов функции. Стек должен содержать от головы: сама функция, аргументы к ней (в обратном порядке) systemCall #1 - Вызов системной функции с именем #1. В стеке должны быть аргументы к функции return - Выход из функции. Если ф-я возвращает значение, оно должно быть последним в стеке
About
Javascript interpreter using Antlr
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published