peut-on cacher des attributs dans un type union ?
Bonjour,
Je vais (enfin) passer aux choses sérieuses... la forme SSA :)
dans mon interprète très simpliste, j'ai décidé d'utiliser ce type pour mon ast
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
/// represents the Abstract Syntax Tree
type struct_expr =
|Intconst of int
|Boolconst of bool
|Test of string * struct_expr list
|Operateur of string * struct_expr list
|Var of string
|Assign of struct_expr * struct_expr
|If of struct_expr * struct_expr list * struct_expr list
|While of struct_expr * struct_expr list
|Break
|Declare of string list
|Assert of struct_expr
with
member this.immediate_dominator : struct_expr option = None
member this.domination_frontier : struct_expr list = [] |
ça me permet de jouer avec un match sur les éléments, mais j'aimerais aussi pouvoir avoir quelques petites infos cachées dont je vais avoir besoin pour le calcul de ma forme SSA à savoir :
- le dominateur immediat
- la frontière de domination
le hic est qu'actuellement je ne peux modifier ces propriétés...
comment feriez-vous sans trop changer la structure de l'ast ?
nb : je n'ai volontairement pas séparé les instructions des expressions
nb2 : je n'ai pas encore mis les phi et les attributs pour le renommage