IBM SC34-5764-01 User Manual
Page 237
┌────────────────────────────────────────────────┐
│
┌─────────────┐
┌────────────────────────────────┐
│
│Start:
│yes │String start=match end.
│
│
│End of
├─── │Match start=length + 1.
│
│
│template?
│
│Match end=length + 1. Return.
│
│
└─────┬───────┘
└────────────────────────────────┘
│
no
│
┌─────────────┐
┌────────────────────────────────┐
│
│Token period │yes │
│
│
│or variable? ├─── │Step to next token.
├───┘
└─────┬───────┘
└────────────────────────────────┘
no
┌─────────────┐
┌─────────┐
┌──────────┐
┌───────────────────────────────────┐
│Token a plus?│yes │Variable │yes │Resolve
│
│String start=match start.
│
│
├─── │form?
├─── │its value.├── │Match start=min(length + 1,
│
└─────┬───────┘
└────┬────┘
└──────────┘
│ match start + value).
│
│ no
│ no
│
│Match end=match start. Return.
│
└─────────────────────┘
└───────────────────────────────────┘
┌─────────────┐
┌─────────┐
┌──────────┐
┌───────────────────────────────────┐
│Token a
│yes │Variable │yes │Resolve
│
│String start=match start.
│
│minus?
├─── │form?
├─── │its value.├── │Match start=max(1, match
│
└─────┬───────┘
└────┬────┘
└──────────┘
│ start ─ value).
│
│ no
│ no
│
│Match end=match start. Return.
│
└─────────────────────┘
└───────────────────────────────────┘
┌─────────────┐
┌─────────┐
┌──────────┐
┌───────────────────────────────────┐
│Token an
│yes │Variable │yes │Resolve
│
│String start=match end.
│
│equal?
├─── │form?
├─── │its value.├── │Match start=min(length+1, value).
│
└─────┬───────┘
└────┬────┘
└──────────┘
│Match end=match start. Return.
│
│ no
│ no
│
└───────────────────────────────────┘
└─────────────────────┘
┌─────────────┐
┌───────────────────────────────────┐
│Token a
│yes │String start=match end.
│
│number?
├─── │Match start=min(length+1, value).
│
└─────┬───────┘
│Match end=match start. Return.
│
no
└───────────────────────────────────┘
┌─────────────┐
│Token a lit─ │yes
│eral string? ├──────────────────────────┐
└─────┬───────┘
│
│ no
│
┌─────────────┐
┌──────────┐
┌───────────────┐
┌─────────────────────────────┐
│Token a var─ │yes │Resolve
│
│Match found in │yes │String start=match end.
│
│iable string?├─── │its value.├── │rest of string?├─── │Match start=match position.
│
└─────┬───────┘
└──────────┘
└──────┬────────┘
│Match end=match position +
│
│ no
│ no
│ pattern length.
Return.
│
│
└─────────────────────────────┘
│
┌────────────────────────────────┐
│
│String start=match end.
│
│
│Match start=length + 1.
│
│
│Match end=length + 1. Return.
│
└────────────────────────────────┘
┌─────────────┐
┌────────────────────────────────┐
│Token a
│yes
│Match start=length + 1.
│
│ comma?
├───────── │Match end=length + 1. Return.
│
└─────────────┘
└────────────────────────────────┘
Figure 51. Conceptual View of Finding Next Pattern
Parsing
Chapter 15. Parsing
215