Рубрики

Дизайн компилятора


  • Теория Компиляторов | Набор 2

    Следующие вопросы были заданы на экзамене GATE CS.

  • Введение в лексический анализ

    Лексический анализ — это первая фаза компилятора, также известная как сканер. Он преобразует входную программу высокого уровня в последовательность токенов . Лексический анализ может быть реализован с помощью детерминированных конечных […]

  • Введение в синтаксический анализ в дизайне компилятора

    Когда входная строка (исходный код или программа на каком-либо языке) передается компилятору, компилятор обрабатывает ее в несколько этапов, начиная от лексического анализа (сканирует входные данные и разделяет его на токены) […]

  • Почему ПЕРВЫЙ и СЛЕДУЕТ в дизайне компилятора?

    Почему ПЕРВЫЙ? Мы видели необходимость возврата назад в предыдущей статье «Введение в синтаксический анализ», которая является действительно сложным процессом для реализации. Может быть проще решить эту проблему:

  • Первый набор в синтаксическом анализе

    FIRST (X) для грамматического символа X — это набор терминалов, которые начинают строки, производные от X.

  • СЛЕДУЙТЕ за набором в синтаксическом анализе

    Мы обсудили следующие темы по синтаксическому анализу. Введение в синтаксический анализ Почему ПЕРВЫЙ и СЛЕДУЕТ? Первый набор в синтаксическом анализе В этом посте обсуждается FOLLOW Set. Следуйте (X), чтобы быть […]

  • Классификация контекстно-свободных грамматик

    КОНТЕКСТ F РЗЭ G rammars (CFG) могут быть классифицированы на основе следующих двух свойств: 1) На основе количества строк, которые он генерирует. Если CFG порождает конечное число строк, то CFG […]

  • Неоднозначная грамматика

    Вы также можете прочитать нашу ранее обсуждаемую статью по классификации контекстно-свободных грамматик. КОНТЕКСТ F РЗЭ G rammars (CFGs) классифицируются на основе: Количество деривационных деревьев Количество строк В зависимости от количества […]

  • Синтаксически направленный перевод в дизайне компилятора

    Справочная информация: Parser использует CFG (Context-free-Grammer) для проверки входной строки и вывода для следующей фазы компилятора. Выходными данными могут быть либо дерево разбора, либо абстрактное синтаксическое дерево. Теперь, чтобы чередовать […]

  • Среды выполнения в проектировании компиляторов

    Перевод должен связывать статический исходный текст программы с динамическими действиями, которые должны выполняться во время выполнения для реализации программы. Программа состоит из имен для процедур, идентификаторов и т. Д., Которые […]

  • Промежуточная генерация кода в дизайне компилятора

    В модели анализа-синтеза компилятора внешний интерфейс компилятора переводит исходную программу в независимый промежуточный код, а затем внутренний компонент компилятора использует этот промежуточный код для генерации целевого кода (который может быть […]

  • Разбор | Набор 1 (Введение, Неоднозначность и Парсеры)

    В этой статье мы рассмотрим различные типы разборов. Это одна из самых важных тем в компиляторе с точки зрения GATE. Работа различных парсеров будет объяснена с точки зрения решения вопросов […]

  • Парсеры снизу вверх или сдвиг | Набор 2

    В этой статье мы обсуждаем синтаксический анализатор Bottom Up. Парсеры снизу вверх / парсеры с уменьшением сдвига Постройте дерево разбора от листьев до корня. Анализ снизу вверх может быть определен […]

  • Парсер SLR, CLR и LALR | Набор 3

    В этой статье мы обсуждаем парсер SLR, парсер CLR и парсер LALR, которые являются частями парсера Bottom Up. SLR Parser Парсер SLR похож на парсер LR (0) за исключением того, […]

  • C-программа для обнаружения токенов в C-программе

    Как известно, Lexical Analysis — это первая фаза компилятора, также известная как сканер. Он преобразует входную программу в последовательность токенов. Программа AC состоит из различных токенов, и токен является ключевым […]

  • MCQ по распределению памяти и процессу компиляции

    1. Каким будет вывод следующего кода? #include <stdio.h> #include <stdlib.h>    int main() {     union test {         int i;         float f;         char c;     };     union test* t;     t = (union […]

  • Оптимизация кода в дизайне компилятора

    Оптимизация кода на этапе синтеза — это метод преобразования программы, который пытается улучшить промежуточный код, заставляя его потреблять меньше ресурсов (т. Е. ЦП, память), так что в результате получится более […]

  • Внедрение объектного кода в проект компилятора

    Предположим, что у вас есть ac-программа, затем вы передаете C-программу компилятору, и компилятор выдаст вывод в ассемблерном коде. Теперь этот код на ассемблере передаст ассемблеру, и ассемблер произведет вам некоторый […]

  • Статический и динамический обзор

    Область действия переменной x — это область программы, в которой использование x относится к ее объявлению. Одна из основных причин определения области видимости заключается в том, что переменные в разных […]

  • Поколение языков программирования

    Существует пять поколений языков программирования. Это: Языки первого поколения: Это языки низкого уровня, такие как машинный язык. Языки второго поколения: Это низкоуровневые языки ассемблера, используемые в ядрах и аппаратных дисках. […]