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). |