Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Измеритель Java кода


Автор: Guia 3.5.2006, 10:49
Здравствуйте.

Есть интересный проект, суть измеритель Java кода.
Измерять можно что угодно - количество строк в .java файле, процентное соотношение комментариев к коду, 
количество классов, методов, и т.д.


Код Java считывается из файла и передаётся модулям "измерителям" (.dll)  через String[].

Код

private String[] Source = {
    "public class JP{",
        "private double i,k;",
        "private String[] str = /"//no comments;/"",
        "/* Multiline  ",
        "* comment",
        "*/";

"public JP(){ //constructor",
   
   "}",
"}"
};



Что посоветуете? Ведь проблема не только в том чтобы выфильтровывать комментарии, но и вообще в том чтобы научить программу 
правильно читать код (в будущем может быть не только Java) 

Есть идея считывать код используя
а) компайлер - генератор http://www.ssw.uni-linz.ac.at/Coco/
б) регулярные выражения
в) писать парсер самим
 



Автор: Exception 3.5.2006, 11:06
Можно компилить через J# и юзать рефлексию. 

Автор: Void 3.5.2006, 18:05
Цитата(Guia @  3.5.2006,  12:49 Найти цитируемый пост)
а) компайлер - генератор Coco/R

Или http://www.antlr.org/. Для него есть готовая грамматика Java 5.
Цитата(Guia @  3.5.2006,  12:49 Найти цитируемый пост)
б) регулярные выражения

Невозможно.
Цитата(Guia @  3.5.2006,  12:49 Найти цитируемый пост)
в) писать парсер самим

Бессмысленно. 

Автор: Guia 3.5.2006, 19:19
Цитата

Компилить с помощью J#

Неплохая идея, но вряд ли подойдёт в этом случае. А что если дадут для анализа компакт с ява - кодом?

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

Парсер хотелось написать (ну хотя бы начать smile), просто для общего развития, а то опытас ними никакого нет, а тут сразу генератор наваливается... за недостатком времени пришлось идею с парсером (согласен, в этом случае неприменимую) оставить. 
Хотя! Сосо ведь генерирует парсер только один раз? 

Как бы то ни было, с COCO\R  сегодня я разбирался первый день, и видно, придётся переписывать Java.ATG под C#, в остальном должно работать.

А Еще посмотрел на исходный код Sharp Develop и чуть со стула не свалился от возможностей NRefactory  - вот это да!

Вообщем, попробуем разобраться с Сосо  и ANTL, спасибо за совет.

 

Автор: Void 3.5.2006, 19:44
Цитата(Guia @  3.5.2006,  21:19 Найти цитируемый пост)
Хотя! Сосо ведь генерирует парсер только один раз? 

Не совсем понял вопрос…
Цитата(Guia @  3.5.2006,  21:19 Найти цитируемый пост)
Парсер хотелось написать (ну хотя бы начать smile), просто для общего развития, а то опытас ними никакого нет

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

Автор: Guia 11.5.2006, 21:15
Вот еще небольшой вопрос...  ANTLR из файл грамматики java15.g генерирует .java файлы.
А Как сделать .cs? (По вопросу видно что Coco\R мы забросили smile), c ANTLR уже всё работает  ура! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)