Skip to main content

Что такое абстрактный синтаксис?

Абстрактный синтаксис - это способ для программистов наметить структуру программы, которую они хотят создать, не беспокоясь о реальном коде, необходимом для его реализации. Это позволяет программисту сосредоточиться на том, что должна делать программа, прежде чем сосредоточиться на том, как заставить компьютер фактически выполнять нужные функции. Абстрактный синтаксис описывает конкретные задачи программы, такие как сложение двух чисел, и показывает, какие типы данных могут использоваться в этой программе. Когда абстрактное отображение завершено, рисуется абстрактное синтаксическое дерево, которое сопоставляет абстрактные концепции с конкретным синтаксисом - фактическими символами, которые программист должен набрать, чтобы запустить программу, которую он создает.

Идея абстрактного синтаксиса состоит в том, чтобы сосредоточиться на типах данных и их отношениях, не вдаваясь в детали того, как их кодировать. Компьютерный код сильно отличается от человеческого языка, и пытаться мыслить в этих терминах сложно. Вместо этого программисты составляют список шагов, которые должна выполнить программа, а затем используют конкретный синтаксис для сопоставления абстрактных терминов с терминами компьютерного кода, которые выполняют эти шаги. Зачастую программист включает типы данных в свою абстрактную разметку, чтобы показать, с какими типами данных - будь то числа, буквы или десятичные дроби - программа может работать. Однако на данном этапе программирования определенные типы данных не требуются, и программист может выбрать использование абстрактных типов данных, которые являются чисто теоретическими и будут заменены конкретными типами данных при написании программы.

Такая абстрактная идея программирования часто используется в теории компиляторов. Компьютеры могут понимать только два значения: 1 и 0. Это известно как двоичный код. Чтобы компьютер понимал программу, написанную на языке программирования, он должен компилировать или переводить слова и буквы в поток единиц и нулей. Компиляторы сложны для создания и отображения расплывчатого или абстрактного представления о том, что им нужно делать, помогает программисту планировать безошибочный код.

Когда программист хочет сопоставить абстрактный синтаксис с конкретным синтаксисом и начать кодирование программы или компилятора, он создает абстрактное синтаксическое дерево. Это просто список всех написанных ею абстрактных инструкций, таких как «добавить 2 переменные», с линией, проведенной от каждого абстрактного термина до конкретной строки кода, необходимой для выполнения этой инструкции. Программист может использовать любые абстрактные термины, которые он хочет, но более распространенным является использование хорошо известных терминов кода, таких как «var» для переменной и «int» для целого числа.