/MT

Primary LanguageC++

МЕТОДЫ ТРАНСЛЯЦИИ

Алгоритм преобразования из инфиксного в постфиксное выражение

Для лучшего понимания и запоминания, будем использовать аббревиатуры:

  1. STACK — стек это тип данных, представляющий собой список элементов, организованных по принципу LIFO

    • Английский: last in — first out
    • Русский: последним пришёл — первым вышел
  2. QUEUE — очередь это тип данных, представляющий собой список элементов, организованных по принципу FIFO

    • Английский: first in — first out
    • Русский: первый пришёл — первым вышел
  3. PUSH — проталкивание, при проталкивании добавляется новый элемент, в вершину стека, то есть текущий элемент становиться вершиной стека (последним элементом)

  4. POP — выгружает элемент который, является вершиной стека. Вершиной становится последний элемент в стеке

  5. TOP — вершина стека, то-есть последний его элемент


Перебираем выражение слева на право.

  1. Если входящий элемент число, то добавляем его в очередь (QUEUE)

  2. Если входящий элемент оператор (+, -, *, /) то проверяем:

    • Если стек (STACK) пуст или содержит левую скобку в вершине (TOP), то добавляем (PUSH) входящий оператор в стек (STACK)

    • Если входящий оператор имеет более высокий приоритет чем вершина (TOP), поместите (PUSH) его в стек (STACK)

    • Если входящий оператор имеет более низкий или равный приоритет, чем вершине (TOP), выгружаем (POP) в очередь (QUEUE), пока не увидите оператор с меньшим приоритетом или левую скобку на вершине (TOP), затем добавьте (PUSH) входящий оператор в стек (STACK)

  3. Если входящий элемент является левой скобкой, поместите (PUSH) его в стек (STACK)

  4. Если входящий элемент является правой скобкой, выгружаем стек (POP) и добавляем его элементы в очередь (QUEUE), пока не увидите левую круглую скобку. Удалите найденную скобку из стека (STACK)

  5. В конце выражения выгрузите стек (POP) в очередь (QUEUE)

Генерация DOXYGEN документации

Генерация стартового файла с настройкаим проекта:

doxygen -g <config_name>

Основные опции:

ТЭГ НАЗНАЧЕНИЕ ПАРАМЕТРЫ
DOXYFILE_ENCODING Кодировка, которая используется для всех символов в данном файле настроек UTF-8
OUTPUT_LANGUAGE Устанавливает язык, на котором будет сгенерирована документация Russian
PROJECT_NAME Название проекта MT
PROJECT_NUMBER Данный тэг может быть использован для указания номера проекта или его версии 1.0.0
PROJECT_BRIEF Краткое однострочное описание проекта C++ Translator to Assembler
OUTPUT_DIRECTORY Абсолютный или относительный путь, по которому будет сгенерирована документация doxygen
INPUT Список файлов и/или директорий, разделенных пробелом, которые содержат в себе исходные коды проекта INPUT = src/main.cpp
RECURSIVE Используется в том случае, если необходимо сканировать исходные коды в подпапках указанных директорий NO

Генерация документации:

doxygen

или если <config_name> - имеет название отличное от Doxyfile

doxygen <config_name>

После чего в текущей дирректории будет сгенерирован подкатолог doxygen с двумя дирректориями:

  • html - для просмотра в браузере
  • latex - для генерации pdf

ASSEMBLER

КОМАНДА ОПИСАНИЕ
FILD Загрузка операнда в вершину стека
fd fd