Я не настоящий сварщик, Груви не занимаюсь, но вот некоторые идеи:
1. Поискать в Интернете, нет ли уже чего-нибудь готового, что можно применить. 2. Самый лучший парсер кода - это компилятор Джавы. Ничего не парсить самому, а напускать компилятор и парсить список ошибок на "undefined identifier" или как он там ругается.
Сколько времени просить - 3 дня (целых, с 9 до 5) на исследование и проверку существующих опций, 2-3 недели (целых) на написание первой версии своей приблуды (но это уже зависит от скорости, с которой Вы пишите). Первую версию запускаем в бету, смотрим, все ли она ловит. Еще месяц-другой (календарных) займет довести ее до приемлемого качества, чтобы она не слишком часто падала на реальном коде. Чистого времени на починку тут будет ну, может, неделя, остальное - ожидание багов и ответов пользователей :)
Жумал про компилятор. Но, во-первых, все нужные импорты должны быть добавлены с первой итерации, во-вторых, я вот чего не понимаю: выругается groovy интерпретатор на класс, ногде его искать-то? Какой импорт добавлять? Спасибо за совет.
С очевидностью нужны таблицы имен. И так же очевидно, что дополняемый исходник не висит в воздухе, а является частью проекта. Из проектных библиотек надо вытянуть все пространства имен и наборы классов внутри.
Если же в задаче нет проектных библиотек, то их всё равно надо добавлять. Ну потому что откуда еще можно взять имена? И, кстати, существует ли гарантия, что исходник синтаксически корректен - в том смысле, что имена классов верны (без очепяток)?
Классы проекта я добавлю, не вопрос, тем более, их ограниченное количество и они разложены по пакетам, то есть, можно просто написать import my.cool.packet.*. Беда в том, что там может быть любой грувишный или джавский стандартный класс. Вот как это победить? Забить все стандарьные пакеты джавы? Их там дофигищи!
Comments 8
1. Поискать в Интернете, нет ли уже чего-нибудь готового, что можно применить.
2. Самый лучший парсер кода - это компилятор Джавы. Ничего не парсить самому, а напускать компилятор и парсить список ошибок на "undefined identifier" или как он там ругается.
Сколько времени просить - 3 дня (целых, с 9 до 5) на исследование и проверку существующих опций, 2-3 недели (целых) на написание первой версии своей приблуды (но это уже зависит от скорости, с которой Вы пишите). Первую версию запускаем в бету, смотрим, все ли она ловит. Еще месяц-другой (календарных) займет довести ее до приемлемого качества, чтобы она не слишком часто падала на реальном коде. Чистого времени на починку тут будет ну, может, неделя, остальное - ожидание багов и ответов пользователей :)
Reply
Спасибо за совет.
Reply
Если же в задаче нет проектных библиотек, то их всё равно надо добавлять. Ну потому что откуда еще можно взять имена? И, кстати, существует ли гарантия, что исходник синтаксически корректен - в том смысле, что имена классов верны (без очепяток)?
Reply
Беда в том, что там может быть любой грувишный или джавский стандартный класс. Вот как это победить? Забить все стандарьные пакеты джавы? Их там дофигищи!
Reply
Leave a comment