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