не садился за проект с момента выкладывания последних исходников.
пока есть доступ к сети смотрю инфу и программы.
________
сейчас два варианта создания компилятора:
1. либо взять Pascal-s и в подпрограмме вывода листинга преобразовать текст к формату java-text-asm, а в код pascal-s добавить вывод ошибки при генерации вложенных подпрограмм и передаче в параметрах ссылки на переменную, т.е. "procedure p(VAR i : integer; j : integer);". т.к. java-спецификация не поддерживает таких конструкций в силу того что переменные метода локализованы.
2. либо написать с нуля упростив конструкцию (принципиально убрать из алгоритма возможность генерации всего лишнего), недавно принялся писать с чистого листа, поглядывая в pascal-s, сделал единую таблицу для всего (имен,идентефикаторов,типов и т.д.) скорость компиляции немного упадет, но появится однообразие структуры.... написал около 600 строк, вижу что не получается настолько эффективно как в pascal-s... подумываю чтобы вернуться к первому вариатну.
________
но важнее разобраться вот в чем:
как поступить с типом "record": как в mp - делать класс с набором переменных или разбить отдельные элементы и пусть хранится как отдельные переменные. тогда появляется вопрос: как организовать передачу записи в параметре функции, копировать поэлементно в стек потом извлекать?
также заминка на типе String для простоты можно будет сделать как в mp - отдельный метод с набором функций
если использовать float и double - необходимо перепроектировать блок арифметических операций для разделения целочисленных команд и с плавающей точкой.
________
немного об ассемблере: до сих пор не добавил верификатор, т.е. автоматическую генерацию структуры StackMap (исходники то есть, но не знаю где почитать полную информацию по этому процессу) - это очень нужно завершить.
из попадавшихся исходников java-ассемблеров более простых, чем сделал, не находил
________
про все остальное: в самых первых сообщениях говорил что надо сделать компилятор в class-файлы, упаковщики, ide - это уже другой разговор
Serg153 - если заменить код программы "begin ... end" на "{ ... }" и т.д. то получится java-исходник. для этого можно просто собрать программку на строк 200 (здесь подобное уже выкладывал), которая будет менять ТОКЕНЫ, и это компилировать в чистой java, но думаю интереса к такого рода переходникам ни у кого не возникнет.
______
общая дока по компиляторам, (без конкретных исходников)
http://ag-kastens.upb.de/wir/taiko/diss/CLDCSpec.pdf
http://www.europrog.ru/paper/obe_java2.pdf
http://delphi.od.ua/article/a-33.html