Я читаю об 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))
Где я могу увидеть "реальное" представление реального языка программирования, чтобы узнать больше.