L
Size: a a a
s
IJ
PS
int arr[100];
int arr[100];
int *main(void) { return arr; }H
int arr[100];
int arr[100];
int *main(void) { return arr; }PS
IK
M
M
H
;H
T, у stmt unit type по логикеD
H
H
H
D
💎
TypeDecl { Child Expr, Parent Expr }
type int_alias = 77Int; // так как ошибка была найдена в узле Parent, мы устанавливаем Parent как BadExpr {from_position, to_position } и это в свою очередь являет '77int'
Далее мы рекурсивно анализируем дерево и при обнаружении в корневом узле к примеру ForDecl, узел BadExpr , выдаем красивую ошибку от начала ForDecl from_position до ForDecl.BadExpr to_position
Этот подход верный?AT
TypeDecl { Child Expr, Parent Expr }
type int_alias = 77Int; // так как ошибка была найдена в узле Parent, мы устанавливаем Parent как BadExpr {from_position, to_position } и это в свою очередь являет '77int'
Далее мы рекурсивно анализируем дерево и при обнаружении в корневом узле к примеру ForDecl, узел BadExpr , выдаем красивую ошибку от начала ForDecl from_position до ForDecl.BadExpr to_position
Этот подход верный?M
DP