adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Что нужно, чтобы написать компилятор на java?
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
BS
Эксперт
СообщениеДобавлено: Сб 8-09-07 : 22-41    Заголовок сообщения: Что нужно, чтобы написать компилятор на java? Ответить с цитатой

Помимо головы.

Спрашиваю просто из любопытства. я имею ввиду написать программу на жава, которая делала бы экзэшник из текстовика с кодом. т.е. не компилятор компиляторов.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
EvilHedgehog
Гуру
СообщениеДобавлено: Вс 9-09-07 : 00-04    Заголовок сообщения: Ответить с цитатой

Поверь, лучше этого не знать Wink А голову надо, ИМХО, с кандидатской по математике, не меньше.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Andron_
Гуру
Предупреждений : 4
СообщениеДобавлено: Вс 9-09-07 : 00-13    Заголовок сообщения: Ответить с цитатой

бошка размером с холодильник нужна.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Andron_
Гуру
Предупреждений : 4
СообщениеДобавлено: Вс 9-09-07 : 00-13    Заголовок сообщения: Ответить с цитатой

в этом случае, кстате, и Ява будет не нужна.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
dlnsk
Гуру
СообщениеДобавлено: Вс 9-09-07 : 00-13    Заголовок сообщения: Ответить с цитатой

EvilHedgehog писал(а):
Поверь, лучше этого не знать

Да ладно уж... Very Happy

1. Читать книги по Теории компиляции
2. Разработать граматику языка (в инете есть примеры компиляторов)
3. Реализовать граматику на Java или любом другом языке
Ну а оптимизация - это вообще отдельная тема... Smile

ЗЫ: А почему именно на Жабе? Shocked Не самый лучший выбор, ибо компилятор должен быть быстрым... Podmignul
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
dlnsk
Гуру
СообщениеДобавлено: Вс 9-09-07 : 00-17    Заголовок сообщения: Ответить с цитатой

BS
Если сильно интересно, то рекомендую для начала попробовать сделать ИНТЕРПРЕТАТОР арифметических выражений. Затем сделать компилятор для них же.
Думаю уже на первом этапе ты поймешь что компилятор ЯЗЫКА тебе не нужен... Podmignul
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
EvilHedgehog
Гуру
СообщениеДобавлено: Вс 9-09-07 : 01-12    Заголовок сообщения: Ответить с цитатой

dlnsk
Да грамматику-то реализовать вопросов нет, хотя тоже геморрой, но надо ж еще анализатор писать, семантику как-то реализовывать, а потом генератор кода (человек экзешник на выходе хочет)... Т.е. интерпретатор-то еще ладно, что-нибудь бейсикоподобное за день/выходные наваять вполне можно, но вот чтобы на выходе экзешник получить...
Я книжку про дракончика пробовал читать. Кнут и то веселее Wink
Последний раз редактировалось: EvilHedgehog (Вс 9-09-07 : 01-17), всего редактировалось 1 раз
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Andron_
Гуру
Предупреждений : 4
СообщениеДобавлено: Вс 9-09-07 : 01-15    Заголовок сообщения: Ответить с цитатой

интерпретатор - штука не сложная... а вот генератор кода.... это уже ппц.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
dlnsk
Гуру
СообщениеДобавлено: Пн 10-09-07 : 00-02    Заголовок сообщения: Ответить с цитатой

BS, открой секрет, ну почему все-таки на Жабе? Smile
Не отпускае меня этот вопрос.... Smile
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
BS
Эксперт
СообщениеДобавлено: Ср 12-09-07 : 07-19    Заголовок сообщения: Ответить с цитатой

Потому что я уже написал интепритатор на жаве, который может исполнить вот такой код:
Код:

пер
дро а,б,ц,дискрименант, иксадин,иксдва,ю,жо,дляпроверки;
поехали
    напечатать("Введите коэффиценты квадратного многочлена")
    считать(а)
    считать(б)
    считать(ц)
    дискрименант=б*б-4*а*ц;
    может(дискрименант меньше 0)
    напечатать("Корней то нету %) Действительнцх нету... ;)")
    неможет
    поехали
        может (дискрименант равно 0)
        поехали
            б=б-2*б;
            иксадин=б/(2*а);
            напечатать("Адын корень :)")
            напечатать(иксадин)
        харэ
        неможет
        поехали           
            корняизвлечение(дискрименант)
            б=б-2*б;
            иксадин=(б-дискрименант)/(2*а);
            иксдва=(б+дискрименант)/(2*а);
            напечатать("А вот и два ненаглядных корня")
            напечатать(иксадин)
            напечатать(иксдва)
        харэ
    харэ
    напечатать("Введите два числа")
    может(0 равно 0)
    считать(жо)
    считать(ю)
    может(жо равно ю)
    поехали
        напечатать("А числа то равны, Вы это знали! :)")
    харэ
    неможет
    поехали
        напечатать("Два скучных, не равнооых дург другу чилса")
    харэ

    может(жо меньше ю)
        напечатать("Первое число меньше оказалось")
    может(жо больше ю)
        напечатать("второе чилос меньше первого")

    может(жо меньшеравно ю)
        напечатать("Первое чесло меньше либо равно второгму")
    может(жо большеравно ю)
        напечатать("Первое число больше либо равно второгму")

    приступим отсюда ц=0; досюда ц=4;
    поехали
        дляпроверки=3;
        покацикл(дляпроверки большеравно 0)
        поехали
            может(дляпроверки равно ц)
            поехали
                напечатать(дляпроверки)
                напечатать(ц)
            харэ
            неможет
            напечатать("что это?")
            дляпроверки=дляпроверки-1;
        харэ
    харэ
харэ


И как хочется изобрести к этому делу экзэшникомейкер. Препод, который преподавал интерпритаторы, сказал, что это не сложно. Интерпт. написать было не сложно, и копилятор из него может тоже не сложно будет сделать)
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
dlnsk
Гуру
СообщениеДобавлено: Ср 12-09-07 : 09-58    Заголовок сообщения: Ответить с цитатой

может-неможет...
Шикарно! lol
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
BS
Эксперт
СообщениеДобавлено: Ср 12-09-07 : 14-13    Заголовок сообщения: Ответить с цитатой

Главное, что работает. Ладно, буду думать дальше. Если кто то, что то знает, прошу написать сюда. Может кто ссылку на дельную статью имеет. Я не нашёл инчего нормального. Может плохо искал...
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
EvilHedgehog
Гуру
СообщениеДобавлено: Ср 12-09-07 : 14-32    Заголовок сообщения: Ответить с цитатой

BS
Если именно компилятор нужен, то "просто" ничего не выйдет -- сущность в чем, нужно оттранслировать из исходника в машинный код. Т.е. пусть будет какая-то цепочка преобразований, но в конце все равно нужно будет написать нечто, работающее в машинных кодах. Если нужен не компилятор, а просто "экзешникомейкер", можно или каким-то образом поставлять интерпретатор сразу с зашитым исходником, или писать транслятор исходника на какой-то другой язык (си, паскаль, ассемблер), и уже оттранслированный текст отправлять в "чужой" компилятор (они все с командной строкой дружат, так что тут проблем возникнуть не должно). В общем, если первое еще как-то можно использовать, то во втором смысла особого не вижу. Может, еще какие-то возможности упустил, поправьте, кто разбирается.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Andron_
Гуру
Предупреждений : 4
СообщениеДобавлено: Ср 12-09-07 : 14-40    Заголовок сообщения: Ответить с цитатой

ааааа йа патсатлом от листинга lol
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Amaterasu
Uchiha Avenger
Предупреждений : 2
СообщениеДобавлено: Ср 12-09-07 : 14-44    Заголовок сообщения: Ответить с цитатой

BS
назови его падонкавский кампилятар lol lol lol
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail   Номер ICQ
EvilHedgehog
Гуру
СообщениеДобавлено: Ср 12-09-07 : 14-52    Заголовок сообщения: Ответить с цитатой

Amaterasu
Не, падонкавский компилятор -- это VC++ 8.0 и выше.
(Внимание, БАЯН)
Код:

#include
#define НАЧЕЛ {
#define КОНЧЕЛ }
#define ПРЕВЕД std::cout
#define МЕДВЕД <<
#define УГУ(X) return X;
#define БЛЯ (
#define НАХ )
#define ДЛЯ for
#define ЁПТЬ 0
#define СТРОЧКО(X) #X
#define АБЫРВАЛГ ++
#define РЕГИСТОР_НАХ int
#define РОВНО =
#define ТОЧКО_И_ЗОПЕТОЁ ;
#define СТРЕМНЕЕ <
#define ПОЙНТЕР_НА_ДВА_БАЙТО char*
#define ДВА_БАЙТО char
#define СЦЫЛКО &
#define СЛЕДУЩЯЯ_СТРОЧКО '\n'
#define НОВЬЁ new
#define КОПИРОВАТЬ_СТРОКУ strcpy

РЕГИСТОР_НАХ МЕДВЕД_ФУНКЦИЁ БЛЯ ПОЙНТЕР_НА_ДВА_БАЙТО СЦЫЛКО БЛОНДИНКО НАХ
НАЧЕЛ
ДЛЯ БЛЯ РЕГИСТОР_НАХ x РОВНО 0 ТОЧКО_И_ЗОПЕТОЁ x СТРЕМНЕЕ 10 ТОЧКО_И_ЗОПЕТОЁ АБЫРВАЛГ x НАХ
ПРЕВЕД МЕДВЕД x МЕДВЕД СТРОЧКО(_) ТОЧКО_И_ЗОПЕТОЁ
ПРЕВЕД МЕДВЕД СЛЕДУЩЯЯ_СТРОЧКО МЕДВЕД БЛОНДИНКО ТОЧКО_И_ЗОПЕТОЁ
УГУ( ЁПТЬ )
КОНЧЕЛ
РЕГИСТОР_НАХ main БЛЯ РЕГИСТОР_НАХ argc, ПОЙНТЕР_НА_ДВА_БАЙТО argv[] НАХ
НАЧЕЛ
ПОЙНТЕР_НА_ДВА_БАЙТО БЛОНДИНКО РОВНО НОВЬЁ ДВА_БАЙТО [1024];
КОПИРОВАТЬ_СТРОКУ БЛЯ БЛОНДИНКО, СТРОЧКО(BLONDINKO) НАХ ТОЧКО_И_ЗОПЕТОЁ
МЕДВЕД_ФУНКЦИЁ БЛЯ БЛОНДИНКО НАХ ТОЧКО_И_ЗОПЕТОЁ
КОНЧЕЛ

результат работы:
0_1_2_3_4_5_6_7_8_9_
BLONDINKO
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Amaterasu
Uchiha Avenger
Предупреждений : 2
СообщениеДобавлено: Ср 12-09-07 : 14-54    Заголовок сообщения: Ответить с цитатой

EvilHedgehog
Лол lol lol lol lol lol
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail   Номер ICQ
dlnsk
Гуру
СообщениеДобавлено: Ср 12-09-07 : 16-13    Заголовок сообщения: Ответить с цитатой

EvilHedgehog писал(а):
или писать транслятор исходника на какой-то другой язык (си, паскаль, ассемблер)

Хорошая идея...
Только транслировать нужно в IL! Тогда автоматически под dotNet'ом будет работать! Да и библиотеки свои писать не нужно, можно стандартные юзать... Smile
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
BS
Эксперт
СообщениеДобавлено: Чт 13-09-07 : 11-16    Заголовок сообщения: Ответить с цитатой

EvilHedgehog писал(а):
Если нужен не компилятор, а просто "экзешникомейкер"

В яблочко.
BS писал(а):
написать программу на жава, которая делала бы экзэшник из текстовика с кодом.


Неужели это так сложно. Smile

EvilHedgehog
Я, ктати, думал сделать превед медвед. Но, что то руки не дошли тогда. Хотя щас не поздно ещё переделать... только зачем)
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы