Привет, друзья!
Представляю вашему вниманию перевод этой замечательной статьи.
Сегодня мы разработаем простейший компилятор кода на JavaScript
. Без учета комментариев наша программа будет состоять примерно из 250 строк кода.
Мы будем компилировать lisp-подобные вызовы функций в C-подобные. Например, если у нас имеется 2 функции, add
и subtract
, то выглядеть они будут так:
| LISP | C |
---|
2 + 2 | (add 2 2) | add(2, 2) |
4 - 2 | (subtract 4 2) | subtract(4, 2) |
2 + (4 - 2) | (add 2 (subtract 4 2)) | add(2, subtract(4, 2)) |
Разумеется, это далеко не полный синтаксис LIST или C, но нам вполне этого хватит для демонстрации многих основных частей современного компилятора.