Язык Бёма относится к языку, машине и методу перевода, разработанным Коррадо Бёмом во второй половине 1950 года. Бём использовал эту работу как часть своей диссертации , представленной в 1951 году (измененной после представления), опубликованной в 1954 году. [1] [2] [3]
Работа Бёма описывала первый полный метациклический компилятор . Код компилятора был на удивление точным и состоял всего из 114 строк кода. [4] Поскольку язык допускал только два вида выражений: полностью заключенные в скобки или без скобок, но с приоритетом операторов, код компилятора был разделен на две части. 59 строк использовались для обработки формул с скобками, 51 — для обработки выражений приоритета операторов и 4 — для выбора между этими двумя случаями. [5]
Техника разбора выражений Бёма имела только линейную сложность. Она генерировала инструкции для структуры, похожей на бинарное дерево . [6]
Язык Бёма состоял только из операций присваивания . Он не имел специальных конструкций, таких как определяемые пользователем функции, управляющие структуры . Переменные представляли только неотрицательные целые числа . Для выполнения перехода нужно было записать специальную переменную π. Для выполнения ввода-вывода использовался символ ?. [7]
Пример программы, загружающей 11-элементный массив из входных данных, будет выглядеть следующим образом.
A. Положим i = 0 (плюс π → G базовый адрес 100 для 100 → i входной массив а). B → π
B. Пусть новый вход a[i] будет π' → B дано. Увеличьте i на единицу, ? → ↓i и остановиться, если i > 10, i+1 → i в противном случае повторите B. [(1∩(i∸110))∙Ω]+[(1∸(i∸110))∙B] → π
∩ представляет минимальный оператор, а ∸ — логическую разницу.