Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
regexp_nfa.c File Reference
#include <assert.h>
#include <inttypes.h>
#include <stdbool.h>
#include <limits.h>
#include "nvim/ascii.h"
#include "nvim/garray.h"

Data Structures

union  Ptrlist
 
struct  Frag
 
struct  regsub_T
 
struct  regsubs_T
 
struct  nfa_pim_S
 
struct  nfa_thread_T
 
struct  nfa_list_T
 

Macros

#define NFA_ADD_NL   31
 
#define EMIT(c)
 
#define CLASS_not   0x80
 
#define CLASS_af   0x40
 
#define CLASS_AF   0x20
 
#define CLASS_az   0x10
 
#define CLASS_AZ   0x08
 
#define CLASS_o7   0x04
 
#define CLASS_o9   0x02
 
#define CLASS_underscore   0x01
 
#define EMIT2(c)   EMIT(c); EMIT(NFA_CONCAT);
 
#define EMITMBC(c)   EMIT(c); EMIT(NFA_CONCAT);
 
#define A_grave   0xc0
 
#define A_acute   0xc1
 
#define A_circumflex   0xc2
 
#define A_virguilla   0xc3
 
#define A_diaeresis   0xc4
 
#define A_ring   0xc5
 
#define C_cedilla   0xc7
 
#define E_grave   0xc8
 
#define E_acute   0xc9
 
#define E_circumflex   0xca
 
#define E_diaeresis   0xcb
 
#define I_grave   0xcc
 
#define I_acute   0xcd
 
#define I_circumflex   0xce
 
#define I_diaeresis   0xcf
 
#define N_virguilla   0xd1
 
#define O_grave   0xd2
 
#define O_acute   0xd3
 
#define O_circumflex   0xd4
 
#define O_virguilla   0xd5
 
#define O_diaeresis   0xd6
 
#define O_slash   0xd8
 
#define U_grave   0xd9
 
#define U_acute   0xda
 
#define U_circumflex   0xdb
 
#define U_diaeresis   0xdc
 
#define Y_acute   0xdd
 
#define a_grave   0xe0
 
#define a_acute   0xe1
 
#define a_circumflex   0xe2
 
#define a_virguilla   0xe3
 
#define a_diaeresis   0xe4
 
#define a_ring   0xe5
 
#define c_cedilla   0xe7
 
#define e_grave   0xe8
 
#define e_acute   0xe9
 
#define e_circumflex   0xea
 
#define e_diaeresis   0xeb
 
#define i_grave   0xec
 
#define i_acute   0xed
 
#define i_circumflex   0xee
 
#define i_diaeresis   0xef
 
#define n_virguilla   0xf1
 
#define o_grave   0xf2
 
#define o_acute   0xf3
 
#define o_circumflex   0xf4
 
#define o_virguilla   0xf5
 
#define o_diaeresis   0xf6
 
#define o_slash   0xf8
 
#define u_grave   0xf9
 
#define u_acute   0xfa
 
#define u_circumflex   0xfb
 
#define u_diaeresis   0xfc
 
#define y_acute   0xfd
 
#define y_diaeresis   0xff
 
#define PUSH(s)   st_push((s), &stackp, stack_end)
 
#define POP()
 
#define NFA_PIM_UNUSED   0 /* pim not used */
 
#define NFA_PIM_TODO   1 /* pim not done yet */
 
#define NFA_PIM_MATCH   2 /* pim executed, matches */
 
#define NFA_PIM_NOMATCH   3 /* pim executed, no match */
 
#define ADDSTATE_HERE_OFFSET   10
 
#define PTR2LEN(x)   utf_ptr2len(x)
 
#define ADD_STATE_IF_MATCH(state)
 

Typedefs

typedef union Ptrlist Ptrlist
 
typedef struct Frag Frag_T
 
typedef struct nfa_pim_S nfa_pim_T
 

Enumerations

enum  {
  NFA_SPLIT = -1024, NFA_MATCH, NFA_EMPTY, NFA_START_COLL,
  NFA_END_COLL, NFA_START_NEG_COLL, NFA_END_NEG_COLL, NFA_RANGE,
  NFA_RANGE_MIN, NFA_RANGE_MAX, NFA_CONCAT, NFA_OR,
  NFA_STAR, NFA_STAR_NONGREEDY, NFA_QUEST, NFA_QUEST_NONGREEDY,
  NFA_BOL, NFA_EOL, NFA_BOW, NFA_EOW,
  NFA_BOF, NFA_EOF, NFA_NEWL, NFA_ZSTART,
  NFA_ZEND, NFA_NOPEN, NFA_NCLOSE, NFA_START_INVISIBLE,
  NFA_START_INVISIBLE_FIRST, NFA_START_INVISIBLE_NEG, NFA_START_INVISIBLE_NEG_FIRST, NFA_START_INVISIBLE_BEFORE,
  NFA_START_INVISIBLE_BEFORE_FIRST, NFA_START_INVISIBLE_BEFORE_NEG, NFA_START_INVISIBLE_BEFORE_NEG_FIRST, NFA_START_PATTERN,
  NFA_END_INVISIBLE, NFA_END_INVISIBLE_NEG, NFA_END_PATTERN, NFA_COMPOSING,
  NFA_END_COMPOSING, NFA_ANY_COMPOSING, NFA_OPT_CHARS, NFA_PREV_ATOM_NO_WIDTH,
  NFA_PREV_ATOM_NO_WIDTH_NEG, NFA_PREV_ATOM_JUST_BEFORE, NFA_PREV_ATOM_JUST_BEFORE_NEG, NFA_PREV_ATOM_LIKE_PATTERN,
  NFA_BACKREF1, NFA_BACKREF2, NFA_BACKREF3, NFA_BACKREF4,
  NFA_BACKREF5, NFA_BACKREF6, NFA_BACKREF7, NFA_BACKREF8,
  NFA_BACKREF9, NFA_ZREF1, NFA_ZREF2, NFA_ZREF3,
  NFA_ZREF4, NFA_ZREF5, NFA_ZREF6, NFA_ZREF7,
  NFA_ZREF8, NFA_ZREF9, NFA_SKIP, NFA_MOPEN,
  NFA_MOPEN1, NFA_MOPEN2, NFA_MOPEN3, NFA_MOPEN4,
  NFA_MOPEN5, NFA_MOPEN6, NFA_MOPEN7, NFA_MOPEN8,
  NFA_MOPEN9, NFA_MCLOSE, NFA_MCLOSE1, NFA_MCLOSE2,
  NFA_MCLOSE3, NFA_MCLOSE4, NFA_MCLOSE5, NFA_MCLOSE6,
  NFA_MCLOSE7, NFA_MCLOSE8, NFA_MCLOSE9, NFA_ZOPEN,
  NFA_ZOPEN1, NFA_ZOPEN2, NFA_ZOPEN3, NFA_ZOPEN4,
  NFA_ZOPEN5, NFA_ZOPEN6, NFA_ZOPEN7, NFA_ZOPEN8,
  NFA_ZOPEN9, NFA_ZCLOSE, NFA_ZCLOSE1, NFA_ZCLOSE2,
  NFA_ZCLOSE3, NFA_ZCLOSE4, NFA_ZCLOSE5, NFA_ZCLOSE6,
  NFA_ZCLOSE7, NFA_ZCLOSE8, NFA_ZCLOSE9, NFA_ANY,
  NFA_IDENT, NFA_SIDENT, NFA_KWORD, NFA_SKWORD,
  NFA_FNAME, NFA_SFNAME, NFA_PRINT, NFA_SPRINT,
  NFA_WHITE, NFA_NWHITE, NFA_DIGIT, NFA_NDIGIT,
  NFA_HEX, NFA_NHEX, NFA_OCTAL, NFA_NOCTAL,
  NFA_WORD, NFA_NWORD, NFA_HEAD, NFA_NHEAD,
  NFA_ALPHA, NFA_NALPHA, NFA_LOWER, NFA_NLOWER,
  NFA_UPPER, NFA_NUPPER, NFA_LOWER_IC, NFA_NLOWER_IC,
  NFA_UPPER_IC, NFA_NUPPER_IC, NFA_FIRST_NL = NFA_ANY + NFA_ADD_NL, NFA_LAST_NL = NFA_NUPPER_IC + NFA_ADD_NL,
  NFA_CURSOR, NFA_LNUM, NFA_LNUM_GT, NFA_LNUM_LT,
  NFA_COL, NFA_COL_GT, NFA_COL_LT, NFA_VCOL,
  NFA_VCOL_GT, NFA_VCOL_LT, NFA_MARK, NFA_MARK_GT,
  NFA_MARK_LT, NFA_VISUAL, NFA_CLASS_ALNUM, NFA_CLASS_ALPHA,
  NFA_CLASS_BLANK, NFA_CLASS_CNTRL, NFA_CLASS_DIGIT, NFA_CLASS_GRAPH,
  NFA_CLASS_LOWER, NFA_CLASS_PRINT, NFA_CLASS_PUNCT, NFA_CLASS_SPACE,
  NFA_CLASS_UPPER, NFA_CLASS_XDIGIT, NFA_CLASS_TAB, NFA_CLASS_RETURN,
  NFA_CLASS_BACKSPACE, NFA_CLASS_ESCAPE, NFA_CLASS_IDENT, NFA_CLASS_KEYWORD,
  NFA_CLASS_FNAME
}
 

Functions

 if (++depth >=5000||subs==NULL)
 
 if (off_arg<=-ADDSTATE_HERE_OFFSET)
 
 switch (state->c)
 
 if (r==NULL)
 
 if (listidx+1==tlen)
 
 if (count==0)
 
else if (count > 1)
 
 if (pim !=NULL)
 
 if (state->c==NFA_START_INVISIBLE_BEFORE||state->c==NFA_START_INVISIBLE_BEFORE_FIRST||state->c==NFA_START_INVISIBLE_BEFORE_NEG||state->c==NFA_START_INVISIBLE_BEFORE_NEG_FIRST)
 
 if (nfa_ll_index==1)
 
 if (rex.nfa_listid<=rex.nfa_alt_listid)
 
 if (need_restore)
 
 if (REG_MULTI)
 
 if (result !=NFA_TOO_EXPENSIVE)
 
 fast_breakcheck ()
 
 if (got_int)
 
 if (nfa_did_time_out())
 
 if (toplevel)
 
 for (;;)
 
 xfree (list[1].t)
 
 xfree (listids)
 

Variables

static regsubs_T FUNC_ATTR_WARN_UNUSED_RESULT
 
int off = off_arg
 
int add_here = false
 
int listindex = 0
 
int k
 
int found = false
 
nfa_thread_Tthread
 
struct multipos save_multipos
 
int save_in_use
 
char_usave_ptr
 
int i
 
regsub_Tsub
 
regsubs_Tsubs = subs_arg
 
int count = l->n - tlen
 
int listidx = *ip
 
regsubs_Tr = addstate(l, state, subs, pim, -listidx - ADDSTATE_HERE_OFFSET)
 
l n = 0
 
ip = listidx - 1
 
static int const int save_reglnum = rex.lnum
 
const int save_nfa_match = nfa_match
 
const int save_nfa_listid = rex.nfa_listid
 
save_se_T *const save_nfa_endp = nfa_endp
 
save_se_T endpos
 
save_se_Tendposp = NULL
 
int need_restore = false
 
 else
 
const int result = nfa_regmatch(prog, state->out, submatch, m)
 
rex nfa_alt_listid = rex.nfa_listid
 
rex lnum = save_reglnum
 
rex input = rex.line + save_reginput_col
 
static int int flag = 0
 
bool go_to_nextline = false
 
nfa_thread_Tt = xmalloc(size)
 
nfa_list_T list [2] = xmalloc(size)
 
nfa_list_Tthislist = &list[0]
 
nfa_list_Tnextlist = &list[1]
 
int * listids = NULL
 
int listids_len = 0
 
nfa_state_Tadd_state
 
int add_count
 
int add_off = 0
 
int toplevel = start->c == NFA_MOPEN
 
size_t size = (prog->nstate + 1) * sizeof(nfa_thread_T)
 
list[0] len = prog->nstate + 1
 
thislist has_pim = false
 
thislist id = rex.nfa_listid + 1
 
theend __pad0__
 

Macro Definition Documentation

◆ A_acute

#define A_acute   0xc1

◆ a_acute

#define a_acute   0xe1

◆ A_circumflex

#define A_circumflex   0xc2

◆ a_circumflex

#define a_circumflex   0xe2

◆ A_diaeresis

#define A_diaeresis   0xc4

◆ a_diaeresis

#define a_diaeresis   0xe4

◆ A_grave

#define A_grave   0xc0

◆ a_grave

#define a_grave   0xe0

◆ A_ring

#define A_ring   0xc5

◆ a_ring

#define a_ring   0xe5

◆ A_virguilla

#define A_virguilla   0xc3

◆ a_virguilla

#define a_virguilla   0xe3

◆ ADD_STATE_IF_MATCH

#define ADD_STATE_IF_MATCH (   state)
Value:
if (result) { \
add_state = state->out; \
add_off = clen; \
}

◆ ADDSTATE_HERE_OFFSET

#define ADDSTATE_HERE_OFFSET   10

◆ C_cedilla

#define C_cedilla   0xc7

◆ c_cedilla

#define c_cedilla   0xe7

◆ CLASS_af

#define CLASS_af   0x40

◆ CLASS_AF

#define CLASS_AF   0x20

◆ CLASS_az

#define CLASS_az   0x10

◆ CLASS_AZ

#define CLASS_AZ   0x08

◆ CLASS_not

#define CLASS_not   0x80

◆ CLASS_o7

#define CLASS_o7   0x04

◆ CLASS_o9

#define CLASS_o9   0x02

◆ CLASS_underscore

#define CLASS_underscore   0x01

◆ E_acute

#define E_acute   0xc9

◆ e_acute

#define e_acute   0xe9

◆ E_circumflex

#define E_circumflex   0xca

◆ e_circumflex

#define e_circumflex   0xea

◆ E_diaeresis

#define E_diaeresis   0xcb

◆ e_diaeresis

#define e_diaeresis   0xeb

◆ E_grave

#define E_grave   0xc8

◆ e_grave

#define e_grave   0xe8

◆ EMIT

#define EMIT (   c)
Value:
do { \
if (post_ptr >= post_end) { \
realloc_post_list(); \
} \
*post_ptr++ = c; \
} while (0)

◆ EMIT2

#define EMIT2 (   c)    EMIT(c); EMIT(NFA_CONCAT);

◆ EMITMBC

#define EMITMBC (   c)    EMIT(c); EMIT(NFA_CONCAT);

◆ I_acute

#define I_acute   0xcd

◆ i_acute

#define i_acute   0xed

◆ I_circumflex

#define I_circumflex   0xce

◆ i_circumflex

#define i_circumflex   0xee

◆ I_diaeresis

#define I_diaeresis   0xcf

◆ i_diaeresis

#define i_diaeresis   0xef

◆ I_grave

#define I_grave   0xcc

◆ i_grave

#define i_grave   0xec

◆ N_virguilla

#define N_virguilla   0xd1

◆ n_virguilla

#define n_virguilla   0xf1

◆ NFA_ADD_NL

#define NFA_ADD_NL   31

◆ NFA_PIM_MATCH

#define NFA_PIM_MATCH   2 /* pim executed, matches */

◆ NFA_PIM_NOMATCH

#define NFA_PIM_NOMATCH   3 /* pim executed, no match */

◆ NFA_PIM_TODO

#define NFA_PIM_TODO   1 /* pim not done yet */

◆ NFA_PIM_UNUSED

#define NFA_PIM_UNUSED   0 /* pim not used */

◆ O_acute

#define O_acute   0xd3

◆ o_acute

#define o_acute   0xf3

◆ O_circumflex

#define O_circumflex   0xd4

◆ o_circumflex

#define o_circumflex   0xf4

◆ O_diaeresis

#define O_diaeresis   0xd6

◆ o_diaeresis

#define o_diaeresis   0xf6

◆ O_grave

#define O_grave   0xd2

◆ o_grave

#define o_grave   0xf2

◆ O_slash

#define O_slash   0xd8

◆ o_slash

#define o_slash   0xf8

◆ O_virguilla

#define O_virguilla   0xd5

◆ o_virguilla

#define o_virguilla   0xf5

◆ POP

#define POP ( )
Value:
st_pop(&stackp, stack); \
if (stackp < stack) { \
st_error(postfix, end, p); \
xfree(stack); \
return NULL; \
}

◆ PTR2LEN

#define PTR2LEN (   x)    utf_ptr2len(x)

◆ PUSH

#define PUSH (   s)    st_push((s), &stackp, stack_end)

◆ U_acute

#define U_acute   0xda

◆ u_acute

#define u_acute   0xfa

◆ U_circumflex

#define U_circumflex   0xdb

◆ u_circumflex

#define u_circumflex   0xfb

◆ U_diaeresis

#define U_diaeresis   0xdc

◆ u_diaeresis

#define u_diaeresis   0xfc

◆ U_grave

#define U_grave   0xd9

◆ u_grave

#define u_grave   0xf9

◆ Y_acute

#define Y_acute   0xdd

◆ y_acute

#define y_acute   0xfd

◆ y_diaeresis

#define y_diaeresis   0xff

Typedef Documentation

◆ Frag_T

typedef struct Frag Frag_T

◆ nfa_pim_T

typedef struct nfa_pim_S nfa_pim_T

◆ Ptrlist

typedef union Ptrlist Ptrlist

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
NFA_SPLIT 
NFA_MATCH 
NFA_EMPTY 
NFA_START_COLL 
NFA_END_COLL 
NFA_START_NEG_COLL 
NFA_END_NEG_COLL 
NFA_RANGE 
NFA_RANGE_MIN 
NFA_RANGE_MAX 
NFA_CONCAT 
NFA_OR 
NFA_STAR 
NFA_STAR_NONGREEDY 
NFA_QUEST 
NFA_QUEST_NONGREEDY 
NFA_BOL 
NFA_EOL 
NFA_BOW 
NFA_EOW 
NFA_BOF 
NFA_EOF 
NFA_NEWL 
NFA_ZSTART 
NFA_ZEND 
NFA_NOPEN 
NFA_NCLOSE 
NFA_START_INVISIBLE 
NFA_START_INVISIBLE_FIRST 
NFA_START_INVISIBLE_NEG 
NFA_START_INVISIBLE_NEG_FIRST 
NFA_START_INVISIBLE_BEFORE 
NFA_START_INVISIBLE_BEFORE_FIRST 
NFA_START_INVISIBLE_BEFORE_NEG 
NFA_START_INVISIBLE_BEFORE_NEG_FIRST 
NFA_START_PATTERN 
NFA_END_INVISIBLE 
NFA_END_INVISIBLE_NEG 
NFA_END_PATTERN 
NFA_COMPOSING 
NFA_END_COMPOSING 
NFA_ANY_COMPOSING 
NFA_OPT_CHARS 
NFA_PREV_ATOM_NO_WIDTH 
NFA_PREV_ATOM_NO_WIDTH_NEG 
NFA_PREV_ATOM_JUST_BEFORE 
NFA_PREV_ATOM_JUST_BEFORE_NEG 
NFA_PREV_ATOM_LIKE_PATTERN 
NFA_BACKREF1 
NFA_BACKREF2 
NFA_BACKREF3 
NFA_BACKREF4 
NFA_BACKREF5 
NFA_BACKREF6 
NFA_BACKREF7 
NFA_BACKREF8 
NFA_BACKREF9 
NFA_ZREF1 
NFA_ZREF2 
NFA_ZREF3 
NFA_ZREF4 
NFA_ZREF5 
NFA_ZREF6 
NFA_ZREF7 
NFA_ZREF8 
NFA_ZREF9 
NFA_SKIP 
NFA_MOPEN 
NFA_MOPEN1 
NFA_MOPEN2 
NFA_MOPEN3 
NFA_MOPEN4 
NFA_MOPEN5 
NFA_MOPEN6 
NFA_MOPEN7 
NFA_MOPEN8 
NFA_MOPEN9 
NFA_MCLOSE 
NFA_MCLOSE1 
NFA_MCLOSE2 
NFA_MCLOSE3 
NFA_MCLOSE4 
NFA_MCLOSE5 
NFA_MCLOSE6 
NFA_MCLOSE7 
NFA_MCLOSE8 
NFA_MCLOSE9 
NFA_ZOPEN 
NFA_ZOPEN1 
NFA_ZOPEN2 
NFA_ZOPEN3 
NFA_ZOPEN4 
NFA_ZOPEN5 
NFA_ZOPEN6 
NFA_ZOPEN7 
NFA_ZOPEN8 
NFA_ZOPEN9 
NFA_ZCLOSE 
NFA_ZCLOSE1 
NFA_ZCLOSE2 
NFA_ZCLOSE3 
NFA_ZCLOSE4 
NFA_ZCLOSE5 
NFA_ZCLOSE6 
NFA_ZCLOSE7 
NFA_ZCLOSE8 
NFA_ZCLOSE9 
NFA_ANY 
NFA_IDENT 
NFA_SIDENT 
NFA_KWORD 
NFA_SKWORD 
NFA_FNAME 
NFA_SFNAME 
NFA_PRINT 
NFA_SPRINT 
NFA_WHITE 
NFA_NWHITE 
NFA_DIGIT 
NFA_NDIGIT 
NFA_HEX 
NFA_NHEX 
NFA_OCTAL 
NFA_NOCTAL 
NFA_WORD 
NFA_NWORD 
NFA_HEAD 
NFA_NHEAD 
NFA_ALPHA 
NFA_NALPHA 
NFA_LOWER 
NFA_NLOWER 
NFA_UPPER 
NFA_NUPPER 
NFA_LOWER_IC 
NFA_NLOWER_IC 
NFA_UPPER_IC 
NFA_NUPPER_IC 
NFA_FIRST_NL 
NFA_LAST_NL 
NFA_CURSOR 
NFA_LNUM 
NFA_LNUM_GT 
NFA_LNUM_LT 
NFA_COL 
NFA_COL_GT 
NFA_COL_LT 
NFA_VCOL 
NFA_VCOL_GT 
NFA_VCOL_LT 
NFA_MARK 
NFA_MARK_GT 
NFA_MARK_LT 
NFA_VISUAL 
NFA_CLASS_ALNUM 
NFA_CLASS_ALPHA 
NFA_CLASS_BLANK 
NFA_CLASS_CNTRL 
NFA_CLASS_DIGIT 
NFA_CLASS_GRAPH 
NFA_CLASS_LOWER 
NFA_CLASS_PRINT 
NFA_CLASS_PUNCT 
NFA_CLASS_SPACE 
NFA_CLASS_UPPER 
NFA_CLASS_XDIGIT 
NFA_CLASS_TAB 
NFA_CLASS_RETURN 
NFA_CLASS_BACKSPACE 
NFA_CLASS_ESCAPE 
NFA_CLASS_IDENT 
NFA_CLASS_KEYWORD 
NFA_CLASS_FNAME 

Function Documentation

◆ fast_breakcheck()

fast_breakcheck ( )

◆ for()

for ( ;;  )

◆ if() [1/16]

if ( ++depth >=5000||  subs = NULL)

◆ if() [2/16]

else if ( count  ,
 
)

◆ if() [3/16]

if ( count  = = 0)

◆ if() [4/16]

if ( got_int  )

◆ if() [5/16]

if ( listidx 1 = = tlen)

◆ if() [6/16]

if ( need_restore  )

◆ if() [7/16]

if ( nfa_did_time_out()  )

◆ if() [8/16]

if ( nfa_ll_index  = = 1)

◆ if() [9/16]

if ( off_arg<=-  ADDSTATE_HERE_OFFSET)

◆ if() [10/16]

if ( pim !  = NULL)

◆ if() [11/16]

if ( r  = NULL)

◆ if() [12/16]

if ( REG_MULTI  )

◆ if() [13/16]

◆ if() [14/16]

if ( rex.nfa_listid<=rex.  nfa_alt_listid)

◆ if() [15/16]

if ( state->  c = NFA_START_INVISIBLE_BEFORE || state->c == NFA_START_INVISIBLE_BEFORE_FIRST || state->c == NFA_START_INVISIBLE_BEFORE_NEG || state->c == NFA_START_INVISIBLE_BEFORE_NEG_FIRST)

◆ if() [16/16]

if ( toplevel  )

◆ switch()

switch ( state->  c)

◆ xfree() [1/2]

xfree ( list.  t[1])

◆ xfree() [2/2]

xfree ( listids  )

Variable Documentation

◆ __pad0__

theend __pad0__

◆ add_count

int add_count

◆ add_here

bool add_here = false

◆ add_off

int add_off = 0

◆ add_state

nfa_state_T* add_state

◆ count

count = l->n - tlen

◆ else

else
Initial value:
{
nfa_ll_index++

◆ endpos

save_se_T endpos

◆ endposp

save_se_T* endposp = NULL

◆ flag

int int flag = 0

◆ found

int found = false

◆ FUNC_ATTR_WARN_UNUSED_RESULT

regsubs_T FUNC_ATTR_WARN_UNUSED_RESULT
Initial value:
{
int subidx

◆ go_to_nextline

bool go_to_nextline = false

◆ has_pim

nextlist has_pim = false

◆ i

int i

◆ id

return id = rex.nfa_listid + 1

◆ input

rex input = rex.line + save_reginput_col

◆ ip

* ip = listidx - 1

◆ k

int k

◆ len

list [1] len = prog->nstate + 1

◆ list

list = xmalloc(size)

◆ listids

int* listids = NULL

◆ listids_len

int listids_len = 0

◆ listidx

int listidx = *ip

◆ listindex

int listindex = 0

◆ lnum

rex lnum = save_reglnum

◆ n

nextlist n = 0

◆ need_restore

int need_restore = false

◆ nextlist

nextlist = &list[1]

◆ nfa_alt_listid

rex nfa_alt_listid = rex.nfa_listid

◆ off

int off = off_arg

◆ r

regsubs_T * r = addstate(l, state, subs, pim, -listidx - ADDSTATE_HERE_OFFSET)

◆ result

return result = nfa_regmatch(prog, state->out, submatch, m)

◆ save_in_use

int save_in_use

◆ save_multipos

struct multipos save_multipos

◆ save_nfa_endp

save_se_T* const save_nfa_endp = nfa_endp

◆ save_nfa_listid

const int save_nfa_listid = rex.nfa_listid

◆ save_nfa_match

const int save_nfa_match = nfa_match

◆ save_ptr

char_u* save_ptr

◆ save_reglnum

int const int save_reglnum = rex.lnum

◆ size

size_t size = (prog->nstate + 1) * sizeof(nfa_thread_T)

◆ sub

regsub_T* sub

◆ subs

return subs = subs_arg

◆ t

list [1] t = xmalloc(size)

◆ thislist

thislist = &list[0]

◆ thread

nfa_thread_T* thread

◆ toplevel

int toplevel = start->c == NFA_MOPEN
result
const int result
Definition: regexp_nfa.c:4770
p
char_u * p
Definition: eval.c:2013
NULL
return NULL
Definition: eval.c:10352