칸 격자
grid는 비트 필드, 배열, 스택, 행렬을 칸 단위로 그립니다. 그래프 보기 안에서 카드 하나로 놓이고, 선은 칸 하나에서 나가고 들어옵니다.
최소 예제
칸은 item으로 적고, 위치는 0부터 세는 row, col, 크기는 rows, cols입니다. 칸 이름은 격자 밖에서 격자.칸으로 부릅니다.
문법
줄 종류와 선택 사항은 그림 문법의 문법 표가 정본이고, 칸 격자의 줄과 크기와 배치는 칸 격자에 있습니다.
장면과 움직임
light 격자.칸은 칸 하나를 밝히고 light 격자는 틀을 밝힙니다. 칸에서 칸으로, 칸에서 카드로 점이 가는 이동은 격자.칸 -> 카드처럼 적습니다. 생략한 칸은 gap 이름 "글" count=N으로 적고, 선이나 이동의 끝이나 밝힘 대상이 될 수 없습니다. 주소 변환은 memory 예제, 호출 스택은 stack 예제, 노드와 포인터는 pointer 예제가 보입니다.
격자 칸의 글과 구조 연결은 장면 중 교체하지 않는다. 포인터 예제의 A에 적힌 두 next 칸은 같은 필드의 삽입 전후를 비교한 것이며, 실제 노드에 next 필드가 둘 있다는 뜻이 아니다. 이전 연결은 전: next 0x28에서 B로, 이후 연결은 후: next 0x58에서 새 노드로 이어진다. 삽입 장면은 새 노드의 next를 B에 연결한 뒤 A의 next를 새 노드에 연결하는 순서를 보여 준다. quiet 선은 처음 통과한 뒤 드러나며 기존 선을 지우지 않으므로, 전후 주소와 선을 함께 표시할 때는 각 시점을 구분한다.
흔한 오류
| 원인 | 메시지 | code | 고치는 방법 |
|---|---|---|---|
| 격자 폭을 넘는 칸 | item "b" ends at column 6 but grid "g" has cols=2. Raise cols= on the grid or move the item |
syntax |
cols를 늘리거나 칸을 옮깁니다 |
| 겹치는 칸 | item "b" overlaps item "a" (line 3). Move one of them or change row, col, rows, cols |
syntax |
위치나 크기를 바꿉니다 |
| 선언하지 않은 칸을 선 끝으로 씀 | 가까운 이름을 제안하는 syntax 메시지 |
syntax |
격자.칸 이름을 고칩니다 |
code는 thinkflow check figure.thinkflow --json으로 봅니다.