(Frag f1, boolean nongreedy)
| 138 | |
| 139 | // Given a fragment for a, returns a fragment for a? or a?? (if nongreedy) |
| 140 | private Frag quest(Frag f1, boolean nongreedy) { |
| 141 | Frag f = newInst(Inst.ALT); |
| 142 | Inst i = prog.getInst(f.i); |
| 143 | if (nongreedy) { |
| 144 | i.arg = f1.i; |
| 145 | f.out = f.i << 1; |
| 146 | } else { |
| 147 | i.out = f1.i; |
| 148 | f.out = f.i << 1 | 1; |
| 149 | } |
| 150 | f.out = prog.append(f.out, f1.out); |
| 151 | return f; |
| 152 | } |
| 153 | |
| 154 | // Given a fragment a, returns a fragment for a* or a*? (if nongreedy) |
| 155 | private Frag star(Frag f1, boolean nongreedy) { |