как реализовать компилятор idl-to-java - PullRequest
2 голосов
/ 12 августа 2011

Мне нужно реализовать компилятор idl-to-java.На самом деле, это не idl-to-java.Язык определения интерфейса расширен.Поэтому мне нужно реализовать компилятор, который может генерировать исходный файл Java.Я ничего не знаю о корбе, и мне трудно начать.Как вы думаете, можно ли мне закончить эту работу через полгода?и если так, что я должен делать.PS: пожалуйста, прости мой английский.

Ответы [ 3 ]

2 голосов
/ 12 августа 2011

Истинный IDL-to-java не только извергает код Java, который отображает эти вещи обратно в определения IDL (строго придерживаясь стандартов OMG). Он также генерирует код Java, который позволяет вашим определениям работать с базовым стеком CORBA (в отличие от настоящего компилятора, генерирующего инструкции для целевой аппаратной архитектуры).

То есть компилятор IDL

1) берет ваши определения IDL и преобразует их в CORBA-стек, независимые от языка определения (в вашем случае, в Java).

2) Кроме того, он генерирует также код, специфичный для CORBA-стека / поставщика.

Если все, что вам нужно, это что-то, что делает # 1, то это не компилятор IDL-to-Java (не в истинном смысле этого слова). Но мы можем назвать это ради простоты.

Итак, у вас есть два возможных маршрута:

1) Посмотрите на исходный код компиляторов IDL из существующих стеков CORBA, основанных на Java (OpenOrb или JacOrb), или

2) Посмотрите на спецификации OMG, в которых рассказывается, как сопоставить IDL с выбранным вами языком: http://www.omg.org/technology/documents/idl2x_spec_catalog.htm

Это все, если вы знаете о теории и реализации компилятора. Иначе, если это эксперимент по обучению, отлично! Но если это часть работы с крайним сроком, это может быть нереальной задачей.

В любом случае, удачи.

2 голосов
/ 07 сентября 2011

Вы можете использовать idl4emf:

http://code.google.com/p/idl4emf/

Этот проект состоит из реализации грамматики IDL в Xtext и реализации метамодели IDL в Ecore.

Этот проект также включает проект генератора кода из файлов IDL.Вы можете реализовать свой собственный генератор из файлов IDL, просто написав шаблоны Xpand в Eclipse EMF.

Я успешно использовал этот проект как часть нескольких проектов генератора.

1 голос
/ 12 августа 2011

Если вы ничего не знаете о парсерах и генераторах парсеров, это будет тяжелая работа, но я думаю, что полугода должно хватить, если вы не начнете с нуля.

Я полагаю, что вы используете Antlr , среди которых есть реализация синтаксического анализатора IDL . Вероятно, это для более старой версии Antlr, но это определенно хорошая отправная точка. Обязательно возьмите книгу Antlr , она вам понадобится!

Для создания кода вы можете использовать StringTemplate , движок шаблонов, написанный автором Antlr, Теренсом Парром, именно для этой цели.

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

...