Function report |
Source Code:lib\ts_fsm.c |
Create Date:2022-07-28 07:10:48 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:fsm_find
Proto:static unsigned int fsm_find(struct ts_config *conf, struct ts_state *state)
Type:unsigned int
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct ts_config * | conf | |
| struct ts_state * | state |
| 136 | fsm = ts_config_priv(conf) |
| 138 | block_idx = 0 |
| 157 | If end_of_data() Then Go to no_match |
| 160 | strict = recur != TS_FSM_HEAD_IGNORE |
| 162 | startover : |
| 163 | match_start = consumed + block_idx |
| 168 | If Value is more likely to compile time(tok_idx < (ntokens - 1)) Then next = tokens[tok_idx + 1] |
| 170 | Else next = NULL |
| 174 | Case recur == TS_FSM_SINGLE |
| 175 | If end_of_data() Then Go to no_match |
| 178 | If Not match_token(cur, data[block_idx]) Then TOKEN_MISMATCH() |
| 180 | Break |
| 182 | Case recur == TS_FSM_PERHAPS |
| 183 | If end_of_data() || Not match_token(cur, data[block_idx]) Then Continue |
| 186 | Break |
| 188 | Case recur == TS_FSM_MULTI |
| 189 | If end_of_data() Then Go to no_match |
| 192 | If Not match_token(cur, data[block_idx]) Then TOKEN_MISMATCH() |
| 195 | block_idx++ |
| 198 | Case recur == TS_FSM_ANY |
| 199 | If (next == NULL) Then Go to found_match |
| 202 | If end_of_data() Then Continue |
| 205 | When Not match_token(next, data[block_idx]) cycle |
| 206 | If Not match_token(cur, data[block_idx]) Then TOKEN_MISMATCH() |
| 208 | block_idx++ |
| 209 | If end_of_data() Then Go to no_match |
| 212 | Continue |
| 218 | Case recur == TS_FSM_HEAD_IGNORE |
| 219 | If end_of_data() Then Continue |
| 222 | When Not match_token(next, data[block_idx]) cycle |
| 229 | If Not match_token(cur, data[block_idx]) Then Go to no_match |
| 232 | block_idx++ |
| 233 | If end_of_data() Then Go to no_match |
| 237 | match_start = consumed + block_idx |
| 238 | Continue |
| 241 | block_idx++ |
| 244 | If end_of_data() Then Go to found_match |
| 247 | no_match : |
| 248 | Return UINT_MAX |
| 250 | found_match : |
| 252 | Return match_start |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |