Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Препроцессинг java кода / 19 сообщений из 19, страница 1 из 1
11.09.2007, 14:47:58
    #34791429
steevy18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
Привет,

Помогите выбрать направление в задаче по препроцессингу java кода.

На примере ее кратко можно сформулировать так:

Имеется некая сущность A с полем AA.

Программист может написать так:
Код: plaintext
1.
2.
3.
4.
     public   void  testMethod () {
        A.AA = "ddd";
        String a = A.AA;
    }

Но при кодогенерации нужно получить так:
Код: plaintext
1.
2.
3.
4.
     public   void  testMethod () {
        A.setAA("ddd");
        String a = A.getAA();
    }

В жизне понятно все будет сложнее. Но задача так или иначе сводится к трансляции одних java конструкций в другие.

Хочется выбрать правильный инструмент для решения. В какую сторону стоит посмотреть ?

Спасибо!
...
Рейтинг: 0 / 0
11.09.2007, 15:02:30
    #34791488
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
В Java 6 есть API компилятора. В том числе позволяет на лету подменять методы. Я видел какой-то модуль для работы с этим функционалом в NetBeans на Sun Tech Days в Питере весной, но название и входит ли стандартом - не помню.

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
Aiya Eärendil Elenion Ancalima!
...
Рейтинг: 0 / 0
11.09.2007, 15:11:05
    #34791528
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
steevy18
В жизне понятно все будет сложнее.
Ну так давай жизненый пример.
И зачем это нужно, почему не может быть решено организационно/code review.
...
Рейтинг: 0 / 0
11.09.2007, 15:13:49
    #34791537
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
steevy18
Хочется выбрать правильный инструмент для решения. В какую сторону стоит посмотреть ?

Не совсем понял. Либо в сторону Groovy, либо в сторону antlr.
...
Рейтинг: 0 / 0
11.09.2007, 15:15:59
    #34791551
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
это не aspectJ
...
Рейтинг: 0 / 0
11.09.2007, 15:22:51
    #34791585
steevy18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
Timm, к сожалению, жизненного примера пока нет.

Нужно это для того, для сокрытия специфики EJB от "зеленого" прикладного программиста.

Т.е. ему будет известно, что есть некая DTO A у нее есть поле AA, типа String.
Есть Сервис B с методом BB, возвращаемым типом String.

Значит в коде он может написать:

A.AA = B.BB();

Дальше, в процессе генерации кода, все это должно развернуться в EJBшные лукапы, креейты, вызовы методов и т.д.

Ну это если очень грубо. Более детально пока сам описать не могу.
...
Рейтинг: 0 / 0
11.09.2007, 15:24:00
    #34791593
steevy18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
Щас смотрю в сторону JavaCC + JJTree.
...
Рейтинг: 0 / 0
11.09.2007, 15:51:14
    #34791699
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
steevy18Timm, к сожалению, жизненного примера пока нет.

Нужно это для того, для сокрытия специфики EJB от "зеленого" прикладного программиста.

Т.е. ему будет известно, что есть некая DTO A у нее есть поле AA, типа String.
Есть Сервис B с методом BB, возвращаемым типом String.

Значит в коде он может написать:

A.AA = B.BB();

Дальше, в процессе генерации кода, все это должно развернуться в EJBшные лукапы, креейты, вызовы методов и т.д.

Ну это если очень грубо. Более детально пока сам описать не могу.

Бред какой-то. Из-за "зеленого" программиста городить такой огород. Не проще ли ему научиться EJB, ну или накрайняк оберните в фасад.
...
Рейтинг: 0 / 0
11.09.2007, 15:54:22
    #34791715
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
Если все так завязано на зеленых человечков, может им дать что-то скриптовое? А потом этот скрипт выполнять из EJB?
...
Рейтинг: 0 / 0
11.09.2007, 16:03:57
    #34791768
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
steevy18
Нужно это для того, для сокрытия специфики EJB от "зеленого" прикладного программиста.

Эмм...
Лучший вариант, имхо, решить организационные проблемы: провести тренинги/написать best practices/howto (короче - ликбез).
Иначе стрельнет так что мама не горюй. Это если действительно нужно программисту.

Если не программисту: постараться избавиться от кода. поглядеть в сторону jBPM или подобных продуктов. Ну и сформировать требования, в конце то концов ))
...
Рейтинг: 0 / 0
11.09.2007, 16:06:33
    #34791777
steevy18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
fixxer, согласен - бред.

Blazkowicz, ну тогда нужно обоснование. А я его пока дать не могу.

И все-таки пусть будет так, что нужно одни конструкции по определенным правилам переводить в другие.

Хочется понять, какими силами можно решить задачу.
...
Рейтинг: 0 / 0
11.09.2007, 16:35:34
    #34791937
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
пользуйте bsf. там
Код: plaintext
1.
bean.field = val;
отрабатывает на ура на движке Rhino
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.09.2007, 17:03:50
    #34792038
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
steevy18fixxer, согласен - бред.
Blazkowicz, ну тогда нужно обоснование. А я его пока дать не могу.
И все-таки пусть будет так, что нужно одни конструкции по определенным правилам переводить в другие.
Хочется понять, какими силами можно решить задачу.
Либо пример совсем не наглядный. Либо способ решения проблемы все равно выбран не правильно.
Какая задача решается? Защита от зеленого разработчика или предоставление возможности кодить людям не продвинутым в программировании?
С исходным примером не понятно как, например, IDE даст возможность написать код не согласованый с контрактом класса?
...
Рейтинг: 0 / 0
11.09.2007, 17:53:16
    #34792258
steevy18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
Задача - из одного куска кода получить по некоторым правилам другой кусок кода :)

Например, если в коде встретили "сущность.поле = <expression>;", то нужно написать - сущность.setПоле(<expression>);

Конструкции из которых нужно переводить и в какие могут изменятся.

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

Сейчас нашел три реализации построения синтаксического дерева. В чем плюсы/минусы каждого сходу понять не могу. Пытаюсь понять.

Ситуация такая: мега спецы предположи, что это сделать можно и нужно сделать именно так. Сказали об этом другим мега дядькам. Если окажется, что этого сделать нельзя, то должно быть обоснование и на основании его будет приниматься решение о другой реализации. Но это все будет непросто и потребует много много бумажек.
...
Рейтинг: 0 / 0
11.09.2007, 18:06:05
    #34792313
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
steevy18Задача - из одного куска кода получить по некоторым правилам другой кусок кода :)

Например, если в коде встретили "сущность.поле = <expression>;", то нужно написать - сущность.setПоле(<expression>);

Конструкции из которых нужно переводить и в какие могут изменятся.

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

Сейчас нашел три реализации построения синтаксического дерева. В чем плюсы/минусы каждого сходу понять не могу. Пытаюсь понять.

Ситуация такая: мега спецы предположи, что это сделать можно и нужно сделать именно так. Сказали об этом другим мега дядькам. Если окажется, что этого сделать нельзя, то должно быть обоснование и на основании его будет приниматься решение о другой реализации. Но это все будет непросто и потребует много много бумажек.

А какую задачу изначально решаете? Сентенции про зеленых программистов прозвучали как-то невнятно. Я в упор не могу понять чем и в какой ситуации может помочь замена вида
сущность.поле = <expression>; --> сущность.setПоле(<expression>);
...
Рейтинг: 0 / 0
11.09.2007, 18:11:44
    #34792335
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
steevy18Ситуация такая: мега спецы предположи, что это сделать можно и нужно сделать именно так. Сказали об этом другим мега дядькам. Если окажется, что этого сделать нельзя, то должно быть обоснование и на основании его будет приниматься решение о другой реализации. Но это все будет непросто и потребует много много бумажек.
Одним словом никто точно не знает какая задача решается. Поэтому сами себе придумали проблему чтобы поломать голову.
...
Рейтинг: 0 / 0
12.09.2007, 06:34:21
    #34792978
steevy18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
fixxerА какую задачу изначально решаете?
Из одних конструкций языка получить другие :)

Для тех, кто занимается трансляторам - задача типовая.

Парни, вы мне ничего не должны. Давайте не будем ломать головы над вопросами, типа "зачем это?". А подумаем как это сделать. Если вы не знаете, пожалуйста, не переполняйте ветку. Я сейчас не ищу альтернативного решения. Как только начну его искать, прямо об этом спрошу.

Как из одного куска кода получить по некоторым правилам другой кусок кода.
Например, из "сущность.поле = <expression>;", получить - сущность.setПоле(<expression>);
...
Рейтинг: 0 / 0
12.09.2007, 07:52:32
    #34793024
^ozzy^
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
Если конструкции не особо сложные, а такие как в первом посте - можно попробывать банально regexp'ами воспользоваться. Тоже, чем не вариант.
...
Рейтинг: 0 / 0
12.09.2007, 09:01:08
    #34793102
steevy18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессинг java кода
^ozzy^Если конструкции не особо сложные, а такие как в первом посте - можно попробывать банально regexp'ами воспользоваться. Тоже, чем не вариант.

Да, такой вариант рассматривается, но конструкции теоретически могут быть сложные. И даже если их можно будет описать регекспами, то потом вряд ли в них кто-то сможет разобраться, даже автор :) Но реализация на регекспах в запасе, да, спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Препроцессинг java кода / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]