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
ç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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 = []
- 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
Partager