equal
deleted
inserted
replaced
37 |
37 |
38 // process input |
38 // process input |
39 do { |
39 do { |
40 if (*c) { |
40 if (*c) { |
41 // look up the next state |
41 // look up the next state |
42 for (trans = lex->state_list[cur_state - 1].trans_list; trans->next_state > 0; trans++) { |
42 for (trans = lex->state_list[cur_state - 1].trans_list; trans->next_state > 0 || trans->flags; trans++) { |
43 // accept defaults |
43 // accept defaults |
44 if (trans->flags & LEX_TRANS_DEFAULT) |
44 if (trans->flags & LEX_TRANS_DEFAULT) |
45 break; |
45 break; |
46 |
46 |
47 // disregard non-matches |
47 // disregard non-matches |
48 if (trans->left > *c || *c > trans->right) |
48 if (trans->left > *c || *c > trans->right) |
49 continue; |
49 continue; |
50 |
50 |
51 // abort on invalids |
51 // abort on invalids |
52 if (trans->flags & LEX_TRANS_INVALID) |
52 if (trans->flags & LEX_TRANS_INVALID) { |
53 goto error; |
53 goto error; |
54 |
54 |
55 else { |
55 } else { |
56 // accept it |
56 // accept it |
57 break; |
57 break; |
58 } |
58 } |
59 } |
59 } |
60 |
60 |