Lines Matching defs:first

298  *   new = link_machines( first, last );
300 * new - a machine constructed by connecting first to last
301 * first - the machine whose successor is to be last
302 * last - the machine whose predecessor is to be first
304 * note: this routine concatenates the machine first with the machine
305 * last to produce a machine new which will pattern-match first first
310 int link_machines (int first, int last)
312 if (first == NIL)
316 return first;
319 mkxtion (finalst[first], last);
320 finalst[first] = finalst[last];
321 lastst[first] = MAX (lastst[first], lastst[last]);
322 firstst[first] = MIN (firstst[first], firstst[last]);
324 return first;
333 * The "beginning" states are the epsilon closure of the first state
367 * branch = mkbranch( first, second );
369 * branch - a machine which matches either first's pattern or second's
370 * first, second - machines whose patterns are to be or'ed (the | operator)
372 * Note that first and second are NEITHER destroyed by the operation. Also,
377 int mkbranch (int first, int second)
381 if (first == NO_TRANSITION)
385 return first;
389 mkxtion (eps, first);
450 * new = mkor( first, second );
452 * new - a machine which matches either first's pattern or second's
453 * first, second - machines whose patterns are to be or'ed (the | operator)
455 * note that first and second are both destroyed by the operation
460 int mkor (int first, int second)
464 if (first == NIL)
468 return first;
471 /* See comment in mkopt() about why we can't use the first
472 * state of "first" or "second" if they satisfy "FREE_EPSILON".
476 first = link_machines (eps, first);
478 mkxtion (first, second);
480 if (SUPER_FREE_EPSILON (finalst[first]) &&
481 accptnum[finalst[first]] == NIL) {
482 orend = finalst[first];
489 mkxtion (finalst[first], orend);
495 first = link_machines (first, eps);
496 orend = finalst[first];
502 finalst[first] = orend;
503 return first;
637 * first time.