* pattern -- regardless of whether or not it makes sense. */
case '^':
EMIT(NFA_BOF);
- /* TODO: Not yet supported */
- return FAIL;
break;
case '$':
EMIT(NFA_EOF);
- /* TODO: Not yet supported */
- return FAIL;
break;
case '#':
case NFA_BOL: STRCPY(code, "NFA_BOL "); break;
case NFA_EOW: STRCPY(code, "NFA_EOW "); break;
case NFA_BOW: STRCPY(code, "NFA_BOW "); break;
+ case NFA_EOF: STRCPY(code, "NFA_EOF "); break;
+ case NFA_BOF: STRCPY(code, "NFA_BOF "); break;
case NFA_STAR: STRCPY(code, "NFA_STAR "); break;
case NFA_PLUS: STRCPY(code, "NFA_PLUS "); break;
case NFA_NOT: STRCPY(code, "NFA_NOT "); break;
break;
}
+ case NFA_BOF:
+ if (reglnum == 0 && reginput == regline
+ && (!REG_MULTI || reg_firstlnum == 1))
+ addstate_here(thislist, t->state->out, &t->sub, &listidx);
+ break;
+
+ case NFA_EOF:
+ if (reglnum == reg_maxline && curc == NUL)
+ addstate_here(thislist, t->state->out, &t->sub, &listidx);
+ break;
+
#ifdef FEAT_MBYTE
case NFA_COMPOSING:
{
:call add(tl, [2, '\_f', " \na ", "\n"])
:call add(tl, [2, '\_f\+', " \na ", "\na"])
:"
+:"""" Test start/end of line, start/end of file
+:call add(tl, [2, '^a.', "a_\nb ", "a_"])
+:call add(tl, [2, '^a.', "b a \na_"])
+:call add(tl, [2, '.a$', " a\n "])
+:call add(tl, [2, '.a$', " a b\n_a", "_a"])
+:call add(tl, [2, '\%^a.', "a a\na", "a "])
+:call add(tl, [2, '\%^a', " a \na "])
+:call add(tl, [2, '.a\%$', " a\n "])
+:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
:"
:"""" Test recognition of some character classes
:call add(tl, [2, '[0-9]', '8', '8'])
:call Postest()
:put
:"
+:" start and end of buffer
+/\%^
+yeGo\ep:"
+50%/\%^..
+yeGo\epA END\e:"
+50%/\%$
+"ayb20gg/..\%$
+"bybGo\e"apo\e"bp:"
+:"
:/\%#=1^Results/,$wq! test.out
ENDTEST