Knuth's original attribute grammar paper (title: Semantics of Context-Free Languages) introduced three types of circularity. More specifically section "Testing for circularity" page 134-5 figures 3.1-3. I am wondering if it's possible someone would explain in simple terms the three types of circularities. I am very confused.
I think there should be either direct or indirect dependencies.
By direct, I mean
A.attr := B.attr
B.attr := A.attr
By indirect, I mean
A.attr := B.attr
B.attr := C.attr
... maybe more steps ...
C.attr := A.attr