МЕТОДЫ ТРАНСЛЯЦИИ
Алгоритм преобразования из инфиксного в постфиксное выражение
Для лучшего понимания и запоминания, будем использовать аббревиатуры:
-
STACK — стек это тип данных, представляющий собой список элементов, организованных по принципу LIFO
- Английский: last in — first out
- Русский: последним пришёл — первым вышел
-
QUEUE — очередь это тип данных, представляющий собой список элементов, организованных по принципу FIFO
- Английский: first in — first out
- Русский: первый пришёл — первым вышел
-
PUSH — проталкивание, при проталкивании добавляется новый элемент, в вершину стека, то есть текущий элемент становиться вершиной стека (последним элементом)
-
POP — выгружает элемент который, является вершиной стека. Вершиной становится последний элемент в стеке
-
TOP — вершина стека, то-есть последний его элемент
Перебираем выражение слева на право.
-
Если входящий элемент число, то добавляем его в очередь (QUEUE)
-
Если входящий элемент оператор (+, -, *, /) то проверяем:
-
Если стек (STACK) пуст или содержит левую скобку в вершине (TOP), то добавляем (PUSH) входящий оператор в стек (STACK)
-
Если входящий оператор имеет более высокий приоритет чем вершина (TOP), поместите (PUSH) его в стек (STACK)
-
Если входящий оператор имеет более низкий или равный приоритет, чем вершине (TOP), выгружаем (POP) в очередь (QUEUE), пока не увидите оператор с меньшим приоритетом или левую скобку на вершине (TOP), затем добавьте (PUSH) входящий оператор в стек (STACK)
-
-
Если входящий элемент является левой скобкой, поместите (PUSH) его в стек (STACK)
-
Если входящий элемент является правой скобкой, выгружаем стек (POP) и добавляем его элементы в очередь (QUEUE), пока не увидите левую круглую скобку. Удалите найденную скобку из стека (STACK)
-
В конце выражения выгрузите стек (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 |