Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Измеритель Java кода, Парсер, Regex, Компилятор? 
V
    Опции темы
Guia
Дата 3.5.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.3.2005
Где: Germany, Bingen

Репутация: нет
Всего: нет



Здравствуйте.

Есть интересный проект, суть измеритель 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) 

Есть идея считывать код используя
а) компайлер - генератор Coco/R
б) регулярные выражения
в) писать парсер самим
 



PM MAIL   Вверх
Exception
Дата 3.5.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Можно компилить через J# и юзать рефлексию. 
PM   Вверх
Void
Дата 3.5.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



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

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

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

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


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Guia
Дата 3.5.2006, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.3.2005
Где: Germany, Bingen

Репутация: нет
Всего: нет



Цитата

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

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

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

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

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

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

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

 
PM MAIL   Вверх
Void
Дата 3.5.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



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

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

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


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Guia
Дата 11.5.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.3.2005
Где: Germany, Bingen

Репутация: нет
Всего: нет



Вот еще небольшой вопрос...  ANTLR из файл грамматики java15.g генерирует .java файлы.
А Как сделать .cs? (По вопросу видно что Coco\R мы забросили smile), c ANTLR уже всё работает  ура! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.