Java Lexer и парсер - PullRequest
       42

Java Lexer и парсер

0 голосов
/ 08 мая 2018

Я пишу новый редактор для Java с использованием Xtext. Я хочу, чтобы синтаксический анализатор проанализировал основной класс и заменил вызов метода фактическим кодом.

например,

Class Test {                                                           
           public static void main(String[] args ){ 
                 System.out.println("Virag");                            
                 method();                                                        
           }                                                           
           public static method(){             
                System.out.println("Purnam");                                    
           }                                                                
}

После разбора я хочу вернуть документ, как указано ниже.

Class Test {                                                           
           public static void main(String[] args ){ 
                 System.out.println("Virag");                            
                 System.out.println("Purnam");                                                        
           }                                                         

}

Я достиг этого в лексере и парсере, возвращая тело метода вместо метода. Но позже в редакторе текстовая область изменяется, и любое редактирование, выполняемое в редакторе, происходит неправильно. Неправильные позиции символов в документах. Как решить эту проблему?

1 Ответ

0 голосов
/ 09 мая 2018

Возможно, вы захотите использовать концепцию Xtext Code Generation , чтобы преобразовать исходный код вашего DSL в новый артефакт, в котором тело метода будет встроено.

...