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  |