Как извлечь переменные класса и методы классов из файла Java с помощью Python?

#python #python-3.x #python-2.7 #data-structures #file-handling

Вопрос:

 private int OutsideFUnction(){
    int yoho;
}

public class Blog implements Subject {

private List<Observer> observers;
    private String article;
    private boolean changed;int Manaky; int Chahal; String letssee;

    public Blog() {
        this.observers = new ArrayList<>();
    }
    
    @Override
    public void register(Observer obj) {
        int insideRegister;
        if(obj == null) throw new NullPointerException("Null Observer");
        if(!observers.contains(obj)) observers.add(obj);
    }
    @Override
    public void unregister(Observer obj) {
        observers.remove(obj);
    }
    
    public String IAMNotAtStart;
    @Override
    public void notifyObservers() {
        List<Observer> observersLocal = null;
        System.out.println("HOOOOOO")
        if(!changed) return;
        
        observersLocal = new ArrayList<>(this.observers);
        this.changed = false;
        
        for(Observer obj: observersLocal){
            obj.update();
        }
    }
    @Override
    public Object getUpdate(Observer obj) {
        return this.article;
    }
    
    public void postBlog(String words){
         System.out.println("New Article Posted:" words);
         this.article = words;
         this.changed = true;
         notifyObservers();
    
    }
    
}


private nicheWalaFunction OutsideFUnction(){
    int lettestNicheWala;
}
 

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

Комментарии:

1. Хорошим местом для начала было бы найти синтаксический анализатор для Java, написанный на Python.

2. @chepner цель состоит в том, чтобы создать свой собственный для этого …. можете ли вы решить вышеуказанную проблему с помощью регулярных выражений или манипуляций со строками?

3. Нет, регулярные выражения будут далеко не подходящими. Вы захотите начать с правильной грамматики (которая, как я предполагаю, будет контекстно-свободной) и написать синтаксический анализатор. Существует множество инструментов-генераторов синтаксических анализаторов, которые возьмут подходяще отформатированную грамматику и предоставят вам рабочий синтаксический анализатор.

Ответ №1:

Используйте синтаксический анализатор Python для Java, я рекомендую javalang.