diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2017-05-23 05:43:32 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2017-05-23 05:43:32 +0300 |
commit | 1d9b00da83d88f353dd517bb8a763baf34d7c80f (patch) | |
tree | 90bc2a83e45f04e37ae33519098fc498279d9d77 /support/dfa.c | |
parent | 76dd301e43e1d3bc93652704293dc71879513ce9 (diff) | |
parent | d3d50a55367f84182d21420121b504f898cda459 (diff) | |
download | egawk-1d9b00da83d88f353dd517bb8a763baf34d7c80f.tar.gz egawk-1d9b00da83d88f353dd517bb8a763baf34d7c80f.tar.bz2 egawk-1d9b00da83d88f353dd517bb8a763baf34d7c80f.zip |
Merge branch 'master' into feature/api-mpfr
Diffstat (limited to 'support/dfa.c')
-rw-r--r-- | support/dfa.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/support/dfa.c b/support/dfa.c index 2003ac55..18c17a5d 100644 --- a/support/dfa.c +++ b/support/dfa.c @@ -72,6 +72,14 @@ isasciidigit (char c) #include "xalloc.h" #include "localeinfo.h" +#ifndef FALLTHROUGH +# if __GNUC__ < 7 +# define FALLTHROUGH ((void) 0) +# else +# define FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +#endif + #ifndef MIN # define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif @@ -1661,10 +1669,10 @@ addtok_mb (struct dfa *dfa, token t, char mbprop) case BACKREF: dfa->fast = false; - /* fallthrough */ + FALLTHROUGH; default: dfa->nleaves++; - /* fallthrough */ + FALLTHROUGH; case EMPTY: dfa->parse.depth++; break; @@ -2461,8 +2469,7 @@ dfaanalyze (struct dfa *d, bool searchflag) copy (&merged, &d->follows[pos[j].index]); } } - /* fallthrough */ - + FALLTHROUGH; case QMARK: /* A QMARK or STAR node is automatically nullable. */ if (d->tokens[i] != PLUS) @@ -2752,13 +2759,13 @@ build_state (state_num s, struct dfa *d, unsigned char uc) else if (d->tokens[pos.index] >= CSET) { matches = d->charclasses[d->tokens[pos.index] - CSET]; - if (tstbit (uc, &d->charclasses[d->tokens[pos.index] - CSET])) + if (tstbit (uc, &matches)) matched = true; } else if (d->tokens[pos.index] == ANYCHAR) { matches = d->charclasses[d->canychar]; - if (tstbit (uc, &d->charclasses[d->canychar])) + if (tstbit (uc, &matches)) matched = true; /* ANYCHAR must match with a single character, so we must put @@ -3378,8 +3385,7 @@ dfa_supported (struct dfa const *d) case NOTLIMWORD: if (!d->localeinfo.multibyte) continue; - /* fallthrough */ - + FALLTHROUGH; case BACKREF: case MBCSET: return false; @@ -3488,7 +3494,7 @@ dfassbuild (struct dfa *d) sup->tokens[j++] = EMPTY; break; } - /* fallthrough */ + FALLTHROUGH; default: sup->tokens[j++] = d->tokens[i]; if ((0 <= d->tokens[i] && d->tokens[i] < NOTCHAR) |