Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 12.01.2009, 01:02   #121
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: создание MIDletPascal compiler'a

эээээ... а существует ли какой уже готовый компилятор(типа Джавового ассемблера) - небольшой по размеру - типа жасмина или какого в ехе варианте...
тогда можно будет написать промежуточный транслятор Паскаля в JavaАссемблер - и на этот асм вызывать Сторонний компилятор (из батников) - хотябы на первое время....
---
по IDE это чисто идеи.. пожелания.. то - что было бы удобно пользователю...
например чтоб неписать begin end; постоянно - в редакторе сделать подстановку на символ {+Ctrl+Space....
и чтоб люди идей сюда побольше отписали....
(например в 3-4 окно добавить 6ую анализ-панель - где былибы описаны Из текущего модуля
все Uses Var integer string image command Procedure Function ну и тд -
сразу визуально видишь что уже написано - тык мышкой и перешёл в редакторе на ту строчку.... удобно... :=)
добавить операции сдвига для Integer....
сделать макроподстановки #define с текстом процедур на паскале
добавить, вероятно - типа визуального редактора Форм и меню для распространённых типов экранов - чтоб он генерировал паскалькод...
(Offline)
 
Ответить с цитированием
Старый 12.01.2009, 01:24   #122
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: создание MIDletPascal compiler'a

компилятор будет, если все понемножку приложим усилия, мне вот надоело все тянуть за уши, для общего дела старался, на чистом энтузиазме, а все наверное ждали готового результата. Вот satan'у спасибо, помог с отладкой/тестированием дизассемблера, а как дошло до компилятора - что-то не заладилось...

Думаю лучше вместо нашлепок на существующий MP делать другую, схожую но расширенную систему, тем более что обновлений не предвидется, а посему: MP обречен на вымирание, с его то ограничениями и ошибками.

Все необходимые исходники уже имеются в этой теме... кто ещё будет участвовать в проекте?
____
вопрос про IDE на текущем этапе похож на деление неиспекшегося пирога, хотя могу сказать что где-то вроде были у меня исходники на delphi спец.редактора с подсветкой синтаксиса "notepad++"
(Offline)
 
Ответить с цитированием
Старый 12.01.2009, 02:06   #123
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: создание MIDletPascal compiler'a

глянь исходники - я может попробую часть Редактора на Дельфях написать....
---
надо описать Структуру МПного языка - операторы-функции (хотябы начало) - сделать Основу транслятора - хотябы чтоб выводил Листинг на Jave...
в общем я за проект.... что смогу то помогу :=)
(Offline)
 
Ответить с цитированием
Старый 12.01.2009, 02:22   #124
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: создание MIDletPascal compiler'a

В общем-то, поучавствовать в проекте не откажусь, могу писать различные вспомогательные утилиты, заниматься IDE, но в компиляторах я ничерта не смыслю. А так - готов помочь.
(Offline)
 
Ответить с цитированием
Старый 12.01.2009, 08:34   #125
satan
Нуждающийся
 
Регистрация: 10.02.2007
Сообщений: 99
Написано 18 полезных сообщений
(для 28 пользователей)
Re: создание MIDletPascal compiler'a

Господа...

К чему эмоции??? Гы....

Вообщем увлекся я и написал компилятор для винды... О_о...
Ну да ладно, меняем линкер и получаецо для явы...

В архиве расплантованый по категориям проект(расписал все что нужно)

Синтаксис Delphi+ BPascal
типы пока 3 integer, char, boolean остальные вытекают из базовых

поддерживаюца массивы (надо прикрутить открытые)
поддерживаюцо переходы, упр конструкции и методы (в case надо добавить обработку [xx]..[xx]:
Разбил на модули, что бы удобнее было работать группой, оно как ассемблер и т.д. мож хто и не знает, а структуры и форматы тож мож хто не знает...

ЛОГИКА КОМПИЛЯТОРА

--------------------------------------

1. Входной файл загружается в переменную CurChar и с помощью СКАНЕРА посимвольно считывается
2. Сканер (Scaner.pas) проводит синтаксический анализ и возвращает ID текущего символа или строки в переменную CurTok
3. Парсер (Parser.pas) начинает лексический анализ используя функцию сканера GetToken для возвращения типа текущего оператора или команды и на основании этого генерирует объектный код который записывает в стек (разделен на без параметров, 1 параметр, 2 и 3) вида [ID команды]___[ID параметра[,параметров]]
То есть по сути дела стек (Code[]) - это массив из значений комманд и параметров которые потом переведутся в асм код
3.1 Попутно парсер записывает в таблицу идентификаторов имена функций, процедур, констант и массивов, и т.д.
4. После работы парсера (если в коде не обнаружено ошибок) массив передается функции AssembleAndLink (CodeGen.pas) которая на основании стекового кода уже генерирует ассемблерный код
5. После работы Кодогенератора у нас получается массив объектного кода (без заголовков, секций и т.д.) по сути дела это и есть код ассемблерной секции, а в IdentTab - готовый код для КОНТЕНТНОГО ПУЛА
6. После этого код передается в линкеру(Linker.pas) функцией WriteOpCode (пока не прикрутил) и линкер должен сформировать пул и код

Вообщем осталось всего чуть чуть, проработать Linker.pas
Так же оставил место для ASM вставок вида
asm
.......
.......
end;
и обработку его в модуле Assembl.pas (пока просто тупо пропускает как коментарии)

В архиве пример для парсинга, попробуйте свои файлы (на выходе пока ничо не будет) просто в консоле должны появиться сообщения об ошибках если они есть
так же прикрутил счотчик (для генерации ява кода дебаггера)

Далее... IDE уже есть, исходники кому надо предоставим, компоненты к ней и контролы тоже, подсветка в ней уже есть, как и функции сворачивания кода, нумерация строк и т.д т.п. Кто хочет заняться милости просим...

По адресу http://www.kirov.fm/pascal.zip прикрепил компилятор Java (Jikes) с библиотеками, примерами и параметрами коммандной строки....

УФ...
Вложения
Тип файла: zip Pas2Class.zip (30.5 Кб, 356 просмотров)
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо satan за это полезное сообщение:
abcdef (12.01.2009), Piligrim (12.01.2009), scimitar (13.01.2009), ViNT (12.01.2009)
Старый 12.01.2009, 13:37   #126
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: создание MIDletPascal compiler'a

А возможность вставки java-кода будет?
(Offline)
 
Ответить с цитированием
Старый 12.01.2009, 17:11   #127
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: создание MIDletPascal compiler'a

>>Далее... IDE уже есть, исходники кому надо предоставим...

а на каком языке исходники? если для дельфей, то выложи для "доработки"?

>>>А возможность вставки java-кода будет?
мгмгм... тут надо порешить... наверное вставки либо в JavaAsm либо в JavaCode - но с какими нибудь ограничениями (неопределять переменные или функции..... хз....

ЗЫ - перечитал ветку.... в итоге должен получится JaPscal для мобильного телефона?
который будет делать типа:

JaPscal --> JavaCode --> JavaAsm --> Class; Class + resurs --> Jar приложение;

а также

Jar приложение --> Class + resurs; --> JavaAsm --> JaPscal; (или JamPascal)...

типо того??? всё в одно флаконе? :=)

Последний раз редактировалось Serg153, 12.01.2009 в 18:41.
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 00:12   #128
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: создание MIDletPascal compiler'a

satan, а что не хочешь использовать уже готовый ассемблер? генерация кода компилятора Pascal сводится только к выдачи в текстовом виде константного пула и оформлении попрограмм, тем более, появляется возможность вручную проредить код будующей программы (ну и те-же самые ассемблерные вставки, но только на другом уровне)... а в монолитной версии компилятора в генерированный код уже не вмешаешься...
___
p.s. Serg153 ошибся редактор написан на VC++ 7 если интересно здесь глянь http://cbuilder.ru/index.php?topic=1771.0
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 05:08   #129
satan
Нуждающийся
 
Регистрация: 10.02.2007
Сообщений: 99
Написано 18 полезных сообщений
(для 28 пользователей)
Re: создание MIDletPascal compiler'a

Эээээ... А шо за готовый ассемблер???

Вообще щас выкинуть надо из кодогенератора виндовый ассемблер и прикрутить байткод ява асм...

Выкладываю IDE + контролы... (папка res) там же и иконки

Последний раз редактировалось satan, 08.12.2009 в 00:02.
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 09:24   #130
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: создание MIDletPascal compiler'a

assembler- файл из моего предыдущего вложения jcc.pas, (JavaClassCompiler) все равно, если реализовывать монолитно, практически весь код нужно будет брать из jcc,
ведь в class-файле главное даже не байтовый код (как в традиционных ассемблерах, а то и вправду было бы проще непосредственно в class-файл писать),
а его связка с константным пулом, и всякие структуры, которые jcc кстати позволяет писать в любом месте, он потом сам расставит все по своим местам
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 12:31   #131
satan
Нуждающийся
 
Регистрация: 10.02.2007
Сообщений: 99
Написано 18 полезных сообщений
(для 28 пользователей)
Re: создание MIDletPascal compiler'a

Мля... ну дыг я к етому и иду... Посмори в линкере... Там уже все твои структуры прописаны...

Токма код ассемблерный немного не так как у тя строить надо, а проще, упорядочить по базовому коду и брать тока позицию инструкции вот и все дела, естественно шо кодогенератор переписывать ужо под твои структуры буду и ассемблер.
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 14:43   #132
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: создание MIDletPascal compiler'a

не спорю, подпрограмма кодогенерации действительно несколько раздута, но зато она однозначно знает какой тип операнда должен быть в текущий момент
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 14:52   #133
satan
Нуждающийся
 
Регистрация: 10.02.2007
Сообщений: 99
Написано 18 полезных сообщений
(для 28 пользователей)
Re: создание MIDletPascal compiler'a

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

writeLn(abs(chr(MyFunction(n,e, TwoFunction(e,n)+33))));
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 16:38   #134
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: создание MIDletPascal compiler'a

2satan - а где будут использованы такие выражения?
может Ограничить пользователя в построении сложных построений... ;=)
написав ошибку слишком сложное ....
либо ввести промежуточные (добавленные компилятором) перменые для хранения промежуточных результатов?
типа writeLn(abs(chr(MyFunction(n,e, TwoFunction(e,n)+33))));
_ex1 := TwoFunction(e,n) + 33;
_ex2 := MyFunction(n,e, _ex1);
_ex1 := chr(_ex2);
writeln(abs(_ex1));
типа так?
(Offline)
 
Ответить с цитированием
Старый 13.01.2009, 16:43   #135
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: создание MIDletPascal compiler'a

Зы - разбиение сложных выражений - на более простые, можно реализовать ещё врелакторе текста - типа на прогоне "препроцессора" -
который вставлял константы, делал подстановку макрокоманд..?
---
например: в тексте проги в отделе определения переменых будет макрокоманда типа
#define Cls; -пробел- setColor(255, 255, 255); fillRect(0, 0, getWidth, getHeight); #endef /выражение на языке паскаля/

при начале компиляции препроцессор заменит Cls на операторы и заодно разобьёт Сложные выражения на простые?

Последний раз редактировалось Serg153, 13.01.2009 в 16:50.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скачать MidletPascal smesh Прочие вопросы 14 30.06.2011 15:57
создание MIDletPascal obfuscator abcdef Основной форум 7 22.12.2008 23:27
Русификатор MIDletPascal Тренсфер Прочие вопросы 14 26.07.2008 04:00
MidletPascal. Что это. Данил MidletPascal 12 23.10.2007 05:27


Часовой пояс GMT +4, время: 11:27.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com