Commit 26ed8fd46e249032d8f5ae2ac522dcc227f5d3fe

Authored by Salvador Abreu
1 parent 034c6d49
Exists in master

arrays

Showing 1 changed file with 6 additions and 3 deletions   Show diff stats
fz/semantic.pl
... ... @@ -35,6 +35,7 @@ sa_n_traverse(N, NN, ST) :- sa_n(N, NN, ST). % non-list case
35 35 %
36 36 % handle all AST cases:
37 37 % var(N,T,I,A) - Name, Type, Initializer, Attrib -- variable declaration
  38 +% val(N,T,I,A) - Name, Type, Initializer, Attrib -- (constant) value
38 39 % lit(V,T) - Value, Type -- literal with type
39 40 % id(N) - Name -- identifier
40 41 % constraint(C,A) - Constraint, Attrib -- constraint
... ... @@ -47,10 +48,11 @@ sa_n(var(N,T,[],A), V, ST) :- !,
47 48 V=var(N,T,[],AX), % new AST node becomes ST entry value
48 49 st_insert(ST, N, V).
49 50  
50   -sa_n(var(N,_T,I,_A), NI, ST) :- % non-empty initializer
  51 +sa_n(var(N,T,I,A), V, ST) :- % non-empty initializer
51 52 sa_n_traverse(I, NI, ST), % parse initializer (& ignore T and A),
52   - V=NI, % -- just NI, not var(N,T,NI,AX) --
53   - st_insert(ST, N, V). % which becomes the ST entry value
  53 + sa_attribs(A, AX, ST),
  54 + V=val(N,T,I,AX), % -- not var(N,T,NI,AX) --
  55 + st_insert(ST, N, V). % and it becomes the ST entry value
54 56  
55 57  
56 58 sa_n(lit(E,array(T)), lit(NE, array(T)), ST) :-
... ... @@ -98,6 +100,7 @@ sa_t_traverse(N, ST) :- sa_t(N, ST). % non-list case
98 100 % -- sa_t(NODE, ST) -----------------------------------------------------------
99 101  
100 102 sa_t(var(_N,T,I,_A), _ST) :- type(I,T).
  103 +sa_t(val(_N,T,I,_A), _ST) :- type(I,T).
101 104 sa_t(lit(E,T), _ST) :- type(lit(E,T), T).
102 105 sa_t(constraint(CE, _AT), ST) :-
103 106 CE=..[_|AS],
... ...