Модераторы: Snowy, Poseidon

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Разработка компилятора языка C 
V
    Опции темы
TheVoid
Дата 27.6.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Предлагаю всем желающим совместную разработку компилятора языка C (ANSI) в целях самообразования и (или) практической выгоды (на поздних этапах).
У меня нет абсолютно никакого опыта совместных проектов, потому с удовольствием попрактикуюсь smile

Во-первых, разработка будет открытой и все исходники будут размещаться на каком-нибудь Google-Code.
Во-вторых, я не знаю, каким образом происходит обсуждение проекта среди его участников, так что подскажите на этот счет smile
Цель - написать (в идеале) полноценный компилятор языка Си, или некоторое его (по возможности наиболее полное) подмножество. Переднего и заднего плана (front-end, back-end).

Высказывайтесь. Очередная банальность и велосипед о трех колесах.

Это сообщение отредактировал(а) TheVoid - 27.6.2009, 00:39
PM   Вверх
Mazzi
Дата 30.6.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 1
Всего: 21



Если нет опыта проектов, то задача великовата для тебя. Это звучит примерно как, "А не написать ли мне роман "Война и мир" примерно как у Толстого?"

Поищи, в сети есть исходники готовых бесплатных компиляторов. Почитай, разберись. Сделай несколько простых проектов. Ну а потом уже...


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
DEADHUNT
Дата 30.6.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.11.2008

Репутация: нет
Всего: нет



ассемблер знаешь? если нет то тебе там делать нечего. а почему ANSI, а не C99?

Это сообщение отредактировал(а) DEADHUNT - 30.6.2009, 11:28
PM MAIL   Вверх
TheVoid
Дата 30.6.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(Mazzi @  30.6.2009,  10:20 Найти цитируемый пост)
Если нет опыта проектов, то задача великовата для тебя

Нет, речь шла о совместных проектах.
Не спрашивал даже "а как же мне написать свой язык программирования". Опыт программирования имеется, чтобы не задавать таких вопросов.



Цитата(DEADHUNT @  30.6.2009,  11:23 Найти цитируемый пост)
ассемблер знаешь? если нет то тебе там делать нечего.

Знание маш. кодов потребуется на поздних этапах компиляции - непосредственно, генерации кода. Чтобы не ударить лицом в грязь, изучаю книгу тов-ща Кипа Ирвина "Язык ассемблера для процессоров Интел".


Цитата(DEADHUNT @  30.6.2009,  11:23 Найти цитируемый пост)
а почему ANSI, а не C99?

Личные предпочтения.
PM   Вверх
DEADHUNT
Дата 30.6.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.11.2008

Репутация: нет
Всего: нет



Цитата(TheVoid @  30.6.2009,  20:33 Найти цитируемый пост)
Знание маш. кодов потребуется на поздних этапах компиляции - непосредственно, генерации кода. Чтобы не ударить лицом в грязь, изучаю книгу тов-ща Кипа Ирвина "Язык ассемблера для процессоров Интел".

без вывода ассемблерного листинга сложно увидить работу компилятора. да и в чём будет заключаться его работа(на начальных этапах)? сказать - ошибок нет.

Это сообщение отредактировал(а) DEADHUNT - 30.6.2009, 22:01
PM MAIL   Вверх
TheVoid
Дата 30.6.2009, 22:23 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Начальный этап: препроцессирование, разбивка на токены, заполнение таблицы символов. Выходные данные: деревья или "четверки". Уже потом, оптимизация и, непосредственно, код.

Это сообщение отредактировал(а) TheVoid - 30.6.2009, 22:25
PM   Вверх
TheVoid
Дата 9.7.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Завел собственный Блог, где буду делиться подробностями реализации компилятора. Комментарии приветствуются.
Надеюсь, кто-нибудь проявит интерес и отпишется...

Это сообщение отредактировал(а) TheVoid - 10.7.2009, 23:16
PM   Вверх
DEADHUNT
Дата 12.7.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.11.2008

Репутация: нет
Всего: нет



Цитата
Ключевые слова:
char, int, short, void, unsigned, signed, return, if, else

хорошо что всё такие есть люди которым интересно разрабатывать компилятор. похоже ты действительно ничего не понимаешь в построении компиляторов, поскольку сложность утверждений if, while, for практически одинаковая. а если думаешь потом писать компилятор C++ то в первую очередь задумайся о сканере, что бы решать разные не однозначности.

Это сообщение отредактировал(а) DEADHUNT - 12.7.2009, 17:14
PM MAIL   Вверх
Shitbox2
Дата 12.7.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.7.2009
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Дополню.
Лучше начни писать не компилятор, а визуальную надстройку на компилятор. Для начала, чтобы логические блоки (if, for ...) были ограничены разноцветными областями.

Навыки программирования графики и особенно таких компиляторов в скором времени будут сильно востребованы.
PM MAIL   Вверх
DEADHUNT
Дата 12.7.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.11.2008

Репутация: нет
Всего: нет



Цитата

Принцип именование функций подчинается некоторым простым правилам:
имя предваряется приставкой – именем модуля, в котором расположена функция (зачастую, но могут быть исключения)
каждое слово начинается с заглавной буквы
имя может быть избыточным, т.е. слишком длинным, но чрезмерное сокращение не допускается

Пример: void ScanSkipMultiLineComment(void) .

И поэтому мне очень не нравится использовать стандартные библиотечные функции – они ломают всю картину. Можно, конечно, махнуть на эту мелочь рукой, но… Я решил сделать немножко по-другому. Я использую дополнительный header, в котором задаю новые имена функциям из стандартных Си-шных библиотек. Например: malloc превращается в MemAlloc.

ужас, ты не понимаешь идею C. делаешь из C какой-то паскаль. лучше поройся в исходниках linux, чтобы определиться с стилем кодирования. и ещё не надо делать каких-то приставок к именам, для этого придумали ключевое слово static.
PM MAIL   Вверх
TheVoid
Дата 12.7.2009, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(DEADHUNT @  12.7.2009,  17:13 Найти цитируемый пост)
похоже ты действительно ничего не понимаешь в построении компиляторов

Нет, я правда не профессионал на этом поприще. Я только учусь.


Цитата(DEADHUNT @  12.7.2009,  17:13 Найти цитируемый пост)
поскольку сложность утверждений if, while, for практически одинаковая

И что из этого утверждения следует? 


Цитата(DEADHUNT @  12.7.2009,  17:13 Найти цитируемый пост)
а если думаешь потом писать компилятор C++

Нет, я не настолько псих  smile 


Цитата(DEADHUNT @  12.7.2009,  17:13 Найти цитируемый пост)
в первую очередь задумайся о сканере, что бы решать разные не однозначности

Решим. Как только лбом упремся в это дело.

Цитата(Shitbox2 @  12.7.2009,  17:42 Найти цитируемый пост)
Лучше начни писать не компилятор, а визуальную надстройку на компилятор

Не-а, это не входит в мои приоритеты.


Цитата(Shitbox2 @  12.7.2009,  17:42 Найти цитируемый пост)
Навыки программирования графики и особенно таких компиляторов в скором времени будут сильно востребованы

Ну, к тому времени у меня и опыта наберется. Хотя как я уже говорил, пока что это хобби, а не трудовая деятельность.


Цитата(DEADHUNT @  12.7.2009,  18:14 Найти цитируемый пост)
ужас, ты не понимаешь идею C

А мне казалось, что идея Си - не сковывать программиста, а наоборот, позволить делать ему все, что только заблагорассудиться... Здесь до сих пор спорят о вкусах и личных предпочтениях? Мрак.

Ребят, меня правда не надо упрекать или критиковать (до фени мне это), если решите что-нибудь "по существу" (с) сказать, буду признателен за советы и помощь.

Это сообщение отредактировал(а) TheVoid - 12.7.2009, 18:40
PM   Вверх
DEADHUNT
Дата 12.7.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.11.2008

Репутация: нет
Всего: нет



в С нету не однозначностей, особенно по стандарту C99(где уже запретили default-int и соответственно конструкции вида main(){...}), значит отпадает необходимость в сканере с откатом. как разбор будет происходить? LL(k), LR(k) анализатор(или ещё что-то в этом духе) или рекурсивный спуск? как препроцессор будет работать? и вообще очень советую начинать конструирование компилятора начиная с первой страницы стандарта(много для себя откроешь! знаю по себе).

Это сообщение отредактировал(а) DEADHUNT - 12.7.2009, 19:07
PM MAIL   Вверх
beroal
Дата 12.7.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 18.1.2003
Где: Украина

Репутация: 1
Всего: 3



Цитата(DEADHUNT @ 12.7.2009,  14:13)
в первую очередь задумайся о сканере

Что есть «сканер»?
PM WWW   Вверх
TheVoid
Дата 12.7.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.6.2009

Репутация: нет
Всего: нет



Цитата(DEADHUNT @  12.7.2009,  19:05 Найти цитируемый пост)
с первой страницы стандарта

Лежит у меня на рабочем столе, только читаю редко, английский не настолько хорошо знаю.

О том, как будет все происходит я напишу в следующих статьях smile
PM   Вверх
bilbobagginz
Дата 12.7.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



теория компиляции - один из базовых предметов любого инженера разработки ПО.
обычно компиляцию изучают после формальных языков и автоматов.
Желательно понимать как устроен современный компилятор.

Кроме этого для экспериментов есть несколько готовых инструментов лексического анализа, напр. flex (наследник lex-а) и синтактического анализа, как напр. Bison (наследник YaCC-а).

удачи.


Это сообщение отредактировал(а) bilbobagginz - 12.7.2009, 19:47


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Совместные проекты/поиск партнёров"
Snowy
Poseidon

Внимание:
В этом форуме обсуждаются вопросы только по совместным проектам, когда Вы хотите найти партнёров или стать участником проекта.
Запрещается размещение заказов на написание программ, поиск работников (для этого есть раздел "Работа") и реклама своих сетевых ресурсов.

Этот раздел только для проектов в которых Вы будете выступать в качестве исполнителя!

Темы и сообщения, не удовлетворяющие данным правилам, будут удаляться на основании пункта 3 Правил форума!

  • Человек, создающий тему, становится руководителем проекта. Все вопросы о разработке решаются с его согласия.
  • Публикация предложения к сотрудничеству считается защищённым авторскими правами и не может разрабатываться без согласия с руководителем проекта.
  • Конечный продукт должен содержать указание на всех участников и Vingrad.

  • Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, Poseidon

     
    1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
    0 Пользователей:
    « Предыдущая тема | Совместные проекты/поиск партнёров | Следующая тема »


     




    [ Время генерации скрипта: 0.1066 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


    Реклама на сайте     Информационное спонсорство

     
    По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
    Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.