Commit 2c862ae20a6453b0d851e4abfa322ac0794839d0
1 parent
51e810c0
Exists in
master
variables with an initializer (constants) are now replaced by their value
Showing
1 changed file
with
8 additions
and
1 deletions
Show diff stats
fz/semantic.pl
@@ -39,9 +39,16 @@ sa_n_traverse(N, NN, ST) :- sa_n(N, NN, ST). % non-list case | @@ -39,9 +39,16 @@ sa_n_traverse(N, NN, ST) :- sa_n(N, NN, ST). % non-list case | ||
39 | % id(N) - Name -- identifier | 39 | % id(N) - Name -- identifier |
40 | % constraint(C,A) - Constraint, Attrib -- constraint | 40 | % constraint(C,A) - Constraint, Attrib -- constraint |
41 | % | 41 | % |
42 | +% variables with an initializer are treated as SSA & will now stand for | ||
43 | +% the literal in the initializer itself. | ||
42 | 44 | ||
43 | -sa_n(var(N,T,I,A), V, ST) :- | 45 | +sa_n(var(N,T,[],A), V, ST) :- !, |
44 | sa_attribs(A, AX, ST), | 46 | sa_attribs(A, AX, ST), |
47 | + V=var(N,T,[],AX), % new AST node becomes ST entry value | ||
48 | + st_insert(ST, N, V). | ||
49 | + | ||
50 | +sa_n(var(N,T,I,A), NI, ST) :- % non-empty initializer | ||
51 | + sa_attribs(A, AX, ST), % should ignore this? | ||
45 | sa_n_traverse(I, NI, ST), % parse initializer | 52 | sa_n_traverse(I, NI, ST), % parse initializer |
46 | V=var(N,T,NI,AX), % new AST node becomes ST entry value | 53 | V=var(N,T,NI,AX), % new AST node becomes ST entry value |
47 | st_insert(ST, N, V). | 54 | st_insert(ST, N, V). |