2012-02-07 2 views
1

Если я разрушу процесс компиляции для C или исходный файл C++ в эти шаги:Синтаксический и составление номенклатуры

  • A: препроцессора.
  • B: Tokenizing (сбор и листинг ключевых слов, идентификаторов, символов, литералов (строк, символов, чисел)).
  • C: Сборка собранных токенов в структурированную форму, такую ​​как дерево.
  • D: Обработка и проверка этой структурированной формы путем анализа ее семантики.
  • E: Создание списка инструкций (например: ASM).

Мои номенклатурные вопросы:

  1. Является ли синтаксис разбора все #abc? #ДО НАШЕЙ ЭРЫ? просто #C?
  2. Какие условия я должен использовать для #ABC? #ДО НАШЕЙ ЭРЫ? #C?
  3. Что такое лексинг, здесь? Это просто #B?
  4. Является ли семантический разбор #D?
+0

Там также генерирующего intemediate кода и оптимизации [между D Е] – amit

+0

preproce ssor также придется делать некоторые лексики, он также должен знать об этом языке. –

ответ

0

Пока только этап предварительной обработки является частью стандарта языка, большинство платформ разделить весь процесс сборки в

  • предобработку,
  • компилирования,
  • монтажа,
  • сшивания.

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

Некоторые современные системы, которые используют некоторую форму «оптимизации времени ссылки», могут отложить или повторить этап компиляции/сборки до тех пор, пока все составляющие объектные файлы не будут обработаны один раз, но морально это не сильно отличается от того, если вы просто конкатенировали все введите файлы вашего проекта в один большой файл и скомпилируйте их.

0

(А) является простой предварительной обработки: вырезать и вставить
(B) является lexical analysis
(С) syntax analysis [синтаксический]
(D) является semantics analysis [номер 5 в прилагаемой ссылке]

Ваш A,B,C,D в основном front end компилятора, в то время как ваш E является заключительным этапом его backend

+0

Значит, [ABC] можно назвать текстовой обработкой или чем-то еще? Как насчет [BC]? Я ищу подходящие имена для модулей и подмодулей компилятора, который я пытаюсь создать. – Aotium

Смежные вопросы