powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Препроцессинг java кода
19 сообщений из 19, страница 1 из 1
Препроцессинг java кода
    #34791429
steevy18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет,

Помогите выбрать направление в задаче по препроцессингу 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
Препроцессинг java кода
    #34791488
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Java 6 есть API компилятора. В том числе позволяет на лету подменять методы. Я видел какой-то модуль для работы с этим функционалом в NetBeans на Sun Tech Days в Питере весной, но название и входит ли стандартом - не помню.

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

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

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

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

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

A.AA = B.BB();

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

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

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

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

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

A.AA = B.BB();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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