Форум программистов, компьютерный форум CyberForum.ru

Инструментальный софт - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.04.2013, 15:03     Инструментальный софт #1
Что должно входить в релизную интегрированную среду разработки? Редактор исходника - это понятно. Это видит пользователь. Ведь для инструментальщика прикладной программист - это пользователь. А ещё? Нажал пользователь "компилировать". Куда передаётся исходник? Сразу в компилятор? Или в отдельную софтину - анализатор? То есть анализатор - это отдельная программа, или часть компилятора? Лексический анализ предшествует синтаксическому, или наоборот? Каковы их задачи? Как они могут решаться? А сама компиляция? Пусть c++ - только язык, на котором написан сам инструментальный софт, но не исходный язык, то есть комплияция не с c++ на опкоды, а с другого языка на опкоды. Предположим, в исходнике есть выражение a/b и обе переменные декларированы, как действительные. Что надо поместить в код? Для начала без оптимизаций вообще. После компиляции код передаётся сразу линкеру? Как бы по-точнее узнать, что этот линкер должен сделать? А препроцессоры - это тоже отдельные софтины? Или что? Они предшествуют анализу, или наоборот?

Добавлено через 24 минуты
Пусть по правилам исходного языка type начинает декларацию нового типа, но, в отличие от паскаля, нет раздела типов, а вместо этого декаларация каждого типа начинается со слова type. Как следует обрабатывать декларацию типа? Предположим, компилятор дошёл до
Код
type tsudent=class
{
 acces mode pablic:
  variable name:string of ansi;
  variable group:pgroup;
  variable evaluations:tevaluations;
};
, что будет означать тип tsudent есть класс с переменными-pubic-членами name типа string of ansi, group типа pgroup и evaluations типа tevaluations, причём, string of ansi означает строку символов в кодировке ansi, а типы pgroup и tevaluations должны быть описаны выше. Что компилятор должен сделать, наткнувшись на такую декларацию? Пусть типизация строгая явная статическая и для начала без полиморфизма. Вот так. Классы есть, а иерархии классов пока нет, она появится только со второй версии.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.04.2013, 22:57     Инструментальный софт #2
Цитата Сообщение от taras atavin Посмотреть сообщение
Лексический анализ предшествует синтаксическому, или наоборот? Каковы их задачи?
Лексический анализ предшествует синтаксическому.
Задача лексического анализа - получение списка лексем и выявление лексических ошибок - например "левых" символов.
Задача синтаксического анализа - проверка правильности следования лексем, выявления синтаксических ошибок, построение внутреннего представления - дерева, полиз и т.п.

Цитата Сообщение от taras atavin Посмотреть сообщение
Как они могут решаться?
Как напишешь - так и будет.

Цитата Сообщение от taras atavin Посмотреть сообщение
А сама компиляция?
А что компиляция? Компиляция и включает в себя лексический анализ, синтаксический анализ, оптимизацию (опционально), генерацию кода.

Цитата Сообщение от taras atavin Посмотреть сообщение
Предположим, в исходнике есть выражение a/b и обе переменные декларированы, как действительные. Что надо поместить в код?
Книжку по асму открой.

Цитата Сообщение от taras atavin Посмотреть сообщение
После компиляции код передаётся сразу линкеру?
После компиляции получается бинарник, который передается линкеру.
Цитата Сообщение от taras atavin Посмотреть сообщение
А препроцессоры - это тоже отдельные софтины? Или что? Они предшествуют анализу, или наоборот?
фазы трансляции - стандарт с++ 2003 раздел 2.1 (стандарт с++ 2011 раздел 2.2)

Добавлено через 4 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Что компилятор должен сделать, наткнувшись на такую декларацию?
поместить tsudent в таблицу типов
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.04.2013, 09:18  [ТС]     Инструментальный софт #3
Цитата Сообщение от Jupiter Посмотреть сообщение
А что компиляция? Компиляция и включает в себя лексический анализ, синтаксический анализ, оптимизацию (опционально), генерацию кода.
Хорошо. Как выполняется генерация кода?

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
фазы трансляции - стандарт с++ 2003 раздел 2.1 (стандарт с++ 2011 раздел 2.2)
c++ - язык реализации среды, но не её исходный язык. Писать с её помощью на другом языке.

Добавлено через 1 минуту
Где можно изучить лексический анализ?

Добавлено через 1 час 33 минуты
А что такое "токен" в лексическом анализе?

Добавлено через 52 секунды
И объясните, что такое лексемы, на примере c++.

Добавлено через 2 часа 2 минуты
Ну вот получил компилятор аргумент - имя файла исходного кода. Как принято поступать дальше? Грузить файл целиком в оперативу, или же лексер должен самостоятельно читать его посимвольно с диска в скользящий буфер и разбирать?
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.04.2013, 09:25     Инструментальный софт #4
Цитата Сообщение от taras atavin Посмотреть сообщение
Как выполняется генерация кода?
у нас есть некое внутренне представление программы - например абстрактное синтаксическое дерево - обходим дерево и генерируем
Цитата Сообщение от taras atavin Посмотреть сообщение
Где можно изучить лексический анализ?
классика -Ахо, Ульман - книга дракона
dstat
36 / 38 / 1
Регистрация: 01.06.2011
Сообщений: 238
11.04.2013, 09:26     Инструментальный софт #5
найдите книгу по компиляторам (классика - Ахо, Ульман, "Компиляторы. Принципы, технологии, инструментарий"), все сразу встанет на свои места.

про лексический анализ еще посмотрите утилиты lex/flex, byson/yacc. лексема - осмысленная последовательность символов (например, class)

линкер собирает несколько скомпилированных объектных файлов в один (1 файл на с/с++ - 1 объектный файл, далее линкер: несколько объектных файлов - один объектный файл)

в интегрированную среду еще должно входить средство отладки (отладчик + интерфейс для отображения отладочной информации)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.04.2013, 10:02  [ТС]     Инструментальный софт #6
Цитата Сообщение от dstat Посмотреть сообщение
лексема - осмысленная последовательность символов (например, class)
А идентификатор будет лексемой? Или только зарезервированное слово? А скобка? А знак плюс?
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.04.2013, 10:07     Инструментальный софт #7
Цитата Сообщение от taras atavin Посмотреть сообщение
А идентификатор будет лексемой? А скобка? А знак плюс?
будут
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
11.04.2013, 13:27     Инструментальный софт #8
Еще семантический анализ упустили из вида, он следует сразу за синтаксическим. Потом может быть еще машинонезависимая оптимизация.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 14:54     Инструментальный софт
Еще ссылки по теме:

C++ Кто тут пишет софт на заказ
Криво ставится Софт C++ Builder
C++ Хочу писать мат. софт

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.04.2013, 14:54  [ТС]     Инструментальный софт #9
Цитата Сообщение от Kastaneda Посмотреть сообщение
Еще семантический анализ упустили из вида, он следует сразу за синтаксическим.
Про семантический анализ не знал, спасибо. А отпимизация будет потом.
Yandex
Объявления
11.04.2013, 14:54     Инструментальный софт
Ответ Создать тему
Опции темы

Текущее время: 15:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru