Я читаю об AST (абстрактные синтаксические деревья), но все образцы, которые я вижу, используют выражения, такие как:
a + b * c 
который может быть представлен в виде lispy, например:
(+ a (* b c) )
Это будет эквивалентно:
  +
 / \
a   * 
   / \
  b   c
Мой вопрос: как выглядит AST для класса в OOPL?
Моя наивная попытка для этого Java-кода:
 class Person { 
     String name;
     int    age;
     public String toString() { 
        return "name";
     }
 }
Есть:
;Hand written
(classDeclaration Person 
     (varDeclaration String name)
     (varDeclaration int    age )
     (funcDeclaration String toString 
           (return "name")
     )
 )
Но я не совсем уверен, насколько близко или близко к реальному представлению AST.
Это зависит от языка, который я выбираю. Сколько нужно деталей? Являются ли эти "xyzDeclaraction" необходимыми или могут быть такими:
 (Person (String name) (int age))
Где я могу увидеть "реальное" представление реального языка программирования, чтобы узнать больше.