When using the nocombine configuration option, tcc divides the rules into self-contained subsets, which are separated by lines with the word
barrier
When iterating through rules, i.e. when looking for a match, barriers can be ignored. However, they change the meaning of the action unspec: when encountering unspec, the classifier has to look for a barrier following the current rule, and proceed with the next rule following this barrier. Only if there is no barrier following the current rule can the classifier return unspec as the final result.
Example:
Line | Action/rule | Next rule | |
Match | No match | ||
1 | action 0 = unspec |
||
2 | action 1 = class 1:1 |
||
3 | |||
4 | match ... action 1 |
return | 5 |
5 | match ... action 0 |
8 | 6 |
6 | match action 1 |
return | -- |
7 | barrier |
8 | |
8 | match ... action 1 |
return | 9 |
9 | match action 0 |
return | -- |