pascal.js Интерпретатор, заметки
Primary tabs
Как начать
Исходный код
См. здесь: https://github.com/it-for-free/pascal.js
Компилятор - заметки про теории
Компилятор переводит программу с исходного языка на объектный язык
Результатом работы компилятора являются:
- Объектная программа -- программа на объектом языке
- Листинг -- файл, где содержится исходная программа, номера строк, информация об ошибках и информация об объектной программе.
На практике именно из листинга распечатывается фрагмент кода в сообщениях об ошибке (которые часто отображаются в консоли в разных системах разработки).
Далее рассмотрим из чего состоит компилятор (это конвеер, передающий результат работы от одного модуля к другому по цепочке):
- Модуль ввода-вывода - подпрограмма, ответственной за разбиение текста исходной программы на символы (отдельные буквы) и за построение листинга.
-
Лексический анализатор (ЛА) - модуль, который на выходе дает отдельные слова (для формирования слова для каждого очередного символа вызывается модуль ввода-вывода), напр. ключевое слово
varили скобка(в арифметическом выражении, скажем:(2 + 5) * 3
Итак: лексический анализатор разбирает программу на более крупные единицы (в сравнении с отдельными буквами модуля ввода-вывода), которые являются уже частью языка программирования, любой фрагмент, что уже может рассматриваться как минимальная логическая часть программы.
- Синтаксический анализатор (СинА) - проверяет соответствие, того, что получено из ЛА, т.н. формальным правилам.
- Семантический анализатор (СемА) - проверяет соответствие, того, что получено из ЛА, т.н. неформальным правилам.
- Генератор -- получается от СинА/СемА проверенную программу и на её основе строит объектную программу,
Лексический анализатор
Лексический анализатор не просто разбивает на слова, а присваивает каждому слову специальный код, беря его из таблицы.
Код показывает что именно это за слово - литерал какого-то типа, имя переменной или напр. скобка в выражении. Сравнивать коды слов при выполнении быстрее чем, сами слова.
- Log in to post comments
- 1387 reads