diff --git a/contrib/pg_trgm/trgm_regexp.c b/contrib/pg_trgm/trgm_regexp.c index 1330b615b8447..21e8a9f343514 100644 --- a/contrib/pg_trgm/trgm_regexp.c +++ b/contrib/pg_trgm/trgm_regexp.c @@ -73,7 +73,7 @@ * (two prefix colors plus a state number from the original NFA) an * "enter key". * - * Each arc of the expanded graph is labelled with a trigram that must be + * Each arc of the expanded graph is labeled with a trigram that must be * present in the string to match. We can construct this from an out-arc of * the underlying NFA state by combining the expanded state's prefix with the * color label of the underlying out-arc, if neither prefix position is @@ -123,7 +123,7 @@ * false positives that we would have to traverse a large fraction of the * index, the graph is simplified further in a lossy fashion by removing * color trigrams. When a color trigram is removed, the states connected by - * any arcs labelled with that trigram are merged. + * any arcs labeled with that trigram are merged. * * Trigrams do not all have equivalent value for searching: some of them are * more frequent and some of them are less frequent. Ideally, we would like diff --git a/doc/src/sgml/README.links b/doc/src/sgml/README.links index c83488969620d..4181e0877b5b5 100644 --- a/doc/src/sgml/README.links +++ b/doc/src/sgml/README.links @@ -47,3 +47,7 @@ Guidelines usually have xreflabels. - For an external link, use , with or without link text. + +- xreflabels added to tags prevent the chapter/section for id's from being + referenced; only the xreflabel is accessible. Therefore, use xreflabels + only when linking is common, and chapter/section information is unneeded. diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index aca8f73a50db7..783bf7a12babf 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1013,11 +1013,11 @@ include_dir 'conf.d' When a password is specified in or - , this parameter determines the algorithm - to use to encrypt the password. The default value is md5, - which stores the password as an MD5 hash (on is also - accepted, as alias for md5). Setting this parameter to - scram-sha-256 will encrypt the password with SCRAM-SHA-256. + , this parameter determines the + algorithm to use to encrypt the password. Possible values are + scram-sha-256, which will encrypt the password with + SCRAM-SHA-256, and md5, which stores the password + as an MD5 hash. The default is scram-sha-256. Note that older clients might lack support for the SCRAM authentication @@ -4546,23 +4546,6 @@ ANY num_sync ( - enable_groupingsets_hash_disk (boolean) - - enable_groupingsets_hash_disk configuration parameter - - - - - Enables or disables the query planner's use of hashed aggregation plan - types for grouping sets when the total size of the hash tables is - expected to exceed work_mem. See . The default is - off. - - - - enable_hashagg (boolean) @@ -4577,17 +4560,19 @@ ANY num_sync ( - enable_hashagg_disk (boolean) + + hashagg_avoid_disk_plan (boolean) - enable_hashagg_disk configuration parameter + hashagg_avoid_disk_plan configuration parameter - Enables or disables the query planner's use of hashed aggregation plan - types when the memory usage is expected to exceed - work_mem. The default is on. + If set to on, causes the planner to avoid choosing + hashed aggregation plans that are expected to use the disk. If hashed + aggregation is chosen, it may still require the use of disk at + execution time, even if this parameter is enabled. The default is + off. diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index d9adc23a56343..2771e3b1a8e77 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -1,6 +1,6 @@ - + <application>ECPG</application> — Embedded <acronym>SQL</acronym> in C embedded SQLin C diff --git a/doc/src/sgml/geqo.sgml b/doc/src/sgml/geqo.sgml index 13fcf233bb26a..39d2163d160c2 100644 --- a/doc/src/sgml/geqo.sgml +++ b/doc/src/sgml/geqo.sgml @@ -1,6 +1,6 @@ - + Genetic Query Optimizer diff --git a/doc/src/sgml/gin.sgml b/doc/src/sgml/gin.sgml index b4f6abae1225a..0182b445855ca 100644 --- a/doc/src/sgml/gin.sgml +++ b/doc/src/sgml/gin.sgml @@ -1,6 +1,6 @@ - + GIN Indexes diff --git a/doc/src/sgml/gist.sgml b/doc/src/sgml/gist.sgml index 60d77411e0355..a7eec1e94970f 100644 --- a/doc/src/sgml/gist.sgml +++ b/doc/src/sgml/gist.sgml @@ -1,6 +1,6 @@ - + GiST Indexes diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 19e197914443d..dfc292872a97a 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1,6 +1,6 @@ - + <application>libpq</application> — C Library diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index 54bc1abd84176..39075ea8f33d9 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -707,7 +707,7 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. - + The Autovacuum Daemon diff --git a/doc/src/sgml/plperl.sgml b/doc/src/sgml/plperl.sgml index 1a9768316d769..033ed6960c3ef 100644 --- a/doc/src/sgml/plperl.sgml +++ b/doc/src/sgml/plperl.sgml @@ -1,6 +1,6 @@ - + PL/Perl — Perl Procedural Language diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml index 71e54004225a4..05d2705604b5a 100644 --- a/doc/src/sgml/plpgsql.sgml +++ b/doc/src/sgml/plpgsql.sgml @@ -1,6 +1,6 @@ - + <application>PL/pgSQL</application> — <acronym>SQL</acronym> Procedural Language diff --git a/doc/src/sgml/plpython.sgml b/doc/src/sgml/plpython.sgml index facc3a93e2b35..1921915b17247 100644 --- a/doc/src/sgml/plpython.sgml +++ b/doc/src/sgml/plpython.sgml @@ -1,6 +1,6 @@ - + PL/Python — Python Procedural Language PL/Python diff --git a/doc/src/sgml/ref/create_language.sgml b/doc/src/sgml/ref/create_language.sgml index 44d14c0ba7255..10d1533d6d8c9 100644 --- a/doc/src/sgml/ref/create_language.sgml +++ b/doc/src/sgml/ref/create_language.sgml @@ -110,11 +110,6 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE namename - The name of an existing procedural language. For backward - compatibility, the name can be enclosed by single quotes. + The name of an existing procedural language. diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 1b2012d34a970..88210c4a5d3c8 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1120,7 +1120,7 @@ project.max-msg-ids=(priv,4096,deny) If systemd is in use, some care must be taken - that IPC resources (shared memory and semaphores) are not prematurely + that IPC resources (including shared memory) are not prematurely removed by the operating system. This is especially of concern when installing PostgreSQL from source. Users of distribution packages of PostgreSQL are less likely to be affected, as @@ -1137,11 +1137,12 @@ project.max-msg-ids=(priv,4096,deny) - A typical observed effect when this setting is on is that the semaphore - objects used by a PostgreSQL server are removed at apparently random - times, leading to the server crashing with log messages like + A typical observed effect when this setting is on is that shared memory + objects used for parallel query execution are removed at apparently random + times, leading to errors and warnings while attempting to open and remove + them, like -LOG: semctl(1234567890, 0, IPC_RMID, ...) failed: Invalid argument +WARNING: could not remove shared memory segment "/PostgreSQL.1450751626": No such file or directory Different types of IPC objects (shared memory vs. semaphores, System V vs. POSIX) are treated slightly differently diff --git a/doc/src/sgml/spgist.sgml b/doc/src/sgml/spgist.sgml index edf4a67e52607..0e04a0867932e 100644 --- a/doc/src/sgml/spgist.sgml +++ b/doc/src/sgml/spgist.sgml @@ -1,6 +1,6 @@ - + SP-GiST Indexes diff --git a/doc/src/sgml/spi.sgml b/doc/src/sgml/spi.sgml index 3b2a6149299f8..7752de0a4d882 100644 --- a/doc/src/sgml/spi.sgml +++ b/doc/src/sgml/spi.sgml @@ -1,6 +1,6 @@ - + Server Programming Interface @@ -785,6 +785,133 @@ int SPI_execute_with_args(const char *command, + + SPI_execute_with_receiver + + + SPI_execute_with_receiver + 3 + + + + SPI_execute_with_receiver + execute a command with out-of-line parameters + + + + + int SPI_execute_with_receiver(const char *command, + ParamListInfo params, + bool read_only, + long count, + DestReceiver *dest) + + + + + Description + + + SPI_execute_with_receiver executes a command that might + include references to externally supplied parameters. The command text + refers to a parameter as $n, + and the params object provides values and type + information for each such symbol. + read_only and count have + the same interpretation as in SPI_execute. + + + + If dest is not NULL, then result tuples are passed + to that object as they are generated by the executor, instead of being + accumulated in SPI_tuptable. Using a + caller-supplied DestReceiver object is particularly + helpful for queries that might generate many tuples, since the data can + be processed on-the-fly instead of being accumulated in memory. + + + + The params object should normally mark each + parameter with the PARAM_FLAG_CONST flag, since + a one-shot plan is always used for the query. + + + + + Arguments + + + + const char * command + + + command string + + + + + + ParamListInfo params + + + data structure containing parameter types and values; NULL if none + + + + + + bool read_only + + true for read-only execution + + + + + long count + + + maximum number of rows to return, + or 0 for no limit + + + + + + DestReceiver * dest + + + DestReceiver object that will receive any tuples + emitted by the query; if NULL, tuples are returned + in SPI_tuptable + + + + + + + + Return Value + + + The return value is the same as for SPI_execute. + + + + When dest is NULL, + SPI_processed and + SPI_tuptable are set as in + SPI_execute. + When dest is not NULL, + SPI_processed is set to zero and + SPI_tuptable is set to NULL. If a tuple count + is required, the caller's DestReceiver object must + calculate it. + + + + + + SPI_prepare @@ -1564,6 +1691,120 @@ int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, + + SPI_execute_plan_with_receiver + + + SPI_execute_plan_with_receiver + 3 + + + + SPI_execute_plan_with_receiver + execute a statement prepared by SPI_prepare + + + + +int SPI_execute_plan_with_receiver(SPIPlanPtr plan, + ParamListInfo params, + bool read_only, + long count, + DestReceiver *dest) + + + + + Description + + + SPI_execute_plan_with_receiver executes a statement + prepared by SPI_prepare. This function is + equivalent to SPI_execute_plan_with_paramlist + except that, instead of always accumulating the result tuples into a + SPI_tuptable structure, tuples can be passed to a + caller-supplied DestReceiver object as they are + generated by the executor. This is particularly helpful for queries + that might generate many tuples, since the data can be processed + on-the-fly instead of being accumulated in memory. + + + + + Arguments + + + + SPIPlanPtr plan + + + prepared statement (returned by SPI_prepare) + + + + + + ParamListInfo params + + + data structure containing parameter types and values; NULL if none + + + + + + bool read_only + + true for read-only execution + + + + + long count + + + maximum number of rows to return, + or 0 for no limit + + + + + + DestReceiver * dest + + + DestReceiver object that will receive any tuples + emitted by the query; if NULL, this function is exactly equivalent to + SPI_execute_plan_with_paramlist + + + + + + + + Return Value + + + The return value is the same as for SPI_execute_plan. + + + + When dest is NULL, + SPI_processed and + SPI_tuptable are set as in + SPI_execute_plan. + When dest is not NULL, + SPI_processed is set to zero and + SPI_tuptable is set to NULL. If a tuple count + is required, the caller's DestReceiver object must + calculate it. + + + + + + SPI_execp @@ -2041,6 +2282,114 @@ Portal SPI_cursor_open_with_paramlist(const char *name, + + SPI_cursor_parse_open_with_paramlist + + + SPI_cursor_parse_open_with_paramlist + 3 + + + + SPI_cursor_parse_open_with_paramlist + set up a cursor using a query and parameters + + + + +Portal SPI_cursor_parse_open_with_paramlist(const char *name, + const char *command, + ParamListInfo params, + bool read_only, + int cursorOptions) + + + + + Description + + + SPI_cursor_parse_open_with_paramlist sets up a cursor + (internally, a portal) that will execute the specified query. This + function is equivalent to SPI_cursor_open_with_args + except that any parameters referenced by the query are provided by + a ParamListInfo object, rather than in ad-hoc arrays. + + + + The params object should normally mark each + parameter with the PARAM_FLAG_CONST flag, since + a one-shot plan is always used for the query. + + + + The passed-in parameter data will be copied into the cursor's portal, so it + can be freed while the cursor still exists. + + + + + Arguments + + + + const char * name + + + name for portal, or NULL to let the system + select a name + + + + + + const char * command + + + command string + + + + + + ParamListInfo params + + + data structure containing parameter types and values; NULL if none + + + + + + bool read_only + + true for read-only execution + + + + + int cursorOptions + + + integer bit mask of cursor options; zero produces default behavior + + + + + + + + Return Value + + + Pointer to portal containing the cursor. Note there is no error + return convention; any error will be reported via elog. + + + + + + SPI_cursor_find diff --git a/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgml index ea08d0b6149fe..3234adb639f58 100644 --- a/doc/src/sgml/storage.sgml +++ b/doc/src/sgml/storage.sgml @@ -301,7 +301,7 @@ where PPP is the PID of the owning backend and - + TOAST diff --git a/doc/src/sgml/textsearch.sgml b/doc/src/sgml/textsearch.sgml index b084a1853b8ee..5bc57cd137ad2 100644 --- a/doc/src/sgml/textsearch.sgml +++ b/doc/src/sgml/textsearch.sgml @@ -3837,6 +3837,8 @@ Parser: "pg_catalog.default" Schema | Name | Description ------------+-----------------+----------------------------------------------------------- pg_catalog | arabic_stem | snowball stemmer for arabic language + pg_catalog | basque_stem | snowball stemmer for basque language + pg_catalog | catalan_stem | snowball stemmer for catalan language pg_catalog | danish_stem | snowball stemmer for danish language pg_catalog | dutch_stem | snowball stemmer for dutch language pg_catalog | english_stem | snowball stemmer for english language @@ -3844,6 +3846,7 @@ Parser: "pg_catalog.default" pg_catalog | french_stem | snowball stemmer for french language pg_catalog | german_stem | snowball stemmer for german language pg_catalog | greek_stem | snowball stemmer for greek language + pg_catalog | hindi_stem | snowball stemmer for hindi language pg_catalog | hungarian_stem | snowball stemmer for hungarian language pg_catalog | indonesian_stem | snowball stemmer for indonesian language pg_catalog | irish_stem | snowball stemmer for irish language diff --git a/doc/src/sgml/vacuumlo.sgml b/doc/src/sgml/vacuumlo.sgml index e0dc748e0906f..26b764d54b7d0 100644 --- a/doc/src/sgml/vacuumlo.sgml +++ b/doc/src/sgml/vacuumlo.sgml @@ -1,6 +1,6 @@ - + vacuumlo diff --git a/src/backend/access/common/printsimple.c b/src/backend/access/common/printsimple.c index 0f0b54bdae37d..df27700df92a2 100644 --- a/src/backend/access/common/printsimple.c +++ b/src/backend/access/common/printsimple.c @@ -103,9 +103,10 @@ printsimple(TupleTableSlot *slot, DestReceiver *self) { int32 num = DatumGetInt32(value); char str[12]; /* sign, 10 digits and '\0' */ + int len; - pg_ltoa(num, str); - pq_sendcountedtext(&buf, str, strlen(str), false); + len = pg_ltoa(num, str); + pq_sendcountedtext(&buf, str, len, false); } break; @@ -113,9 +114,10 @@ printsimple(TupleTableSlot *slot, DestReceiver *self) { int64 num = DatumGetInt64(value); char str[MAXINT8LEN + 1]; + int len; - pg_lltoa(num, str); - pq_sendcountedtext(&buf, str, strlen(str), false); + len = pg_lltoa(num, str); + pq_sendcountedtext(&buf, str, len, false); } break; diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 94eb37d48d2a4..537913d1bb3e3 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8975,15 +8975,13 @@ heap_mask(char *pagedata, BlockNumber blkno) /* * HeapCheckForSerializableConflictOut - * We are reading a tuple which has been modified. If it is visible to - * us but has been deleted, that indicates a rw-conflict out. If it's - * not visible and was created by a concurrent (overlapping) - * serializable transaction, that is also a rw-conflict out, + * We are reading a tuple. If it's not visible, there may be a + * rw-conflict out with the inserter. Otherwise, if it is visible to us + * but has been deleted, there may be a rw-conflict out with the deleter. * * We will determine the top level xid of the writing transaction with which - * we may be in conflict, and check for overlap with our own transaction. - * If the transactions overlap (i.e., they cannot see each other's writes), - * then we have a conflict out. + * we may be in conflict, and ask CheckForSerializableConflictOut() to check + * for overlap with our own transaction. * * This function should be called just about anywhere in heapam.c where a * tuple has been read. The caller must hold at least a shared lock on the @@ -9007,6 +9005,10 @@ HeapCheckForSerializableConflictOut(bool visible, Relation relation, * while it is visible to us. The "visible" bool indicates whether the * tuple is visible to us, while HeapTupleSatisfiesVacuum checks what else * is going on with it. + * + * In the event of a concurrently inserted tuple that also happens to have + * been concurrently updated (by a separate transaction), the xmin of the + * tuple will be used -- not the updater's xid. */ htsvResult = HeapTupleSatisfiesVacuum(tuple, TransactionXmin, buffer); switch (htsvResult) @@ -9017,17 +9019,24 @@ HeapCheckForSerializableConflictOut(bool visible, Relation relation, xid = HeapTupleHeaderGetXmin(tuple->t_data); break; case HEAPTUPLE_RECENTLY_DEAD: - if (!visible) - return; - xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); - break; case HEAPTUPLE_DELETE_IN_PROGRESS: - xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); + if (visible) + xid = HeapTupleHeaderGetUpdateXid(tuple->t_data); + else + xid = HeapTupleHeaderGetXmin(tuple->t_data); + + if (TransactionIdPrecedes(xid, TransactionXmin)) + { + /* This is like the HEAPTUPLE_DEAD case */ + Assert(!visible); + return; + } break; case HEAPTUPLE_INSERT_IN_PROGRESS: xid = HeapTupleHeaderGetXmin(tuple->t_data); break; case HEAPTUPLE_DEAD: + Assert(!visible); return; default: diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index a36b35010e5bd..55fe16bd4e12d 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -389,7 +389,7 @@ _bt_check_unique(Relation rel, BTInsertState insertstate, Relation heapRel, uint32 *speculativeToken) { IndexTuple itup = insertstate->itup; - IndexTuple curitup; + IndexTuple curitup = NULL; ItemId curitemid; BTScanInsert itup_key = insertstate->itup_key; SnapshotData SnapshotDirty; diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index ca09d81b08cfe..55cac186dc71f 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -9743,6 +9743,8 @@ XLogReportParameters(void) XLogFlush(recptr); } + LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); + ControlFile->MaxConnections = MaxConnections; ControlFile->max_worker_processes = max_worker_processes; ControlFile->max_wal_senders = max_wal_senders; @@ -9752,6 +9754,8 @@ XLogReportParameters(void) ControlFile->wal_log_hints = wal_log_hints; ControlFile->track_commit_timestamp = track_commit_timestamp; UpdateControlFile(); + + LWLockRelease(ControlFileLock); } } @@ -9976,7 +9980,9 @@ xlog_redo(XLogReaderState *record) } /* ControlFile->checkPointCopy always tracks the latest ckpt XID */ + LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); ControlFile->checkPointCopy.nextFullXid = checkPoint.nextFullXid; + LWLockRelease(ControlFileLock); /* Update shared-memory copy of checkpoint XID/epoch */ SpinLockAcquire(&XLogCtl->info_lck); @@ -10033,7 +10039,9 @@ xlog_redo(XLogReaderState *record) SetTransactionIdLimit(checkPoint.oldestXid, checkPoint.oldestXidDB); /* ControlFile->checkPointCopy always tracks the latest ckpt XID */ + LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); ControlFile->checkPointCopy.nextFullXid = checkPoint.nextFullXid; + LWLockRelease(ControlFileLock); /* Update shared-memory copy of checkpoint XID/epoch */ SpinLockAcquire(&XLogCtl->info_lck); diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c index 5995798b585a5..cb76be4f4696f 100644 --- a/src/backend/access/transam/xlogreader.c +++ b/src/backend/access/transam/xlogreader.c @@ -44,6 +44,8 @@ static bool ValidXLogRecordHeader(XLogReaderState *state, XLogRecPtr RecPtr, static bool ValidXLogRecord(XLogReaderState *state, XLogRecord *record, XLogRecPtr recptr); static void ResetDecoder(XLogReaderState *state); +static void WALOpenSegmentInit(WALOpenSegment *seg, WALSegmentContext *segcxt, + int segsize, const char *waldir); /* size of the buffer allocated for error message. */ #define MAX_ERRORMSG_LEN 1000 @@ -210,7 +212,7 @@ allocate_recordbuf(XLogReaderState *state, uint32 reclength) /* * Initialize the passed segment structs. */ -void +static void WALOpenSegmentInit(WALOpenSegment *seg, WALSegmentContext *segcxt, int segsize, const char *waldir) { diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index cb2c4972ade94..c62616140859b 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -1498,39 +1498,6 @@ RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid) } -/* - * Remove a pg_default_acl entry - */ -void -RemoveDefaultACLById(Oid defaclOid) -{ - Relation rel; - ScanKeyData skey[1]; - SysScanDesc scan; - HeapTuple tuple; - - rel = table_open(DefaultAclRelationId, RowExclusiveLock); - - ScanKeyInit(&skey[0], - Anum_pg_default_acl_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(defaclOid)); - - scan = systable_beginscan(rel, DefaultAclOidIndexId, true, - NULL, 1, skey); - - tuple = systable_getnext(scan); - - if (!HeapTupleIsValid(tuple)) - elog(ERROR, "could not find tuple for default ACL %u", defaclOid); - - CatalogTupleDelete(rel, &tuple->t_self); - - systable_endscan(scan); - table_close(rel, RowExclusiveLock); -} - - /* * expand_col_privileges * diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index 5565e6fc197d5..b33a2f94af02a 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -66,9 +66,7 @@ #include "commands/event_trigger.h" #include "commands/extension.h" #include "commands/policy.h" -#include "commands/proclang.h" #include "commands/publicationcmds.h" -#include "commands/schemacmds.h" #include "commands/seclabel.h" #include "commands/sequence.h" #include "commands/trigger.h" @@ -1223,6 +1221,62 @@ reportDependentObjects(const ObjectAddresses *targetObjects, pfree(logdetail.data); } +/* + * Drop an object by OID. Works for most catalogs, if no special processing + * is needed. + */ +static void +DropObjectById(const ObjectAddress *object) +{ + int cacheId; + Relation rel; + HeapTuple tup; + + cacheId = get_object_catcache_oid(object->classId); + + rel = table_open(object->classId, RowExclusiveLock); + + /* + * Use the system cache for the oid column, if one exists. + */ + if (cacheId >= 0) + { + tup = SearchSysCache1(cacheId, ObjectIdGetDatum(object->objectId)); + if (!HeapTupleIsValid(tup)) + elog(ERROR, "cache lookup failed for %s %u", + get_object_class_descr(object->classId), object->objectId); + + CatalogTupleDelete(rel, &tup->t_self); + + ReleaseSysCache(tup); + } + else + { + ScanKeyData skey[1]; + SysScanDesc scan; + + ScanKeyInit(&skey[0], + get_object_attnum_oid(object->classId), + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(object->objectId)); + + scan = systable_beginscan(rel, get_object_oid_index(object->classId), true, + NULL, 1, skey); + + /* we expect exactly one match */ + tup = systable_getnext(scan); + if (!HeapTupleIsValid(tup)) + elog(ERROR, "could not find tuple for %s %u", + get_object_class_descr(object->classId), object->objectId); + + CatalogTupleDelete(rel, &tup->t_self); + + systable_endscan(scan); + } + + table_close(rel, RowExclusiveLock); +} + /* * deleteOneObject: delete a single object for performDeletion. * @@ -1376,30 +1430,14 @@ doDeletion(const ObjectAddress *object, int flags) RemoveTypeById(object->objectId); break; - case OCLASS_CAST: - DropCastById(object->objectId); - break; - - case OCLASS_COLLATION: - RemoveCollationById(object->objectId); - break; - case OCLASS_CONSTRAINT: RemoveConstraintById(object->objectId); break; - case OCLASS_CONVERSION: - RemoveConversionById(object->objectId); - break; - case OCLASS_DEFAULT: RemoveAttrDefaultById(object->objectId); break; - case OCLASS_LANGUAGE: - DropProceduralLanguageById(object->objectId); - break; - case OCLASS_LARGEOBJECT: LargeObjectDrop(object->objectId); break; @@ -1408,26 +1446,6 @@ doDeletion(const ObjectAddress *object, int flags) RemoveOperatorById(object->objectId); break; - case OCLASS_OPCLASS: - RemoveOpClassById(object->objectId); - break; - - case OCLASS_OPFAMILY: - RemoveOpFamilyById(object->objectId); - break; - - case OCLASS_AM: - RemoveAccessMethodById(object->objectId); - break; - - case OCLASS_AMOP: - RemoveAmOpEntryById(object->objectId); - break; - - case OCLASS_AMPROC: - RemoveAmProcEntryById(object->objectId); - break; - case OCLASS_REWRITE: RemoveRewriteRuleById(object->objectId); break; @@ -1436,73 +1454,47 @@ doDeletion(const ObjectAddress *object, int flags) RemoveTriggerById(object->objectId); break; - case OCLASS_SCHEMA: - RemoveSchemaById(object->objectId); - break; - case OCLASS_STATISTIC_EXT: RemoveStatisticsById(object->objectId); break; - case OCLASS_TSPARSER: - RemoveTSParserById(object->objectId); - break; - - case OCLASS_TSDICT: - RemoveTSDictionaryById(object->objectId); - break; - - case OCLASS_TSTEMPLATE: - RemoveTSTemplateById(object->objectId); - break; - case OCLASS_TSCONFIG: RemoveTSConfigurationById(object->objectId); break; - /* - * OCLASS_ROLE, OCLASS_DATABASE, OCLASS_TBLSPACE intentionally not - * handled here - */ - - case OCLASS_FDW: - RemoveForeignDataWrapperById(object->objectId); - break; - - case OCLASS_FOREIGN_SERVER: - RemoveForeignServerById(object->objectId); - break; - - case OCLASS_USER_MAPPING: - RemoveUserMappingById(object->objectId); - break; - - case OCLASS_DEFACL: - RemoveDefaultACLById(object->objectId); - break; - case OCLASS_EXTENSION: RemoveExtensionById(object->objectId); break; - case OCLASS_EVENT_TRIGGER: - RemoveEventTriggerById(object->objectId); - break; - case OCLASS_POLICY: RemovePolicyById(object->objectId); break; - case OCLASS_PUBLICATION: - RemovePublicationById(object->objectId); - break; - case OCLASS_PUBLICATION_REL: RemovePublicationRelById(object->objectId); break; + case OCLASS_CAST: + case OCLASS_COLLATION: + case OCLASS_CONVERSION: + case OCLASS_LANGUAGE: + case OCLASS_OPCLASS: + case OCLASS_OPFAMILY: + case OCLASS_AM: + case OCLASS_AMOP: + case OCLASS_AMPROC: + case OCLASS_SCHEMA: + case OCLASS_TSPARSER: + case OCLASS_TSDICT: + case OCLASS_TSTEMPLATE: + case OCLASS_FDW: + case OCLASS_FOREIGN_SERVER: + case OCLASS_USER_MAPPING: + case OCLASS_DEFACL: + case OCLASS_EVENT_TRIGGER: + case OCLASS_PUBLICATION: case OCLASS_TRANSFORM: - DropTransformById(object->objectId); + DropObjectById(object); break; /* diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index e393c93a45214..9c45544815623 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -1943,13 +1943,8 @@ heap_drop_with_catalog(Oid relid) /* * Schedule unlinking of the relation's physical files at commit. */ - if (rel->rd_rel->relkind != RELKIND_VIEW && - rel->rd_rel->relkind != RELKIND_COMPOSITE_TYPE && - rel->rd_rel->relkind != RELKIND_FOREIGN_TABLE && - rel->rd_rel->relkind != RELKIND_PARTITIONED_TABLE) - { + if (RELKIND_HAS_STORAGE(rel->rd_rel->relkind)) RelationDropStorage(rel); - } /* * Close relcache entry, but *keep* AccessExclusiveLock on the relation diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index 84463f76fc9d5..534df8e802084 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -97,6 +97,7 @@ */ typedef struct { + const char *class_descr; /* string describing the catalog, for internal error messages */ Oid class_oid; /* oid of catalog */ Oid oid_index_oid; /* oid of index on system oid column */ int oid_catcache_id; /* id of catcache on system oid column */ @@ -118,6 +119,7 @@ typedef struct static const ObjectPropertyType ObjectProperty[] = { { + "access method", AccessMethodRelationId, AmOidIndexId, AMOID, @@ -131,6 +133,35 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "access method operator", + AccessMethodOperatorRelationId, + AccessMethodOperatorOidIndexId, + -1, + -1, + Anum_pg_amop_oid, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + OBJECT_AMOP, + false + }, + { + "access method procedure", + AccessMethodProcedureRelationId, + AccessMethodProcedureOidIndexId, + -1, + -1, + Anum_pg_amproc_oid, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + OBJECT_AMPROC, + false + }, + { + "cast", CastRelationId, CastOidIndexId, -1, @@ -144,6 +175,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "collation", CollationRelationId, CollationOidIndexId, COLLOID, @@ -157,6 +189,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "constraint", ConstraintRelationId, ConstraintOidIndexId, CONSTROID, @@ -170,6 +203,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "conversion", ConversionRelationId, ConversionOidIndexId, CONVOID, @@ -183,6 +217,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "database", DatabaseRelationId, DatabaseOidIndexId, DATABASEOID, @@ -196,6 +231,21 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "default ACL", + DefaultAclRelationId, + DefaultAclOidIndexId, + -1, + -1, + Anum_pg_default_acl_oid, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + OBJECT_DEFACL, + false + }, + { + "extension", ExtensionRelationId, ExtensionOidIndexId, -1, @@ -209,6 +259,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "foreign-data wrapper", ForeignDataWrapperRelationId, ForeignDataWrapperOidIndexId, FOREIGNDATAWRAPPEROID, @@ -222,6 +273,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "foreign server", ForeignServerRelationId, ForeignServerOidIndexId, FOREIGNSERVEROID, @@ -235,6 +287,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "function", ProcedureRelationId, ProcedureOidIndexId, PROCOID, @@ -248,6 +301,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "language", LanguageRelationId, LanguageOidIndexId, LANGOID, @@ -261,6 +315,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "large object metadata", LargeObjectMetadataRelationId, LargeObjectMetadataOidIndexId, -1, @@ -274,6 +329,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "operator class", OperatorClassRelationId, OpclassOidIndexId, CLAOID, @@ -287,6 +343,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "operator", OperatorRelationId, OperatorOidIndexId, OPEROID, @@ -300,6 +357,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "operator family", OperatorFamilyRelationId, OpfamilyOidIndexId, OPFAMILYOID, @@ -313,6 +371,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "role", AuthIdRelationId, AuthIdOidIndexId, AUTHOID, @@ -326,6 +385,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "rule", RewriteRelationId, RewriteOidIndexId, -1, @@ -339,6 +399,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "schema", NamespaceRelationId, NamespaceOidIndexId, NAMESPACEOID, @@ -352,6 +413,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "relation", RelationRelationId, ClassOidIndexId, RELOID, @@ -365,6 +427,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "tablespace", TableSpaceRelationId, TablespaceOidIndexId, TABLESPACEOID, @@ -378,6 +441,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "transform", TransformRelationId, TransformOidIndexId, TRFOID, @@ -385,6 +449,7 @@ static const ObjectPropertyType ObjectProperty[] = Anum_pg_transform_oid }, { + "trigger", TriggerRelationId, TriggerOidIndexId, -1, @@ -398,6 +463,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "policy", PolicyRelationId, PolicyOidIndexId, -1, @@ -411,6 +477,7 @@ static const ObjectPropertyType ObjectProperty[] = false }, { + "event trigger", EventTriggerRelationId, EventTriggerOidIndexId, EVENTTRIGGEROID, @@ -424,6 +491,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "text search configuration", TSConfigRelationId, TSConfigOidIndexId, TSCONFIGOID, @@ -437,6 +505,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "text search dictionary", TSDictionaryRelationId, TSDictionaryOidIndexId, TSDICTOID, @@ -450,6 +519,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "text search parser", TSParserRelationId, TSParserOidIndexId, TSPARSEROID, @@ -463,6 +533,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "text search template", TSTemplateRelationId, TSTemplateOidIndexId, TSTEMPLATEOID, @@ -476,6 +547,7 @@ static const ObjectPropertyType ObjectProperty[] = true, }, { + "type", TypeRelationId, TypeOidIndexId, TYPEOID, @@ -489,6 +561,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "publication", PublicationRelationId, PublicationObjectIndexId, PUBLICATIONOID, @@ -502,6 +575,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "subscription", SubscriptionRelationId, SubscriptionObjectIndexId, SUBSCRIPTIONOID, @@ -515,6 +589,7 @@ static const ObjectPropertyType ObjectProperty[] = true }, { + "extented statistics", StatisticExtRelationId, StatisticExtOidIndexId, STATEXTOID, @@ -526,7 +601,21 @@ static const ObjectPropertyType ObjectProperty[] = InvalidAttrNumber, /* no ACL (same as relation) */ OBJECT_STATISTIC_EXT, true - } + }, + { + "user mapping", + UserMappingRelationId, + UserMappingOidIndexId, + USERMAPPINGOID, + -1, + Anum_pg_user_mapping_oid, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + InvalidAttrNumber, + OBJECT_USER_MAPPING, + false + }, }; /* @@ -2549,6 +2638,14 @@ read_objtype_from_string(const char *objtype) /* * Interfaces to reference fields of ObjectPropertyType */ +const char * +get_object_class_descr(Oid class_id) +{ + const ObjectPropertyType *prop = get_object_property_data(class_id); + + return prop->class_descr; +} + Oid get_object_oid_index(Oid class_id) { diff --git a/src/backend/catalog/pg_collation.c b/src/backend/catalog/pg_collation.c index 8559779a4f37b..5fdf1acb7e5b3 100644 --- a/src/backend/catalog/pg_collation.c +++ b/src/backend/catalog/pg_collation.c @@ -203,39 +203,3 @@ CollationCreate(const char *collname, Oid collnamespace, return oid; } - -/* - * RemoveCollationById - * - * Remove a tuple from pg_collation by Oid. This function is solely - * called inside catalog/dependency.c - */ -void -RemoveCollationById(Oid collationOid) -{ - Relation rel; - ScanKeyData scanKeyData; - SysScanDesc scandesc; - HeapTuple tuple; - - rel = table_open(CollationRelationId, RowExclusiveLock); - - ScanKeyInit(&scanKeyData, - Anum_pg_collation_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(collationOid)); - - scandesc = systable_beginscan(rel, CollationOidIndexId, true, - NULL, 1, &scanKeyData); - - tuple = systable_getnext(scandesc); - - if (HeapTupleIsValid(tuple)) - CatalogTupleDelete(rel, &tuple->t_self); - else - elog(ERROR, "could not find tuple for collation %u", collationOid); - - systable_endscan(scandesc); - - table_close(rel, RowExclusiveLock); -} diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c index b38df4f696ea8..28b676a1fa843 100644 --- a/src/backend/catalog/pg_conversion.c +++ b/src/backend/catalog/pg_conversion.c @@ -142,39 +142,6 @@ ConversionCreate(const char *conname, Oid connamespace, return myself; } -/* - * RemoveConversionById - * - * Remove a tuple from pg_conversion by Oid. This function is solely - * called inside catalog/dependency.c - */ -void -RemoveConversionById(Oid conversionOid) -{ - Relation rel; - HeapTuple tuple; - TableScanDesc scan; - ScanKeyData scanKeyData; - - ScanKeyInit(&scanKeyData, - Anum_pg_conversion_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(conversionOid)); - - /* open pg_conversion */ - rel = table_open(ConversionRelationId, RowExclusiveLock); - - scan = table_beginscan_catalog(rel, 1, &scanKeyData); - - /* search for the target tuple */ - if (HeapTupleIsValid(tuple = heap_getnext(scan, ForwardScanDirection))) - CatalogTupleDelete(rel, &tuple->t_self); - else - elog(ERROR, "could not find tuple for conversion %u", conversionOid); - table_endscan(scan); - table_close(rel, RowExclusiveLock); -} - /* * FindDefaultConversion * diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 56420bbc9d6f1..5aeadfab7561a 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -1093,6 +1093,21 @@ CREATE VIEW pg_stat_progress_basebackup AS S.param5 AS tablespaces_streamed FROM pg_stat_get_progress_info('BASEBACKUP') AS S; +CREATE VIEW pg_stat_progress_copy AS + SELECT + S.pid AS pid, S.datid AS datid, D.datname AS datname, + S.relid AS relid, + CASE S.param1 WHEN 0 THEN 'TO' + WHEN 1 THEN 'FROM' + END as direction, + CAST (S.param2 AS bool) AS file, + CAST (S.param3 AS bool) AS program, + S.param4 AS lines_processed, + S.param5 AS file_bytes_processed + FROM pg_stat_get_progress_info('COPY') AS S + LEFT JOIN pg_database D ON S.datid = D.oid; + + CREATE VIEW pg_user_mappings AS SELECT U.oid AS umid, diff --git a/src/backend/commands/amcmds.c b/src/backend/commands/amcmds.c index b884bfa0b003a..6f05ee715b480 100644 --- a/src/backend/commands/amcmds.c +++ b/src/backend/commands/amcmds.c @@ -115,33 +115,6 @@ CreateAccessMethod(CreateAmStmt *stmt) return myself; } -/* - * Guts of access method deletion. - */ -void -RemoveAccessMethodById(Oid amOid) -{ - Relation relation; - HeapTuple tup; - - if (!superuser()) - ereport(ERROR, - (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("must be superuser to drop access methods"))); - - relation = table_open(AccessMethodRelationId, RowExclusiveLock); - - tup = SearchSysCache1(AMOID, ObjectIdGetDatum(amOid)); - if (!HeapTupleIsValid(tup)) - elog(ERROR, "cache lookup failed for access method %u", amOid); - - CatalogTupleDelete(relation, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(relation, RowExclusiveLock); -} - /* * get_am_type_oid * Worker for various get_am_*_oid variants diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 6d53dc463c185..8823d0c035811 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -29,6 +29,7 @@ #include "catalog/pg_type.h" #include "commands/copy.h" #include "commands/defrem.h" +#include "commands/progress.h" #include "commands/trigger.h" #include "executor/execPartition.h" #include "executor/executor.h" @@ -45,6 +46,7 @@ #include "parser/parse_collate.h" #include "parser/parse_expr.h" #include "parser/parse_relation.h" +#include "pgstat.h" #include "port/pg_bswap.h" #include "rewrite/rewriteHandler.h" #include "storage/fd.h" @@ -563,7 +565,9 @@ CopySendEndOfRow(CopyState cstate) ereport(ERROR, (errcode_for_file_access(), errmsg("could not write to COPY file: %m"))); + } + pgstat_progress_update_param(PROGRESS_COPY_BYTES_PROCESSED, ftell(cstate->copy_file)); break; case COPY_OLD_FE: /* The FE/BE protocol uses \n as newline for all platforms */ @@ -616,6 +620,7 @@ CopyGetData(CopyState cstate, void *databuf, int minread, int maxread) { case COPY_FILE: bytesread = fread(databuf, 1, maxread, cstate->copy_file); + pgstat_progress_update_param(PROGRESS_COPY_BYTES_PROCESSED, ftell(cstate->copy_file)); if (ferror(cstate->copy_file)) ereport(ERROR, (errcode_for_file_access(), @@ -1752,6 +1757,13 @@ BeginCopy(ParseState *pstate, cstate->copy_dest = COPY_FILE; /* default */ + pgstat_progress_start_command(PROGRESS_COMMAND_COPY, cstate->rel ? RelationGetRelid(cstate->rel) : InvalidOid); + + pgstat_progress_update_param(PROGRESS_COPY_BYTES_PROCESSED, 0); + pgstat_progress_update_param(PROGRESS_COPY_IS_FROM, (int) cstate->is_copy_from); + pgstat_progress_update_param(PROGRESS_COPY_IS_FILE, (int) cstate->copy_dest == COPY_FILE); + pgstat_progress_update_param(PROGRESS_COPY_IS_PROGRAM, (int) cstate->is_program); + MemoryContextSwitchTo(oldcontext); return cstate; @@ -1811,6 +1823,8 @@ EndCopy(CopyState cstate) cstate->filename))); } + pgstat_progress_end_command(); + MemoryContextDelete(cstate->copycontext); pfree(cstate); } @@ -2123,7 +2137,7 @@ CopyTo(CopyState cstate) /* Format and send the data */ CopyOneRowTo(cstate, slot); - processed++; + pgstat_progress_update_param(PROGRESS_COPY_LINES_PROCESSED, ++processed); } ExecDropSingleTupleTableSlot(slot); @@ -3262,7 +3276,7 @@ CopyFrom(CopyState cstate) * or FDW; this is the same definition used by nodeModifyTable.c * for counting tuples inserted by an INSERT command. */ - processed++; + pgstat_progress_update_param(PROGRESS_COPY_LINES_PROCESSED, ++processed); } } @@ -5119,7 +5133,7 @@ copy_dest_receive(TupleTableSlot *slot, DestReceiver *self) /* Send the data */ CopyOneRowTo(cstate, slot); - myState->processed++; + pgstat_progress_update_param(PROGRESS_COPY_LINES_PROCESSED, ++myState->processed); return true; } diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c index 02ab40eaac757..151cdfff39d22 100644 --- a/src/backend/commands/event_trigger.c +++ b/src/backend/commands/event_trigger.c @@ -355,28 +355,6 @@ filter_list_to_array(List *filterlist) -1, false, TYPALIGN_INT)); } -/* - * Guts of event trigger deletion. - */ -void -RemoveEventTriggerById(Oid trigOid) -{ - Relation tgrel; - HeapTuple tup; - - tgrel = table_open(EventTriggerRelationId, RowExclusiveLock); - - tup = SearchSysCache1(EVENTTRIGGEROID, ObjectIdGetDatum(trigOid)); - if (!HeapTupleIsValid(tup)) - elog(ERROR, "cache lookup failed for event trigger %u", trigOid); - - CatalogTupleDelete(tgrel, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(tgrel, RowExclusiveLock); -} - /* * ALTER EVENT TRIGGER foo ENABLE|DISABLE|ENABLE ALWAYS|REPLICA */ diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index efd7201d61176..9092b4b309443 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -4238,7 +4238,7 @@ ExplainOpenGroup(const char *objtype, const char *labelname, /* * In YAML format, the grouping stack is an integer list. 0 means * we've emitted nothing at this grouping level AND this grouping - * level is unlabelled and must be marked with "- ". See + * level is unlabeled and must be marked with "- ". See * ExplainYAMLLineStarting(). */ ExplainYAMLLineStarting(es); @@ -4601,7 +4601,7 @@ ExplainJSONLineEnding(ExplainState *es) * * YAML lines are ordinarily indented by two spaces per indentation level. * The text emitted for each property begins just prior to the preceding - * line-break, except for the first property in an unlabelled group, for which + * line-break, except for the first property in an unlabeled group, for which * it begins immediately after the "- " that introduces the group. The first * property of the group appears on the same line as the opening "- ". */ diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index 9b669d95b80e0..472e69fdaf97b 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -3269,6 +3269,25 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt, Relation relation; Oid oldExtension; + switch (stmt->objtype) + { + case OBJECT_DATABASE: + case OBJECT_EXTENSION: + case OBJECT_INDEX: + case OBJECT_PUBLICATION: + case OBJECT_ROLE: + case OBJECT_STATISTIC_EXT: + case OBJECT_SUBSCRIPTION: + case OBJECT_TABLESPACE: + ereport(ERROR, + (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("cannot add an object of this type to an extension"))); + break; + default: + /* OK */ + break; + } + extension.classId = ExtensionRelationId; extension.objectId = get_extension_oid(stmt->extname, false); extension.objectSubId = 0; diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index a399ab4de9c67..de31ddd1f38cd 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -835,30 +835,6 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) } -/* - * Drop foreign-data wrapper by OID - */ -void -RemoveForeignDataWrapperById(Oid fdwId) -{ - HeapTuple tp; - Relation rel; - - rel = table_open(ForeignDataWrapperRelationId, RowExclusiveLock); - - tp = SearchSysCache1(FOREIGNDATAWRAPPEROID, ObjectIdGetDatum(fdwId)); - - if (!HeapTupleIsValid(tp)) - elog(ERROR, "cache lookup failed for foreign-data wrapper %u", fdwId); - - CatalogTupleDelete(rel, &tp->t_self); - - ReleaseSysCache(tp); - - table_close(rel, RowExclusiveLock); -} - - /* * Create a foreign server */ @@ -1085,30 +1061,6 @@ AlterForeignServer(AlterForeignServerStmt *stmt) } -/* - * Drop foreign server by OID - */ -void -RemoveForeignServerById(Oid srvId) -{ - HeapTuple tp; - Relation rel; - - rel = table_open(ForeignServerRelationId, RowExclusiveLock); - - tp = SearchSysCache1(FOREIGNSERVEROID, ObjectIdGetDatum(srvId)); - - if (!HeapTupleIsValid(tp)) - elog(ERROR, "cache lookup failed for foreign server %u", srvId); - - CatalogTupleDelete(rel, &tp->t_self); - - ReleaseSysCache(tp); - - table_close(rel, RowExclusiveLock); -} - - /* * Common routine to check permission for user-mapping-related DDL * commands. We allow server owners to operate on any mapping, and @@ -1435,29 +1387,6 @@ RemoveUserMapping(DropUserMappingStmt *stmt) } -/* - * Drop user mapping by OID. This is called to clean up dependencies. - */ -void -RemoveUserMappingById(Oid umId) -{ - HeapTuple tp; - Relation rel; - - rel = table_open(UserMappingRelationId, RowExclusiveLock); - - tp = SearchSysCache1(USERMAPPINGOID, ObjectIdGetDatum(umId)); - - if (!HeapTupleIsValid(tp)) - elog(ERROR, "cache lookup failed for user mapping %u", umId); - - CatalogTupleDelete(rel, &tp->t_self); - - ReleaseSysCache(tp); - - table_close(rel, RowExclusiveLock); -} - /* * Create a foreign table * call after DefineRelation(). diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index bb918388842e7..1b5bdcec8b87f 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -1646,32 +1646,6 @@ CreateCast(CreateCastStmt *stmt) return myself; } -void -DropCastById(Oid castOid) -{ - Relation relation; - ScanKeyData scankey; - SysScanDesc scan; - HeapTuple tuple; - - relation = table_open(CastRelationId, RowExclusiveLock); - - ScanKeyInit(&scankey, - Anum_pg_cast_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(castOid)); - scan = systable_beginscan(relation, CastOidIndexId, true, - NULL, 1, &scankey); - - tuple = systable_getnext(scan); - if (!HeapTupleIsValid(tuple)) - elog(ERROR, "could not find tuple for cast %u", castOid); - CatalogTupleDelete(relation, &tuple->t_self); - - systable_endscan(scan); - table_close(relation, RowExclusiveLock); -} - static void check_transform_function(Form_pg_proc procstruct) @@ -1933,33 +1907,6 @@ get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok) } -void -DropTransformById(Oid transformOid) -{ - Relation relation; - ScanKeyData scankey; - SysScanDesc scan; - HeapTuple tuple; - - relation = table_open(TransformRelationId, RowExclusiveLock); - - ScanKeyInit(&scankey, - Anum_pg_transform_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(transformOid)); - scan = systable_beginscan(relation, TransformOidIndexId, true, - NULL, 1, &scankey); - - tuple = systable_getnext(scan); - if (!HeapTupleIsValid(tuple)) - elog(ERROR, "could not find tuple for transform %u", transformOid); - CatalogTupleDelete(relation, &tuple->t_self); - - systable_endscan(scan); - table_close(relation, RowExclusiveLock); -} - - /* * Subroutine for ALTER FUNCTION/AGGREGATE SET SCHEMA/RENAME * diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c index 7d44d3a049b9e..351866f9f22a6 100644 --- a/src/backend/commands/opclasscmds.c +++ b/src/backend/commands/opclasscmds.c @@ -1657,105 +1657,6 @@ dropProcedures(List *opfamilyname, Oid amoid, Oid opfamilyoid, } } -/* - * Deletion subroutines for use by dependency.c. - */ -void -RemoveOpFamilyById(Oid opfamilyOid) -{ - Relation rel; - HeapTuple tup; - - rel = table_open(OperatorFamilyRelationId, RowExclusiveLock); - - tup = SearchSysCache1(OPFAMILYOID, ObjectIdGetDatum(opfamilyOid)); - if (!HeapTupleIsValid(tup)) /* should not happen */ - elog(ERROR, "cache lookup failed for opfamily %u", opfamilyOid); - - CatalogTupleDelete(rel, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(rel, RowExclusiveLock); -} - -void -RemoveOpClassById(Oid opclassOid) -{ - Relation rel; - HeapTuple tup; - - rel = table_open(OperatorClassRelationId, RowExclusiveLock); - - tup = SearchSysCache1(CLAOID, ObjectIdGetDatum(opclassOid)); - if (!HeapTupleIsValid(tup)) /* should not happen */ - elog(ERROR, "cache lookup failed for opclass %u", opclassOid); - - CatalogTupleDelete(rel, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(rel, RowExclusiveLock); -} - -void -RemoveAmOpEntryById(Oid entryOid) -{ - Relation rel; - HeapTuple tup; - ScanKeyData skey[1]; - SysScanDesc scan; - - ScanKeyInit(&skey[0], - Anum_pg_amop_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(entryOid)); - - rel = table_open(AccessMethodOperatorRelationId, RowExclusiveLock); - - scan = systable_beginscan(rel, AccessMethodOperatorOidIndexId, true, - NULL, 1, skey); - - /* we expect exactly one match */ - tup = systable_getnext(scan); - if (!HeapTupleIsValid(tup)) - elog(ERROR, "could not find tuple for amop entry %u", entryOid); - - CatalogTupleDelete(rel, &tup->t_self); - - systable_endscan(scan); - table_close(rel, RowExclusiveLock); -} - -void -RemoveAmProcEntryById(Oid entryOid) -{ - Relation rel; - HeapTuple tup; - ScanKeyData skey[1]; - SysScanDesc scan; - - ScanKeyInit(&skey[0], - Anum_pg_amproc_oid, - BTEqualStrategyNumber, F_OIDEQ, - ObjectIdGetDatum(entryOid)); - - rel = table_open(AccessMethodProcedureRelationId, RowExclusiveLock); - - scan = systable_beginscan(rel, AccessMethodProcedureOidIndexId, true, - NULL, 1, skey); - - /* we expect exactly one match */ - tup = systable_getnext(scan); - if (!HeapTupleIsValid(tup)) - elog(ERROR, "could not find tuple for amproc entry %u", entryOid); - - CatalogTupleDelete(rel, &tup->t_self); - - systable_endscan(scan); - table_close(rel, RowExclusiveLock); -} - /* * Subroutine for ALTER OPERATOR CLASS SET SCHEMA/RENAME * diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c index 6a2c233615795..e4b7483e32184 100644 --- a/src/backend/commands/portalcmds.c +++ b/src/backend/commands/portalcmds.c @@ -383,7 +383,9 @@ PersistHoldablePortal(Portal portal) SetTuplestoreDestReceiverParams(queryDesc->dest, portal->holdStore, portal->holdContext, - true); + true, + NULL, + NULL); /* Fetch the result set into the tuplestore */ ExecutorRun(queryDesc, ForwardScanDirection, 0L, false); diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index 21ceeb7e9a113..14153426bddaf 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -218,28 +218,6 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) return myself; } -/* - * Guts of language dropping. - */ -void -DropProceduralLanguageById(Oid langOid) -{ - Relation rel; - HeapTuple langTup; - - rel = table_open(LanguageRelationId, RowExclusiveLock); - - langTup = SearchSysCache1(LANGOID, ObjectIdGetDatum(langOid)); - if (!HeapTupleIsValid(langTup)) /* should not happen */ - elog(ERROR, "cache lookup failed for language %u", langOid); - - CatalogTupleDelete(rel, &langTup->t_self); - - ReleaseSysCache(langTup); - - table_close(rel, RowExclusiveLock); -} - /* * get_language_oid - given a language name, look up the OID * diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c index a5e29b5a82742..eabbc7473bbf1 100644 --- a/src/backend/commands/publicationcmds.c +++ b/src/backend/commands/publicationcmds.c @@ -468,29 +468,6 @@ AlterPublication(AlterPublicationStmt *stmt) table_close(rel, RowExclusiveLock); } -/* - * Drop publication by OID - */ -void -RemovePublicationById(Oid pubid) -{ - Relation rel; - HeapTuple tup; - - rel = table_open(PublicationRelationId, RowExclusiveLock); - - tup = SearchSysCache1(PUBLICATIONOID, ObjectIdGetDatum(pubid)); - - if (!HeapTupleIsValid(tup)) - elog(ERROR, "cache lookup failed for publication %u", pubid); - - CatalogTupleDelete(rel, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(rel, RowExclusiveLock); -} - /* * Remove relation from publication by mapping OID. */ diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c index 1e6e731eb5801..3013862528885 100644 --- a/src/backend/commands/schemacmds.c +++ b/src/backend/commands/schemacmds.c @@ -210,29 +210,6 @@ CreateSchemaCommand(CreateSchemaStmt *stmt, const char *queryString, return namespaceId; } -/* - * Guts of schema deletion. - */ -void -RemoveSchemaById(Oid schemaOid) -{ - Relation relation; - HeapTuple tup; - - relation = table_open(NamespaceRelationId, RowExclusiveLock); - - tup = SearchSysCache1(NAMESPACEOID, - ObjectIdGetDatum(schemaOid)); - if (!HeapTupleIsValid(tup)) /* should not happen */ - elog(ERROR, "cache lookup failed for namespace %u", schemaOid); - - CatalogTupleDelete(relation, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(relation, RowExclusiveLock); -} - /* * Rename schema diff --git a/src/backend/commands/seclabel.c b/src/backend/commands/seclabel.c index b497c06f1a3e7..ee036e908795e 100644 --- a/src/backend/commands/seclabel.c +++ b/src/backend/commands/seclabel.c @@ -33,6 +33,75 @@ typedef struct static List *label_provider_list = NIL; +static bool +SecLabelSupportsObjectType(ObjectType objtype) +{ + switch (objtype) + { + case OBJECT_AGGREGATE: + case OBJECT_COLUMN: + case OBJECT_DATABASE: + case OBJECT_DOMAIN: + case OBJECT_EVENT_TRIGGER: + case OBJECT_FOREIGN_TABLE: + case OBJECT_FUNCTION: + case OBJECT_LANGUAGE: + case OBJECT_LARGEOBJECT: + case OBJECT_MATVIEW: + case OBJECT_PROCEDURE: + case OBJECT_PUBLICATION: + case OBJECT_ROLE: + case OBJECT_ROUTINE: + case OBJECT_SCHEMA: + case OBJECT_SEQUENCE: + case OBJECT_SUBSCRIPTION: + case OBJECT_TABLE: + case OBJECT_TABLESPACE: + case OBJECT_TYPE: + case OBJECT_VIEW: + return true; + + case OBJECT_ACCESS_METHOD: + case OBJECT_AMOP: + case OBJECT_AMPROC: + case OBJECT_ATTRIBUTE: + case OBJECT_CAST: + case OBJECT_COLLATION: + case OBJECT_CONVERSION: + case OBJECT_DEFAULT: + case OBJECT_DEFACL: + case OBJECT_DOMCONSTRAINT: + case OBJECT_EXTENSION: + case OBJECT_FDW: + case OBJECT_FOREIGN_SERVER: + case OBJECT_INDEX: + case OBJECT_OPCLASS: + case OBJECT_OPERATOR: + case OBJECT_OPFAMILY: + case OBJECT_POLICY: + case OBJECT_PUBLICATION_REL: + case OBJECT_RULE: + case OBJECT_STATISTIC_EXT: + case OBJECT_TABCONSTRAINT: + case OBJECT_TRANSFORM: + case OBJECT_TRIGGER: + case OBJECT_TSCONFIGURATION: + case OBJECT_TSDICTIONARY: + case OBJECT_TSPARSER: + case OBJECT_TSTEMPLATE: + case OBJECT_USER_MAPPING: + return false; + + /* + * There's intentionally no default: case here; we want the + * compiler to warn if a new ObjectType hasn't been handled above. + */ + } + + /* Shouldn't get here, but if we do, say "no support" */ + return false; +} + /* * ExecSecLabelStmt -- * @@ -83,6 +152,11 @@ ExecSecLabelStmt(SecLabelStmt *stmt) stmt->provider))); } + if (!SecLabelSupportsObjectType(stmt->objtype)) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("security labels are not supported for this type of object"))); + /* * Translate the parser representation which identifies this object into * an ObjectAddress. get_object_address() will throw an error if the diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index 9da8f7fd579f4..319a62012ed08 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -291,29 +291,6 @@ DefineTSParser(List *names, List *parameters) return address; } -/* - * Guts of TS parser deletion. - */ -void -RemoveTSParserById(Oid prsId) -{ - Relation relation; - HeapTuple tup; - - relation = table_open(TSParserRelationId, RowExclusiveLock); - - tup = SearchSysCache1(TSPARSEROID, ObjectIdGetDatum(prsId)); - - if (!HeapTupleIsValid(tup)) - elog(ERROR, "cache lookup failed for text search parser %u", prsId); - - CatalogTupleDelete(relation, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(relation, RowExclusiveLock); -} - /* ---------------------- TS Dictionary commands -----------------------*/ /* @@ -504,30 +481,6 @@ DefineTSDictionary(List *names, List *parameters) return address; } -/* - * Guts of TS dictionary deletion. - */ -void -RemoveTSDictionaryById(Oid dictId) -{ - Relation relation; - HeapTuple tup; - - relation = table_open(TSDictionaryRelationId, RowExclusiveLock); - - tup = SearchSysCache1(TSDICTOID, ObjectIdGetDatum(dictId)); - - if (!HeapTupleIsValid(tup)) - elog(ERROR, "cache lookup failed for text search dictionary %u", - dictId); - - CatalogTupleDelete(relation, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(relation, RowExclusiveLock); -} - /* * ALTER TEXT SEARCH DICTIONARY */ @@ -820,30 +773,6 @@ DefineTSTemplate(List *names, List *parameters) return address; } -/* - * Guts of TS template deletion. - */ -void -RemoveTSTemplateById(Oid tmplId) -{ - Relation relation; - HeapTuple tup; - - relation = table_open(TSTemplateRelationId, RowExclusiveLock); - - tup = SearchSysCache1(TSTEMPLATEOID, ObjectIdGetDatum(tmplId)); - - if (!HeapTupleIsValid(tup)) - elog(ERROR, "cache lookup failed for text search template %u", - tmplId); - - CatalogTupleDelete(relation, &tup->t_self); - - ReleaseSysCache(tup); - - table_close(relation, RowExclusiveLock); -} - /* ---------------------- TS Configuration commands -----------------------*/ /* diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 1ef00d6e89513..9ce9a66921845 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -43,7 +43,7 @@ Oid binary_upgrade_next_pg_authid_oid = InvalidOid; /* GUC parameter */ -int Password_encryption = PASSWORD_TYPE_MD5; +int Password_encryption = PASSWORD_TYPE_SCRAM_SHA_256; /* Hook to check passwords in CreateRole() and AlterRole() */ check_password_hook_type check_password_hook = NULL; diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index 26111327ca157..331acee281412 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -294,9 +294,6 @@ #define HASHAGG_READ_BUFFER_SIZE BLCKSZ #define HASHAGG_WRITE_BUFFER_SIZE BLCKSZ -/* minimum number of initial hash table buckets */ -#define HASHAGG_MIN_BUCKETS 256 - /* * Estimate chunk overhead as a constant 16 bytes. XXX: should this be * improved? @@ -1926,9 +1923,8 @@ hash_choose_num_buckets(double hashentrysize, long ngroups, Size memory) if (nbuckets > max_nbuckets) nbuckets = max_nbuckets; - if (nbuckets < HASHAGG_MIN_BUCKETS) - nbuckets = HASHAGG_MIN_BUCKETS; - return nbuckets; + + return Max(nbuckets, 1); } /* diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c index b1081688211c7..055ebb77ae2ae 100644 --- a/src/backend/executor/spi.c +++ b/src/backend/executor/spi.c @@ -60,7 +60,8 @@ static void _SPI_prepare_oneshot_plan(const char *src, SPIPlanPtr plan); static int _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, Snapshot snapshot, Snapshot crosscheck_snapshot, - bool read_only, bool fire_triggers, uint64 tcount); + bool read_only, bool fire_triggers, uint64 tcount, + DestReceiver *caller_dest); static ParamListInfo _SPI_convert_params(int nargs, Oid *argtypes, Datum *Values, const char *Nulls); @@ -513,7 +514,7 @@ SPI_execute(const char *src, bool read_only, long tcount) res = _SPI_execute_plan(&plan, NULL, InvalidSnapshot, InvalidSnapshot, - read_only, true, tcount); + read_only, true, tcount, NULL); _SPI_end_call(true); return res; @@ -547,7 +548,7 @@ SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls, _SPI_convert_params(plan->nargs, plan->argtypes, Values, Nulls), InvalidSnapshot, InvalidSnapshot, - read_only, true, tcount); + read_only, true, tcount, NULL); _SPI_end_call(true); return res; @@ -576,7 +577,36 @@ SPI_execute_plan_with_paramlist(SPIPlanPtr plan, ParamListInfo params, res = _SPI_execute_plan(plan, params, InvalidSnapshot, InvalidSnapshot, - read_only, true, tcount); + read_only, true, tcount, NULL); + + _SPI_end_call(true); + return res; +} + +/* + * Execute a previously prepared plan. If dest isn't NULL, we send result + * tuples to the caller-supplied DestReceiver rather than through the usual + * SPI output arrangements. If dest is NULL this is equivalent to + * SPI_execute_plan_with_paramlist. + */ +int +SPI_execute_plan_with_receiver(SPIPlanPtr plan, + ParamListInfo params, + bool read_only, long tcount, + DestReceiver *dest) +{ + int res; + + if (plan == NULL || plan->magic != _SPI_PLAN_MAGIC || tcount < 0) + return SPI_ERROR_ARGUMENT; + + res = _SPI_begin_call(true); + if (res < 0) + return res; + + res = _SPI_execute_plan(plan, params, + InvalidSnapshot, InvalidSnapshot, + read_only, true, tcount, dest); _SPI_end_call(true); return res; @@ -617,7 +647,7 @@ SPI_execute_snapshot(SPIPlanPtr plan, _SPI_convert_params(plan->nargs, plan->argtypes, Values, Nulls), snapshot, crosscheck_snapshot, - read_only, fire_triggers, tcount); + read_only, fire_triggers, tcount, NULL); _SPI_end_call(true); return res; @@ -664,7 +694,50 @@ SPI_execute_with_args(const char *src, res = _SPI_execute_plan(&plan, paramLI, InvalidSnapshot, InvalidSnapshot, - read_only, true, tcount); + read_only, true, tcount, NULL); + + _SPI_end_call(true); + return res; +} + +/* + * SPI_execute_with_receiver -- plan and execute a query with arguments + * + * This is the same as SPI_execute_with_args except that parameters are + * supplied through a ParamListInfo, and (if dest isn't NULL) we send + * result tuples to the caller-supplied DestReceiver rather than through + * the usual SPI output arrangements. + */ +int +SPI_execute_with_receiver(const char *src, + ParamListInfo params, + bool read_only, long tcount, + DestReceiver *dest) +{ + int res; + _SPI_plan plan; + + if (src == NULL || tcount < 0) + return SPI_ERROR_ARGUMENT; + + res = _SPI_begin_call(true); + if (res < 0) + return res; + + memset(&plan, 0, sizeof(_SPI_plan)); + plan.magic = _SPI_PLAN_MAGIC; + plan.cursor_options = CURSOR_OPT_PARALLEL_OK; + if (params) + { + plan.parserSetup = params->parserSetup; + plan.parserSetupArg = params->parserSetupArg; + } + + _SPI_prepare_oneshot_plan(src, &plan); + + res = _SPI_execute_plan(&plan, params, + InvalidSnapshot, InvalidSnapshot, + read_only, true, tcount, dest); _SPI_end_call(true); return res; @@ -1303,6 +1376,49 @@ SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan, return SPI_cursor_open_internal(name, plan, params, read_only); } +/* + * SPI_cursor_parse_open_with_paramlist() + * + * Same as SPI_cursor_open_with_args except that parameters (if any) are passed + * as a ParamListInfo, which supports dynamic parameter set determination + */ +Portal +SPI_cursor_parse_open_with_paramlist(const char *name, + const char *src, + ParamListInfo params, + bool read_only, int cursorOptions) +{ + Portal result; + _SPI_plan plan; + + if (src == NULL) + elog(ERROR, "SPI_cursor_parse_open_with_paramlist called with invalid arguments"); + + SPI_result = _SPI_begin_call(true); + if (SPI_result < 0) + elog(ERROR, "SPI_cursor_parse_open_with_paramlist called while not connected"); + + memset(&plan, 0, sizeof(_SPI_plan)); + plan.magic = _SPI_PLAN_MAGIC; + plan.cursor_options = cursorOptions; + if (params) + { + plan.parserSetup = params->parserSetup; + plan.parserSetupArg = params->parserSetupArg; + } + + _SPI_prepare_plan(src, &plan); + + /* We needn't copy the plan; SPI_cursor_open_internal will do so */ + + result = SPI_cursor_open_internal(name, &plan, params, read_only); + + /* And clean up */ + _SPI_end_call(true); + + return result; +} + /* * SPI_cursor_open_internal() @@ -2090,11 +2206,13 @@ _SPI_prepare_oneshot_plan(const char *src, SPIPlanPtr plan) * fire_triggers: true to fire AFTER triggers at end of query (normal case); * false means any AFTER triggers are postponed to end of outer query * tcount: execution tuple-count limit, or 0 for none + * caller_dest: DestReceiver to receive output, or NULL for normal SPI output */ static int _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, Snapshot snapshot, Snapshot crosscheck_snapshot, - bool read_only, bool fire_triggers, uint64 tcount) + bool read_only, bool fire_triggers, uint64 tcount, + DestReceiver *caller_dest) { int my_res = 0; uint64 my_processed = 0; @@ -2228,6 +2346,12 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, bool canSetTag = stmt->canSetTag; DestReceiver *dest; + /* + * Reset output state. (Note that if a non-SPI receiver is used, + * _SPI_current->processed will stay zero, and that's what we'll + * report to the caller. It's the receiver's job to count tuples + * in that case.) + */ _SPI_current->processed = 0; _SPI_current->tuptable = NULL; @@ -2267,7 +2391,16 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, UpdateActiveSnapshotCommandId(); } - dest = CreateDestReceiver(canSetTag ? DestSPI : DestNone); + /* + * Select appropriate tuple receiver. Output from non-canSetTag + * subqueries always goes to the bit bucket. + */ + if (!canSetTag) + dest = CreateDestReceiver(DestNone); + else if (caller_dest) + dest = caller_dest; + else + dest = CreateDestReceiver(DestSPI); if (stmt->utilityStmt == NULL) { @@ -2373,7 +2506,13 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, SPI_freetuptable(_SPI_current->tuptable); _SPI_current->tuptable = NULL; } - /* we know that the receiver doesn't need a destroy call */ + + /* + * We don't issue a destroy call to the receiver. The SPI and + * None receivers would ignore it anyway, while if the caller + * supplied a receiver, it's not our job to destroy it. + */ + if (res < 0) { my_res = res; @@ -2465,7 +2604,7 @@ _SPI_pquery(QueryDesc *queryDesc, bool fire_triggers, uint64 tcount) switch (operation) { case CMD_SELECT: - if (queryDesc->dest->mydest != DestSPI) + if (queryDesc->dest->mydest == DestNone) { /* Don't return SPI_OK_SELECT if we're discarding result */ res = SPI_OK_UTILITY; diff --git a/src/backend/executor/tstoreReceiver.c b/src/backend/executor/tstoreReceiver.c index 6c2dfbc1a65ef..e8172bedd0192 100644 --- a/src/backend/executor/tstoreReceiver.c +++ b/src/backend/executor/tstoreReceiver.c @@ -8,6 +8,8 @@ * toasted values. This is to support cursors WITH HOLD, which must retain * data even if the underlying table is dropped. * + * Also optionally, we can apply a tuple conversion map before storing. + * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -21,6 +23,7 @@ #include "postgres.h" #include "access/detoast.h" +#include "access/tupconvert.h" #include "executor/tstoreReceiver.h" @@ -31,14 +34,19 @@ typedef struct Tuplestorestate *tstore; /* where to put the data */ MemoryContext cxt; /* context containing tstore */ bool detoast; /* were we told to detoast? */ + TupleDesc target_tupdesc; /* target tupdesc, or NULL if none */ + const char *map_failure_msg; /* tupdesc mapping failure message */ /* workspace: */ Datum *outvalues; /* values array for result tuple */ Datum *tofree; /* temp values to be pfree'd */ + TupleConversionMap *tupmap; /* conversion map, if needed */ + TupleTableSlot *mapslot; /* slot for mapped tuples */ } TStoreState; static bool tstoreReceiveSlot_notoast(TupleTableSlot *slot, DestReceiver *self); static bool tstoreReceiveSlot_detoast(TupleTableSlot *slot, DestReceiver *self); +static bool tstoreReceiveSlot_tupmap(TupleTableSlot *slot, DestReceiver *self); /* @@ -69,27 +77,46 @@ tstoreStartupReceiver(DestReceiver *self, int operation, TupleDesc typeinfo) } } + /* Check if tuple conversion is needed */ + if (myState->target_tupdesc) + myState->tupmap = convert_tuples_by_position(typeinfo, + myState->target_tupdesc, + myState->map_failure_msg); + else + myState->tupmap = NULL; + /* Set up appropriate callback */ if (needtoast) { + Assert(!myState->tupmap); myState->pub.receiveSlot = tstoreReceiveSlot_detoast; /* Create workspace */ myState->outvalues = (Datum *) MemoryContextAlloc(myState->cxt, natts * sizeof(Datum)); myState->tofree = (Datum *) MemoryContextAlloc(myState->cxt, natts * sizeof(Datum)); + myState->mapslot = NULL; + } + else if (myState->tupmap) + { + myState->pub.receiveSlot = tstoreReceiveSlot_tupmap; + myState->outvalues = NULL; + myState->tofree = NULL; + myState->mapslot = MakeSingleTupleTableSlot(myState->target_tupdesc, + &TTSOpsVirtual); } else { myState->pub.receiveSlot = tstoreReceiveSlot_notoast; myState->outvalues = NULL; myState->tofree = NULL; + myState->mapslot = NULL; } } /* * Receive a tuple from the executor and store it in the tuplestore. - * This is for the easy case where we don't have to detoast. + * This is for the easy case where we don't have to detoast nor map anything. */ static bool tstoreReceiveSlot_notoast(TupleTableSlot *slot, DestReceiver *self) @@ -157,6 +184,21 @@ tstoreReceiveSlot_detoast(TupleTableSlot *slot, DestReceiver *self) return true; } +/* + * Receive a tuple from the executor and store it in the tuplestore. + * This is for the case where we must apply a tuple conversion map. + */ +static bool +tstoreReceiveSlot_tupmap(TupleTableSlot *slot, DestReceiver *self) +{ + TStoreState *myState = (TStoreState *) self; + + execute_attr_map_slot(myState->tupmap->attrMap, slot, myState->mapslot); + tuplestore_puttupleslot(myState->tstore, myState->mapslot); + + return true; +} + /* * Clean up at end of an executor run */ @@ -172,6 +214,12 @@ tstoreShutdownReceiver(DestReceiver *self) if (myState->tofree) pfree(myState->tofree); myState->tofree = NULL; + if (myState->tupmap) + free_conversion_map(myState->tupmap); + myState->tupmap = NULL; + if (myState->mapslot) + ExecDropSingleTupleTableSlot(myState->mapslot); + myState->mapslot = NULL; } /* @@ -204,17 +252,32 @@ CreateTuplestoreDestReceiver(void) /* * Set parameters for a TuplestoreDestReceiver + * + * tStore: where to store the tuples + * tContext: memory context containing tStore + * detoast: forcibly detoast contained data? + * target_tupdesc: if not NULL, forcibly convert tuples to this rowtype + * map_failure_msg: error message to use if mapping to target_tupdesc fails + * + * We don't currently support both detoast and target_tupdesc at the same + * time, just because no existing caller needs that combination. */ void SetTuplestoreDestReceiverParams(DestReceiver *self, Tuplestorestate *tStore, MemoryContext tContext, - bool detoast) + bool detoast, + TupleDesc target_tupdesc, + const char *map_failure_msg) { TStoreState *myState = (TStoreState *) self; + Assert(!(detoast && target_tupdesc)); + Assert(myState->pub.mydest == DestTuplestore); myState->tstore = tStore; myState->cxt = tContext; myState->detoast = detoast; + myState->target_tupdesc = target_tupdesc; + myState->map_failure_msg = map_failure_msg; } diff --git a/src/backend/nodes/params.c b/src/backend/nodes/params.c index ed2ee6a975a0e..1719119fc28fb 100644 --- a/src/backend/nodes/params.c +++ b/src/backend/nodes/params.c @@ -17,19 +17,27 @@ #include "access/xact.h" #include "mb/stringinfo_mb.h" -#include "nodes/bitmapset.h" #include "nodes/params.h" +#include "parser/parse_node.h" #include "storage/shmem.h" #include "utils/datum.h" #include "utils/lsyscache.h" #include "utils/memutils.h" +static void paramlist_parser_setup(ParseState *pstate, void *arg); +static Node *paramlist_param_ref(ParseState *pstate, ParamRef *pref); + + /* * Allocate and initialize a new ParamListInfo structure. * * To make a new structure for the "dynamic" way (with hooks), pass 0 for * numParams and set numParams manually. + * + * A default parserSetup function is supplied automatically. Callers may + * override it if they choose. (Note that most use-cases for ParamListInfos + * will never use the parserSetup function anyway.) */ ParamListInfo makeParamList(int numParams) @@ -45,8 +53,8 @@ makeParamList(int numParams) retval->paramFetchArg = NULL; retval->paramCompile = NULL; retval->paramCompileArg = NULL; - retval->parserSetup = NULL; - retval->parserSetupArg = NULL; + retval->parserSetup = paramlist_parser_setup; + retval->parserSetupArg = (void *) retval; retval->paramValuesStr = NULL; retval->numParams = numParams; @@ -102,6 +110,55 @@ copyParamList(ParamListInfo from) return retval; } + +/* + * Set up to parse a query containing references to parameters + * sourced from a ParamListInfo. + */ +static void +paramlist_parser_setup(ParseState *pstate, void *arg) +{ + pstate->p_paramref_hook = paramlist_param_ref; + /* no need to use p_coerce_param_hook */ + pstate->p_ref_hook_state = arg; +} + +/* + * Transform a ParamRef using parameter type data from a ParamListInfo. + */ +static Node * +paramlist_param_ref(ParseState *pstate, ParamRef *pref) +{ + ParamListInfo paramLI = (ParamListInfo) pstate->p_ref_hook_state; + int paramno = pref->number; + ParamExternData *prm; + ParamExternData prmdata; + Param *param; + + /* check parameter number is valid */ + if (paramno <= 0 || paramno > paramLI->numParams) + return NULL; + + /* give hook a chance in case parameter is dynamic */ + if (paramLI->paramFetch != NULL) + prm = paramLI->paramFetch(paramLI, paramno, false, &prmdata); + else + prm = ¶mLI->params[paramno - 1]; + + if (!OidIsValid(prm->ptype)) + return NULL; + + param = makeNode(Param); + param->paramkind = PARAM_EXTERN; + param->paramid = paramno; + param->paramtype = prm->ptype; + param->paramtypmod = -1; + param->paramcollid = get_typcollation(param->paramtype); + param->location = pref->location; + + return (Node *) param; +} + /* * Estimate the amount of space required to serialize a ParamListInfo. */ diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index b976afb69df67..4ff3c7a2fd38a 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -130,8 +130,7 @@ bool enable_tidscan = true; bool enable_sort = true; bool enable_incrementalsort = true; bool enable_hashagg = true; -bool enable_hashagg_disk = true; -bool enable_groupingsets_hash_disk = false; +bool hashagg_avoid_disk_plan = true; bool enable_nestloop = true; bool enable_material = true; bool enable_mergejoin = true; diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 357850624cc21..4131019fc9853 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -367,7 +367,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions, * parallel-restricted, and in either case it should be OK to impose * parallel-mode restrictions. If that ends up breaking something, then * either some function the user included in the query is incorrectly - * labelled as parallel-safe or parallel-restricted when in reality it's + * labeled as parallel-safe or parallel-restricted when in reality it's * parallel-unsafe, or else the query planner itself has a bug. */ glob->parallelModeNeeded = glob->parallelModeOK && @@ -4256,12 +4256,11 @@ consider_groupingsets_paths(PlannerInfo *root, dNumGroups - exclude_groups); /* - * If we have sortable columns to work with (gd->rollups is non-empty) - * and enable_groupingsets_hash_disk is disabled, don't generate - * hash-based paths that will exceed work_mem. + * gd->rollups is empty if we have only unsortable columns to work + * with. Override work_mem in that case; otherwise, we'll rely on the + * sorted-input case to generate usable mixed paths. */ - if (!enable_groupingsets_hash_disk && - hashsize > work_mem * 1024L && gd->rollups) + if (hashsize > work_mem * 1024L && gd->rollups) return; /* nope, won't fit */ /* @@ -4868,7 +4867,7 @@ create_distinct_paths(PlannerInfo *root, { Size hashentrysize = hash_agg_entry_size(0, cheapest_input_path->pathtarget->width, 0); - allow_hash = enable_hashagg_disk || + allow_hash = !hashagg_avoid_disk_plan || (hashentrysize * numDistinctRows <= work_mem * 1024L); } @@ -6773,7 +6772,7 @@ add_paths_to_grouping_rel(PlannerInfo *root, RelOptInfo *input_rel, * were unable to sort above, then we'd better generate a Path, so * that we at least have one. */ - if (enable_hashagg_disk || + if (!hashagg_avoid_disk_plan || hashaggtablesize < work_mem * 1024L || grouped_rel->pathlist == NIL) { @@ -6807,7 +6806,7 @@ add_paths_to_grouping_rel(PlannerInfo *root, RelOptInfo *input_rel, agg_final_costs, dNumGroups); - if (enable_hashagg_disk || + if (!hashagg_avoid_disk_plan || hashaggtablesize < work_mem * 1024L) add_path(grouped_rel, (Path *) create_agg_path(root, @@ -7188,7 +7187,7 @@ create_partial_grouping_paths(PlannerInfo *root, * Tentatively produce a partial HashAgg Path, depending on if it * looks as if the hash table will fit in work_mem. */ - if ((enable_hashagg_disk || hashaggtablesize < work_mem * 1024L) && + if ((!hashagg_avoid_disk_plan || hashaggtablesize < work_mem * 1024L) && cheapest_total_path != NULL) { add_path(partially_grouped_rel, (Path *) @@ -7215,7 +7214,8 @@ create_partial_grouping_paths(PlannerInfo *root, dNumPartialPartialGroups); /* Do the same for partial paths. */ - if ((enable_hashagg_disk || hashaggtablesize < work_mem * 1024L) && + if ((!hashagg_avoid_disk_plan || + hashaggtablesize < work_mem * 1024L) && cheapest_partial_path != NULL) { add_partial_path(partially_grouped_rel, (Path *) diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index e66b850e1a970..e669d75a5af36 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -259,7 +259,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); AlterFdwStmt AlterForeignServerStmt AlterGroupStmt AlterObjectDependsStmt AlterObjectSchemaStmt AlterOwnerStmt AlterOperatorStmt AlterTypeStmt AlterSeqStmt AlterSystemStmt AlterTableStmt - AlterTblSpcStmt AlterExtensionStmt AlterExtensionContentsStmt AlterForeignTableStmt + AlterTblSpcStmt AlterExtensionStmt AlterExtensionContentsStmt AlterCompositeTypeStmt AlterUserMappingStmt AlterRoleStmt AlterRoleSetStmt AlterPolicyStmt AlterStatsStmt AlterDefaultPrivilegesStmt DefACLAction @@ -272,7 +272,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); CreateAssertionStmt CreateTransformStmt CreateTrigStmt CreateEventTrigStmt CreateUserStmt CreateUserMappingStmt CreateRoleStmt CreatePolicyStmt CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt DoStmt - DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt + DropOpClassStmt DropOpFamilyStmt DropStmt DropCastStmt DropRoleStmt DropdbStmt DropTableSpaceStmt DropTransformStmt @@ -352,9 +352,9 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type enable_trigger %type copy_file_name - database_name access_method_clause access_method attr_name + access_method_clause attr_name table_access_method_clause name cursor_name file_name - index_name opt_index_name cluster_index_specification + opt_index_name cluster_index_specification %type func_name handler_name qual_Op qual_all_Op subquery_Op opt_class opt_inline_handler opt_validator validator_clause @@ -463,9 +463,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type copy_from opt_program %type opt_column event cursor_options opt_hold opt_set_data -%type drop_type_any_name drop_type_name drop_type_name_on_any_name - comment_type_any_name comment_type_name - security_label_type_any_name security_label_type_name +%type object_type_any_name object_type_name object_type_name_on_any_name + drop_type_name %type fetch_args select_limit_value offset_clause select_offset_value @@ -850,7 +849,6 @@ stmt : | AlterExtensionContentsStmt | AlterFdwStmt | AlterForeignServerStmt - | AlterForeignTableStmt | AlterFunctionStmt | AlterGroupStmt | AlterObjectDependsStmt @@ -922,7 +920,6 @@ stmt : | DropOpClassStmt | DropOpFamilyStmt | DropOwnedStmt - | DropPLangStmt | DropStmt | DropSubscriptionStmt | DropTableSpaceStmt @@ -1183,7 +1180,7 @@ AlterRoleStmt: opt_in_database: /* EMPTY */ { $$ = NULL; } - | IN_P DATABASE database_name { $$ = $3; } + | IN_P DATABASE name { $$ = $3; } ; AlterRoleSetStmt: @@ -1836,9 +1833,9 @@ DiscardStmt: /***************************************************************************** * - * ALTER [ TABLE | INDEX | SEQUENCE | VIEW | MATERIALIZED VIEW ] variations + * ALTER [ TABLE | INDEX | SEQUENCE | VIEW | MATERIALIZED VIEW | FOREIGN TABLE ] variations * - * Note: we accept all subcommands for each of the five variants, and sort + * Note: we accept all subcommands for each of the variants, and sort * out what's really legal at execution time. *****************************************************************************/ @@ -2026,6 +2023,24 @@ AlterTableStmt: n->nowait = $14; $$ = (Node *)n; } + | ALTER FOREIGN TABLE relation_expr alter_table_cmds + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = $4; + n->cmds = $5; + n->relkind = OBJECT_FOREIGN_TABLE; + n->missing_ok = false; + $$ = (Node *)n; + } + | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = $6; + n->cmds = $7; + n->relkind = OBJECT_FOREIGN_TABLE; + n->missing_ok = true; + $$ = (Node *)n; + } ; alter_table_cmds: @@ -3945,7 +3960,7 @@ part_elem: ColId opt_collate opt_class ; table_access_method_clause: - USING access_method { $$ = $2; } + USING name { $$ = $2; } | /*EMPTY*/ { $$ = NULL; } ; @@ -3970,7 +3985,7 @@ OptConsTableSpace: USING INDEX TABLESPACE name { $$ = $4; } | /*EMPTY*/ { $$ = NULL; } ; -ExistingIndex: USING INDEX index_name { $$ = $3; } +ExistingIndex: USING INDEX name { $$ = $3; } ; /***************************************************************************** @@ -4329,7 +4344,7 @@ NumericOnly_list: NumericOnly { $$ = list_make1($1); } *****************************************************************************/ CreatePLangStmt: - CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst + CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE name { /* * We now interpret parameterless CREATE LANGUAGE as @@ -4344,7 +4359,7 @@ CreatePLangStmt: n->options = NIL; $$ = (Node *)n; } - | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst + | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE name HANDLER handler_name opt_inline_handler opt_validator { CreatePLangStmt *n = makeNode(CreatePLangStmt); @@ -4387,29 +4402,6 @@ opt_validator: | /*EMPTY*/ { $$ = NIL; } ; -DropPLangStmt: - DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(makeString($4)); - n->behavior = $5; - n->missing_ok = false; - n->concurrent = false; - $$ = (Node *)n; - } - | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior - { - DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_LANGUAGE; - n->objects = list_make1(makeString($6)); - n->behavior = $7; - n->missing_ok = true; - n->concurrent = false; - $$ = (Node *)n; - } - ; - opt_procedural: PROCEDURAL {} | /*EMPTY*/ {} @@ -4554,50 +4546,41 @@ alter_extension_opt_item: *****************************************************************************/ AlterExtensionContentsStmt: - ALTER EXTENSION name add_drop ACCESS METHOD name + ALTER EXTENSION name add_drop object_type_name name { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; n->action = $4; - n->objtype = OBJECT_ACCESS_METHOD; - n->object = (Node *) makeString($7); + n->objtype = $5; + n->object = (Node *) makeString($6); $$ = (Node *)n; } - | ALTER EXTENSION name add_drop AGGREGATE aggregate_with_argtypes + | ALTER EXTENSION name add_drop object_type_any_name any_name { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; n->action = $4; - n->objtype = OBJECT_AGGREGATE; + n->objtype = $5; n->object = (Node *) $6; $$ = (Node *)n; } - | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_CAST; - n->object = (Node *) list_make2($7, $9); - $$ = (Node *) n; - } - | ALTER EXTENSION name add_drop COLLATION any_name + | ALTER EXTENSION name add_drop AGGREGATE aggregate_with_argtypes { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; n->action = $4; - n->objtype = OBJECT_COLLATION; + n->objtype = OBJECT_AGGREGATE; n->object = (Node *) $6; $$ = (Node *)n; } - | ALTER EXTENSION name add_drop CONVERSION_P any_name + | ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')' { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; n->action = $4; - n->objtype = OBJECT_CONVERSION; - n->object = (Node *) $6; - $$ = (Node *)n; + n->objtype = OBJECT_CAST; + n->object = (Node *) list_make2($7, $9); + $$ = (Node *) n; } | ALTER EXTENSION name add_drop DOMAIN_P Typename { @@ -4617,15 +4600,6 @@ AlterExtensionContentsStmt: n->object = (Node *) $6; $$ = (Node *)n; } - | ALTER EXTENSION name add_drop opt_procedural LANGUAGE name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_LANGUAGE; - n->object = (Node *) makeString($7); - $$ = (Node *)n; - } | ALTER EXTENSION name add_drop OPERATOR operator_with_argtypes { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); @@ -4635,7 +4609,7 @@ AlterExtensionContentsStmt: n->object = (Node *) $6; $$ = (Node *)n; } - | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method + | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING name { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; @@ -4644,7 +4618,7 @@ AlterExtensionContentsStmt: n->object = (Node *) lcons(makeString($9), $7); $$ = (Node *)n; } - | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING access_method + | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING name { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = $3; @@ -4671,123 +4645,6 @@ AlterExtensionContentsStmt: n->object = (Node *) $6; $$ = (Node *)n; } - | ALTER EXTENSION name add_drop SCHEMA name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_SCHEMA; - n->object = (Node *) makeString($6); - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop EVENT TRIGGER name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_EVENT_TRIGGER; - n->object = (Node *) makeString($7); - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop TABLE any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_TABLE; - n->object = (Node *) $6; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop TEXT_P SEARCH PARSER any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_TSPARSER; - n->object = (Node *) $8; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop TEXT_P SEARCH DICTIONARY any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_TSDICTIONARY; - n->object = (Node *) $8; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop TEXT_P SEARCH TEMPLATE any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_TSTEMPLATE; - n->object = (Node *) $8; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop TEXT_P SEARCH CONFIGURATION any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_TSCONFIGURATION; - n->object = (Node *) $8; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop SEQUENCE any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_SEQUENCE; - n->object = (Node *) $6; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop VIEW any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_VIEW; - n->object = (Node *) $6; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop MATERIALIZED VIEW any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_MATVIEW; - n->object = (Node *) $7; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop FOREIGN TABLE any_name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_FOREIGN_TABLE; - n->object = (Node *) $7; - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop FOREIGN DATA_P WRAPPER name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_FDW; - n->object = (Node *) makeString($8); - $$ = (Node *)n; - } - | ALTER EXTENSION name add_drop SERVER name - { - AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); - n->extname = $3; - n->action = $4; - n->objtype = OBJECT_FOREIGN_SERVER; - n->object = (Node *) makeString($6); - $$ = (Node *)n; - } | ALTER EXTENSION name add_drop TRANSFORM FOR Typename LANGUAGE name { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); @@ -5111,34 +4968,6 @@ CreateForeignTableStmt: } ; -/***************************************************************************** - * - * QUERY: - * ALTER FOREIGN TABLE relname [...] - * - *****************************************************************************/ - -AlterForeignTableStmt: - ALTER FOREIGN TABLE relation_expr alter_table_cmds - { - AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = $4; - n->cmds = $5; - n->relkind = OBJECT_FOREIGN_TABLE; - n->missing_ok = false; - $$ = (Node *)n; - } - | ALTER FOREIGN TABLE IF_P EXISTS relation_expr alter_table_cmds - { - AlterTableStmt *n = makeNode(AlterTableStmt); - n->relation = $6; - n->cmds = $7; - n->relkind = OBJECT_FOREIGN_TABLE; - n->missing_ok = true; - $$ = (Node *)n; - } - ; - /***************************************************************************** * * QUERY: @@ -5987,7 +5816,7 @@ opt_if_not_exists: IF_P NOT EXISTS { $$ = true; } CreateOpClassStmt: CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P Typename - USING access_method opt_opfamily AS opclass_item_list + USING name opt_opfamily AS opclass_item_list { CreateOpClassStmt *n = makeNode(CreateOpClassStmt); n->opclassname = $4; @@ -6086,7 +5915,7 @@ opt_recheck: RECHECK CreateOpFamilyStmt: - CREATE OPERATOR FAMILY any_name USING access_method + CREATE OPERATOR FAMILY any_name USING name { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); n->opfamilyname = $4; @@ -6096,7 +5925,7 @@ CreateOpFamilyStmt: ; AlterOpFamilyStmt: - ALTER OPERATOR FAMILY any_name USING access_method ADD_P opclass_item_list + ALTER OPERATOR FAMILY any_name USING name ADD_P opclass_item_list { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = $4; @@ -6105,7 +5934,7 @@ AlterOpFamilyStmt: n->items = $8; $$ = (Node *) n; } - | ALTER OPERATOR FAMILY any_name USING access_method DROP opclass_drop_list + | ALTER OPERATOR FAMILY any_name USING name DROP opclass_drop_list { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = $4; @@ -6142,7 +5971,7 @@ opclass_drop: DropOpClassStmt: - DROP OPERATOR CLASS any_name USING access_method opt_drop_behavior + DROP OPERATOR CLASS any_name USING name opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString($6), $4)); @@ -6152,7 +5981,7 @@ DropOpClassStmt: n->concurrent = false; $$ = (Node *) n; } - | DROP OPERATOR CLASS IF_P EXISTS any_name USING access_method opt_drop_behavior + | DROP OPERATOR CLASS IF_P EXISTS any_name USING name opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString($8), $6)); @@ -6165,7 +5994,7 @@ DropOpClassStmt: ; DropOpFamilyStmt: - DROP OPERATOR FAMILY any_name USING access_method opt_drop_behavior + DROP OPERATOR FAMILY any_name USING name opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString($6), $4)); @@ -6175,7 +6004,7 @@ DropOpFamilyStmt: n->concurrent = false; $$ = (Node *) n; } - | DROP OPERATOR FAMILY IF_P EXISTS any_name USING access_method opt_drop_behavior + | DROP OPERATOR FAMILY IF_P EXISTS any_name USING name opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString($8), $6)); @@ -6225,7 +6054,7 @@ ReassignOwnedStmt: * *****************************************************************************/ -DropStmt: DROP drop_type_any_name IF_P EXISTS any_name_list opt_drop_behavior +DropStmt: DROP object_type_any_name IF_P EXISTS any_name_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = $2; @@ -6235,7 +6064,7 @@ DropStmt: DROP drop_type_any_name IF_P EXISTS any_name_list opt_drop_behavior n->concurrent = false; $$ = (Node *)n; } - | DROP drop_type_any_name any_name_list opt_drop_behavior + | DROP object_type_any_name any_name_list opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = $2; @@ -6265,7 +6094,7 @@ DropStmt: DROP drop_type_any_name IF_P EXISTS any_name_list opt_drop_behavior n->concurrent = false; $$ = (Node *)n; } - | DROP drop_type_name_on_any_name name ON any_name opt_drop_behavior + | DROP object_type_name_on_any_name name ON any_name opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = $2; @@ -6275,7 +6104,7 @@ DropStmt: DROP drop_type_any_name IF_P EXISTS any_name_list opt_drop_behavior n->concurrent = false; $$ = (Node *) n; } - | DROP drop_type_name_on_any_name IF_P EXISTS name ON any_name opt_drop_behavior + | DROP object_type_name_on_any_name IF_P EXISTS name ON any_name opt_drop_behavior { DropStmt *n = makeNode(DropStmt); n->removeType = $2; @@ -6347,8 +6176,8 @@ DropStmt: DROP drop_type_any_name IF_P EXISTS any_name_list opt_drop_behavior } ; -/* object types taking any_name_list */ -drop_type_any_name: +/* object types taking any_name/any_name_list */ +object_type_any_name: TABLE { $$ = OBJECT_TABLE; } | SEQUENCE { $$ = OBJECT_SEQUENCE; } | VIEW { $$ = OBJECT_VIEW; } @@ -6364,19 +6193,33 @@ drop_type_any_name: | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } ; -/* object types taking name_list */ +/* + * object types taking name/name_list + * + * DROP handles some of them separately + */ + +object_type_name: + drop_type_name { $$ = $1; } + | DATABASE { $$ = OBJECT_DATABASE; } + | ROLE { $$ = OBJECT_ROLE; } + | SUBSCRIPTION { $$ = OBJECT_SUBSCRIPTION; } + | TABLESPACE { $$ = OBJECT_TABLESPACE; } + ; + drop_type_name: ACCESS METHOD { $$ = OBJECT_ACCESS_METHOD; } | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } | EXTENSION { $$ = OBJECT_EXTENSION; } | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } + | opt_procedural LANGUAGE { $$ = OBJECT_LANGUAGE; } | PUBLICATION { $$ = OBJECT_PUBLICATION; } | SCHEMA { $$ = OBJECT_SCHEMA; } | SERVER { $$ = OBJECT_FOREIGN_SERVER; } ; /* object types attached to a table */ -drop_type_name_on_any_name: +object_type_name_on_any_name: POLICY { $$ = OBJECT_POLICY; } | RULE { $$ = OBJECT_RULE; } | TRIGGER { $$ = OBJECT_TRIGGER; } @@ -6428,36 +6271,12 @@ opt_restart_seqs: /***************************************************************************** * - * The COMMENT ON statement can take different forms based upon the type of - * the object associated with the comment. The form of the statement is: - * - * COMMENT ON [ [ ACCESS METHOD | CONVERSION | COLLATION | - * DATABASE | DOMAIN | - * EXTENSION | EVENT TRIGGER | FOREIGN DATA WRAPPER | - * FOREIGN TABLE | INDEX | [PROCEDURAL] LANGUAGE | - * MATERIALIZED VIEW | POLICY | ROLE | SCHEMA | SEQUENCE | - * SERVER | STATISTICS | TABLE | TABLESPACE | - * TEXT SEARCH CONFIGURATION | TEXT SEARCH DICTIONARY | - * TEXT SEARCH PARSER | TEXT SEARCH TEMPLATE | TYPE | - * VIEW] | - * AGGREGATE (arg1, ...) | - * CAST ( AS ) | - * COLUMN . | - * CONSTRAINT ON | - * CONSTRAINT ON DOMAIN | - * FUNCTION (arg1, arg2, ...) | - * LARGE OBJECT | - * OPERATOR (leftoperand_typ, rightoperand_typ) | - * OPERATOR CLASS USING | - * OPERATOR FAMILY USING | - * RULE ON | - * TRIGGER ON ] - * IS { 'text' | NULL } + * COMMENT ON IS * *****************************************************************************/ CommentStmt: - COMMENT ON comment_type_any_name any_name IS comment_text + COMMENT ON object_type_any_name any_name IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = $3; @@ -6465,7 +6284,15 @@ CommentStmt: n->comment = $6; $$ = (Node *) n; } - | COMMENT ON comment_type_name name IS comment_text + | COMMENT ON COLUMN any_name IS comment_text + { + CommentStmt *n = makeNode(CommentStmt); + n->objtype = OBJECT_COLUMN; + n->object = (Node *) $4; + n->comment = $6; + $$ = (Node *) n; + } + | COMMENT ON object_type_name name IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = $3; @@ -6534,10 +6361,10 @@ CommentStmt: n->comment = $9; $$ = (Node *) n; } - | COMMENT ON POLICY name ON any_name IS comment_text + | COMMENT ON object_type_name_on_any_name name ON any_name IS comment_text { CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_POLICY; + n->objtype = $3; n->object = (Node *) lappend($6, makeString($4)); n->comment = $8; $$ = (Node *) n; @@ -6558,14 +6385,6 @@ CommentStmt: n->comment = $6; $$ = (Node *) n; } - | COMMENT ON RULE name ON any_name IS comment_text - { - CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_RULE; - n->object = (Node *) lappend($6, makeString($4)); - n->comment = $8; - $$ = (Node *) n; - } | COMMENT ON TRANSFORM FOR Typename LANGUAGE name IS comment_text { CommentStmt *n = makeNode(CommentStmt); @@ -6574,15 +6393,7 @@ CommentStmt: n->comment = $9; $$ = (Node *) n; } - | COMMENT ON TRIGGER name ON any_name IS comment_text - { - CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_TRIGGER; - n->object = (Node *) lappend($6, makeString($4)); - n->comment = $8; - $$ = (Node *) n; - } - | COMMENT ON OPERATOR CLASS any_name USING access_method IS comment_text + | COMMENT ON OPERATOR CLASS any_name USING name IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPCLASS; @@ -6590,7 +6401,7 @@ CommentStmt: n->comment = $9; $$ = (Node *) n; } - | COMMENT ON OPERATOR FAMILY any_name USING access_method IS comment_text + | COMMENT ON OPERATOR FAMILY any_name USING name IS comment_text { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPFAMILY; @@ -6616,40 +6427,6 @@ CommentStmt: } ; -/* object types taking any_name */ -comment_type_any_name: - COLUMN { $$ = OBJECT_COLUMN; } - | INDEX { $$ = OBJECT_INDEX; } - | SEQUENCE { $$ = OBJECT_SEQUENCE; } - | STATISTICS { $$ = OBJECT_STATISTIC_EXT; } - | TABLE { $$ = OBJECT_TABLE; } - | VIEW { $$ = OBJECT_VIEW; } - | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } - | COLLATION { $$ = OBJECT_COLLATION; } - | CONVERSION_P { $$ = OBJECT_CONVERSION; } - | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } - | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; } - | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; } - | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; } - | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; } - ; - -/* object types taking name */ -comment_type_name: - ACCESS METHOD { $$ = OBJECT_ACCESS_METHOD; } - | DATABASE { $$ = OBJECT_DATABASE; } - | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } - | EXTENSION { $$ = OBJECT_EXTENSION; } - | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; } - | opt_procedural LANGUAGE { $$ = OBJECT_LANGUAGE; } - | PUBLICATION { $$ = OBJECT_PUBLICATION; } - | ROLE { $$ = OBJECT_ROLE; } - | SCHEMA { $$ = OBJECT_SCHEMA; } - | SERVER { $$ = OBJECT_FOREIGN_SERVER; } - | SUBSCRIPTION { $$ = OBJECT_SUBSCRIPTION; } - | TABLESPACE { $$ = OBJECT_TABLESPACE; } - ; - comment_text: Sconst { $$ = $1; } | NULL_P { $$ = NULL; } @@ -6666,7 +6443,7 @@ comment_text: *****************************************************************************/ SecLabelStmt: - SECURITY LABEL opt_provider ON security_label_type_any_name any_name + SECURITY LABEL opt_provider ON object_type_any_name any_name IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); @@ -6676,7 +6453,17 @@ SecLabelStmt: n->label = $8; $$ = (Node *) n; } - | SECURITY LABEL opt_provider ON security_label_type_name name + | SECURITY LABEL opt_provider ON COLUMN any_name + IS security_label + { + SecLabelStmt *n = makeNode(SecLabelStmt); + n->provider = $3; + n->objtype = OBJECT_COLUMN; + n->object = (Node *) $6; + n->label = $8; + $$ = (Node *) n; + } + | SECURITY LABEL opt_provider ON object_type_name name IS security_label { SecLabelStmt *n = makeNode(SecLabelStmt); @@ -6762,28 +6549,6 @@ opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } | /* empty */ { $$ = NULL; } ; -/* object types taking any_name */ -security_label_type_any_name: - COLUMN { $$ = OBJECT_COLUMN; } - | FOREIGN TABLE { $$ = OBJECT_FOREIGN_TABLE; } - | SEQUENCE { $$ = OBJECT_SEQUENCE; } - | TABLE { $$ = OBJECT_TABLE; } - | VIEW { $$ = OBJECT_VIEW; } - | MATERIALIZED VIEW { $$ = OBJECT_MATVIEW; } - ; - -/* object types taking name */ -security_label_type_name: - DATABASE { $$ = OBJECT_DATABASE; } - | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; } - | opt_procedural LANGUAGE { $$ = OBJECT_LANGUAGE; } - | PUBLICATION { $$ = OBJECT_PUBLICATION; } - | ROLE { $$ = OBJECT_ROLE; } - | SCHEMA { $$ = OBJECT_SCHEMA; } - | SUBSCRIPTION { $$ = OBJECT_SUBSCRIPTION; } - | TABLESPACE { $$ = OBJECT_TABLESPACE; } - ; - security_label: Sconst { $$ = $1; } | NULL_P { $$ = NULL; } ; @@ -7432,7 +7197,7 @@ IndexStmt: CREATE opt_unique INDEX opt_concurrently opt_index_name n->reset_default_tblspc = false; $$ = (Node *)n; } - | CREATE opt_unique INDEX opt_concurrently IF_P NOT EXISTS index_name + | CREATE opt_unique INDEX opt_concurrently IF_P NOT EXISTS name ON relation_expr access_method_clause '(' index_params ')' opt_include opt_reloptions OptTableSpace where_clause { @@ -7475,12 +7240,12 @@ opt_concurrently: ; opt_index_name: - index_name { $$ = $1; } + name { $$ = $1; } | /*EMPTY*/ { $$ = NULL; } ; access_method_clause: - USING access_method { $$ = $2; } + USING name { $$ = $2; } | /*EMPTY*/ { $$ = DEFAULT_INDEX_TYPE; } ; @@ -8527,7 +8292,7 @@ RenameStmt: ALTER AGGREGATE aggregate_with_argtypes RENAME TO name n->missing_ok = false; $$ = (Node *)n; } - | ALTER DATABASE database_name RENAME TO database_name + | ALTER DATABASE name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DATABASE; @@ -8590,7 +8355,7 @@ RenameStmt: ALTER AGGREGATE aggregate_with_argtypes RENAME TO name n->missing_ok = false; $$ = (Node *)n; } - | ALTER OPERATOR CLASS any_name USING access_method RENAME TO name + | ALTER OPERATOR CLASS any_name USING name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPCLASS; @@ -8599,7 +8364,7 @@ RenameStmt: ALTER AGGREGATE aggregate_with_argtypes RENAME TO name n->missing_ok = false; $$ = (Node *)n; } - | ALTER OPERATOR FAMILY any_name USING access_method RENAME TO name + | ALTER OPERATOR FAMILY any_name USING name RENAME TO name { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPFAMILY; @@ -9179,7 +8944,7 @@ AlterObjectSchemaStmt: n->missing_ok = false; $$ = (Node *)n; } - | ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name + | ALTER OPERATOR CLASS any_name USING name SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; @@ -9188,7 +8953,7 @@ AlterObjectSchemaStmt: n->missing_ok = false; $$ = (Node *)n; } - | ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name + | ALTER OPERATOR FAMILY any_name USING name SET SCHEMA name { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; @@ -9444,7 +9209,7 @@ AlterOwnerStmt: ALTER AGGREGATE aggregate_with_argtypes OWNER TO RoleSpec n->newowner = $6; $$ = (Node *)n; } - | ALTER DATABASE database_name OWNER TO RoleSpec + | ALTER DATABASE name OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; @@ -9492,7 +9257,7 @@ AlterOwnerStmt: ALTER AGGREGATE aggregate_with_argtypes OWNER TO RoleSpec n->newowner = $6; $$ = (Node *)n; } - | ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleSpec + | ALTER OPERATOR CLASS any_name USING name OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPCLASS; @@ -9500,7 +9265,7 @@ AlterOwnerStmt: ALTER AGGREGATE aggregate_with_argtypes OWNER TO RoleSpec n->newowner = $9; $$ = (Node *)n; } - | ALTER OPERATOR FAMILY any_name USING access_method OWNER TO RoleSpec + | ALTER OPERATOR FAMILY any_name USING name OWNER TO RoleSpec { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPFAMILY; @@ -10204,7 +9969,7 @@ LoadStmt: LOAD file_name *****************************************************************************/ CreatedbStmt: - CREATE DATABASE database_name opt_with createdb_opt_list + CREATE DATABASE name opt_with createdb_opt_list { CreatedbStmt *n = makeNode(CreatedbStmt); n->dbname = $3; @@ -10275,21 +10040,21 @@ opt_equal: '=' {} *****************************************************************************/ AlterDatabaseStmt: - ALTER DATABASE database_name WITH createdb_opt_list + ALTER DATABASE name WITH createdb_opt_list { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = $3; n->options = $5; $$ = (Node *)n; } - | ALTER DATABASE database_name createdb_opt_list + | ALTER DATABASE name createdb_opt_list { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = $3; n->options = $4; $$ = (Node *)n; } - | ALTER DATABASE database_name SET TABLESPACE name + | ALTER DATABASE name SET TABLESPACE name { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = $3; @@ -10300,7 +10065,7 @@ AlterDatabaseStmt: ; AlterDatabaseSetStmt: - ALTER DATABASE database_name SetResetClause + ALTER DATABASE name SetResetClause { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); n->dbname = $3; @@ -10317,7 +10082,7 @@ AlterDatabaseSetStmt: * This is implicitly CASCADE, no need for drop behavior *****************************************************************************/ -DropdbStmt: DROP DATABASE database_name +DropdbStmt: DROP DATABASE name { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = $3; @@ -10325,7 +10090,7 @@ DropdbStmt: DROP DATABASE database_name n->options = NULL; $$ = (Node *)n; } - | DROP DATABASE IF_P EXISTS database_name + | DROP DATABASE IF_P EXISTS name { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = $5; @@ -10333,7 +10098,7 @@ DropdbStmt: DROP DATABASE database_name n->options = NULL; $$ = (Node *)n; } - | DROP DATABASE database_name opt_with '(' drop_option_list ')' + | DROP DATABASE name opt_with '(' drop_option_list ')' { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = $3; @@ -10341,7 +10106,7 @@ DropdbStmt: DROP DATABASE database_name n->options = $6; $$ = (Node *)n; } - | DROP DATABASE IF_P EXISTS database_name opt_with '(' drop_option_list ')' + | DROP DATABASE IF_P EXISTS name opt_with '(' drop_option_list ')' { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = $5; @@ -10643,7 +10408,7 @@ ClusterStmt: $$ = (Node*)n; } /* kept for pre-8.3 compatibility */ - | CLUSTER opt_verbose index_name ON qualified_name + | CLUSTER opt_verbose name ON qualified_name { ClusterStmt *n = makeNode(ClusterStmt); n->relation = $5; @@ -10656,7 +10421,7 @@ ClusterStmt: ; cluster_index_specification: - USING index_name { $$ = $2; } + USING name { $$ = $2; } | /*EMPTY*/ { $$ = NULL; } ; @@ -14995,16 +14760,8 @@ name_list: name name: ColId { $$ = $1; }; -database_name: - ColId { $$ = $1; }; - -access_method: - ColId { $$ = $1; }; - attr_name: ColLabel { $$ = $1; }; -index_name: ColId { $$ = $1; }; - file_name: Sconst { $$ = $1; }; /* diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 309378ae54e4e..e96134dac8aae 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -1807,11 +1807,7 @@ pgstat_initstats(Relation rel) char relkind = rel->rd_rel->relkind; /* We only count stats for things that have storage */ - if (!(relkind == RELKIND_RELATION || - relkind == RELKIND_MATVIEW || - relkind == RELKIND_INDEX || - relkind == RELKIND_TOASTVALUE || - relkind == RELKIND_SEQUENCE)) + if (!RELKIND_HAS_STORAGE(relkind)) { rel->pgstat_info = NULL; return; diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c index 1ca4479605c53..dec9e9511957b 100644 --- a/src/backend/replication/logical/origin.c +++ b/src/backend/replication/logical/origin.c @@ -427,7 +427,7 @@ replorigin_drop(RepOriginId roident, bool nowait) /* - * Lookup replication origin via it's oid and return the name. + * Lookup replication origin via its oid and return the name. * * The external name is palloc'd in the calling context. * diff --git a/src/backend/replication/logical/relation.c b/src/backend/replication/logical/relation.c index 5781b42af62dc..a60c73d74d5b8 100644 --- a/src/backend/replication/logical/relation.c +++ b/src/backend/replication/logical/relation.c @@ -576,7 +576,7 @@ logicalrep_partmap_init(void) * the attribute map, which can be different for the partition. * * Note there's no logicalrep_partition_close, because the caller closes the - * the component relation. + * component relation. */ LogicalRepRelMapEntry * logicalrep_partition_open(LogicalRepRelMapEntry *root, diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index 84fcd29ac9d23..642a1c767f3a8 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -2359,12 +2359,13 @@ ReorderBufferLargestTXN(ReorderBuffer *rb) /* * Check whether the logical_decoding_work_mem limit was reached, and if yes - * pick the transaction to evict and spill the changes to disk. + * pick the largest (sub)transaction at-a-time to evict and spill its changes to + * disk until we reach under the memory limit. * - * XXX At this point we select just a single (largest) transaction, but - * we might also adapt a more elaborate eviction strategy - for example - * evicting enough transactions to free certain fraction (e.g. 50%) of - * the memory limit. + * XXX At this point we select the transactions until we reach under the memory + * limit, but we might also adapt a more elaborate eviction strategy - for example + * evicting enough transactions to free certain fraction (e.g. 50%) of the memory + * limit. */ static void ReorderBufferCheckMemoryLimit(ReorderBuffer *rb) @@ -2376,30 +2377,33 @@ ReorderBufferCheckMemoryLimit(ReorderBuffer *rb) return; /* - * Pick the largest transaction (or subtransaction) and evict it from - * memory by serializing it to disk. + * Loop until we reach under the memory limit. One might think that just + * by evicting the largest (sub)transaction we will come under the memory + * limit based on assumption that the selected transaction is at least as + * large as the most recent change (which caused us to go over the memory + * limit). However, that is not true because a user can reduce the + * logical_decoding_work_mem to a smaller value before the most recent + * change. */ - txn = ReorderBufferLargestTXN(rb); + while (rb->size >= logical_decoding_work_mem * 1024L) + { + /* + * Pick the largest transaction (or subtransaction) and evict it from + * memory by serializing it to disk. + */ + txn = ReorderBufferLargestTXN(rb); - ReorderBufferSerializeTXN(rb, txn); + ReorderBufferSerializeTXN(rb, txn); - /* - * After eviction, the transaction should have no entries in memory, and - * should use 0 bytes for changes. - */ - Assert(txn->size == 0); - Assert(txn->nentries_mem == 0); + /* + * After eviction, the transaction should have no entries in memory, + * and should use 0 bytes for changes. + */ + Assert(txn->size == 0); + Assert(txn->nentries_mem == 0); + } - /* - * And furthermore, evicting the transaction should get us below the - * memory limit again - it is not possible that we're still exceeding the - * memory limit after evicting the transaction. - * - * This follows from the simple fact that the selected transaction is at - * least as large as the most recent change (which caused us to go over - * the memory limit). So by evicting it we're definitely back below the - * memory limit. - */ + /* We must be under the memory limit now. */ Assert(rb->size < logical_decoding_work_mem * 1024L); } diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 2364cbfc61b56..e2477c47e0a16 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -130,13 +130,11 @@ bool log_replication_commands = false; bool wake_wal_senders = false; /* - * Physical walsender does not use xlogreader to read WAL, but it does use a - * fake one to keep state. Logical walsender uses a proper xlogreader. Both - * keep the 'xlogreader' pointer to the right one, for the sake of common - * routines. + * xlogreader used for replication. Note that a WAL sender doing physical + * replication does not need xlogreader to read WAL, but it needs one to + * keep a state of its work. */ -static XLogReaderState fake_xlogreader; -static XLogReaderState *xlogreader; +static XLogReaderState *xlogreader = NULL; /* * These variables keep track of the state of the timeline we're currently @@ -285,20 +283,6 @@ InitWalSender(void) /* Initialize empty timestamp buffer for lag tracking. */ lag_tracker = MemoryContextAllocZero(TopMemoryContext, sizeof(LagTracker)); - - /* - * Prepare physical walsender's fake xlogreader struct. Logical walsender - * does this later. - */ - if (!am_db_walsender) - { - xlogreader = &fake_xlogreader; - xlogreader->routine = - *XL_ROUTINE(.segment_open = WalSndSegmentOpen, - .segment_close = wal_segment_close); - WALOpenSegmentInit(&xlogreader->seg, &xlogreader->segcxt, - wal_segment_size, NULL); - } } /* @@ -594,6 +578,18 @@ StartReplication(StartReplicationCmd *cmd) (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("IDENTIFY_SYSTEM has not been run before START_REPLICATION"))); + /* create xlogreader for physical replication */ + xlogreader = + XLogReaderAllocate(wal_segment_size, NULL, + XL_ROUTINE(.segment_open = WalSndSegmentOpen, + .segment_close = wal_segment_close), + NULL); + + if (!xlogreader) + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"))); + /* * We assume here that we're logging enough information in the WAL for * log-shipping, since this is checked in PostmasterMain(). @@ -1643,6 +1639,8 @@ exec_replication_command(const char *cmd_string) StartReplication(cmd); else StartLogicalReplication(cmd); + + Assert(xlogreader != NULL); break; } diff --git a/src/backend/snowball/Makefile b/src/backend/snowball/Makefile index 539f572d81a23..ad8482cdd1a71 100644 --- a/src/backend/snowball/Makefile +++ b/src/backend/snowball/Makefile @@ -23,6 +23,8 @@ OBJS = \ utilities.o OBJS += \ + stem_ISO_8859_1_basque.o \ + stem_ISO_8859_1_catalan.o \ stem_ISO_8859_1_danish.o \ stem_ISO_8859_1_dutch.o \ stem_ISO_8859_1_english.o \ @@ -41,6 +43,8 @@ OBJS += \ stem_ISO_8859_2_romanian.o \ stem_KOI8_R_russian.o \ stem_UTF_8_arabic.o \ + stem_UTF_8_basque.o \ + stem_UTF_8_catalan.o \ stem_UTF_8_danish.o \ stem_UTF_8_dutch.o \ stem_UTF_8_english.o \ @@ -48,6 +52,7 @@ OBJS += \ stem_UTF_8_french.o \ stem_UTF_8_german.o \ stem_UTF_8_greek.o \ + stem_UTF_8_hindi.o \ stem_UTF_8_hungarian.o \ stem_UTF_8_indonesian.o \ stem_UTF_8_irish.o \ @@ -70,6 +75,8 @@ OBJS += \ # must come after creation of that language LANGUAGES= \ arabic arabic \ + basque basque \ + catalan catalan \ danish danish \ dutch dutch \ english english \ @@ -77,6 +84,7 @@ LANGUAGES= \ french french \ german german \ greek greek \ + hindi english \ hungarian hungarian \ indonesian indonesian \ irish irish \ diff --git a/src/backend/snowball/README b/src/backend/snowball/README index 3463289f1c4b2..92ee16901fe6c 100644 --- a/src/backend/snowball/README +++ b/src/backend/snowball/README @@ -7,7 +7,7 @@ This module uses the word stemming code developed by the Snowball project, http://snowballstem.org (formerly http://snowball.tartarus.org) which is released by them under a BSD-style license. -The Snowball project is not currently making formal releases; it's best +The Snowball project does not often make formal releases; it's best to pull from their git repository git clone https://github.com/snowballstem/snowball.git @@ -29,8 +29,8 @@ We choose to include the derived files in the PostgreSQL distribution because most installations will not have the Snowball compiler available. We are currently synced with the Snowball git commit -4456b82c26c02493e8807a66f30593a98c5d2888 -of 2019-06-24. +c70ed64f9d41c1032fba4e962b054f8e9d489a74 (tag v2.0.0) +of 2019-10-02. To update the PostgreSQL sources from a new Snowball version: @@ -44,6 +44,9 @@ do sed 's|\.\./runtime/header\.h|header.h|' $f >libstemmer/`basename $f` done +Do not copy stemmers that are listed in libstemmer/modules.txt as +nonstandard, such as "german2" or "lovins". + 2. Copy the *.c files in snowball/runtime/ to src/backend/snowball/libstemmer, and edit them to remove direct inclusions of system headers such as --- they should only include "header.h". diff --git a/src/backend/snowball/dict_snowball.c b/src/backend/snowball/dict_snowball.c index 144120a564fba..4e1aceee02573 100644 --- a/src/backend/snowball/dict_snowball.c +++ b/src/backend/snowball/dict_snowball.c @@ -26,6 +26,8 @@ /* Now we can include the original Snowball header.h */ #include "snowball/libstemmer/header.h" +#include "snowball/libstemmer/stem_ISO_8859_1_basque.h" +#include "snowball/libstemmer/stem_ISO_8859_1_catalan.h" #include "snowball/libstemmer/stem_ISO_8859_1_danish.h" #include "snowball/libstemmer/stem_ISO_8859_1_dutch.h" #include "snowball/libstemmer/stem_ISO_8859_1_english.h" @@ -44,6 +46,8 @@ #include "snowball/libstemmer/stem_ISO_8859_2_romanian.h" #include "snowball/libstemmer/stem_KOI8_R_russian.h" #include "snowball/libstemmer/stem_UTF_8_arabic.h" +#include "snowball/libstemmer/stem_UTF_8_basque.h" +#include "snowball/libstemmer/stem_UTF_8_catalan.h" #include "snowball/libstemmer/stem_UTF_8_danish.h" #include "snowball/libstemmer/stem_UTF_8_dutch.h" #include "snowball/libstemmer/stem_UTF_8_english.h" @@ -51,6 +55,7 @@ #include "snowball/libstemmer/stem_UTF_8_french.h" #include "snowball/libstemmer/stem_UTF_8_german.h" #include "snowball/libstemmer/stem_UTF_8_greek.h" +#include "snowball/libstemmer/stem_UTF_8_hindi.h" #include "snowball/libstemmer/stem_UTF_8_hungarian.h" #include "snowball/libstemmer/stem_UTF_8_indonesian.h" #include "snowball/libstemmer/stem_UTF_8_irish.h" @@ -92,6 +97,8 @@ static const stemmer_module stemmer_modules[] = /* * Stemmers list from Snowball distribution */ + STEMMER_MODULE(basque, PG_LATIN1, ISO_8859_1), + STEMMER_MODULE(catalan, PG_LATIN1, ISO_8859_1), STEMMER_MODULE(danish, PG_LATIN1, ISO_8859_1), STEMMER_MODULE(dutch, PG_LATIN1, ISO_8859_1), STEMMER_MODULE(english, PG_LATIN1, ISO_8859_1), @@ -110,6 +117,8 @@ static const stemmer_module stemmer_modules[] = STEMMER_MODULE(romanian, PG_LATIN2, ISO_8859_2), STEMMER_MODULE(russian, PG_KOI8R, KOI8_R), STEMMER_MODULE(arabic, PG_UTF8, UTF_8), + STEMMER_MODULE(basque, PG_UTF8, UTF_8), + STEMMER_MODULE(catalan, PG_UTF8, UTF_8), STEMMER_MODULE(danish, PG_UTF8, UTF_8), STEMMER_MODULE(dutch, PG_UTF8, UTF_8), STEMMER_MODULE(english, PG_UTF8, UTF_8), @@ -117,6 +126,7 @@ static const stemmer_module stemmer_modules[] = STEMMER_MODULE(french, PG_UTF8, UTF_8), STEMMER_MODULE(german, PG_UTF8, UTF_8), STEMMER_MODULE(greek, PG_UTF8, UTF_8), + STEMMER_MODULE(hindi, PG_UTF8, UTF_8), STEMMER_MODULE(hungarian, PG_UTF8, UTF_8), STEMMER_MODULE(indonesian, PG_UTF8, UTF_8), STEMMER_MODULE(irish, PG_UTF8, UTF_8), diff --git a/src/backend/snowball/libstemmer/api.c b/src/backend/snowball/libstemmer/api.c index 530b427a466ce..8dd32df3d4298 100644 --- a/src/backend/snowball/libstemmer/api.c +++ b/src/backend/snowball/libstemmer/api.c @@ -61,4 +61,3 @@ extern int SN_set_current(struct SN_env * z, int size, const symbol * s) z->c = 0; return err; } - diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c new file mode 100644 index 0000000000000..7f080d8e84cef --- /dev/null +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c @@ -0,0 +1,1184 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#include "header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int basque_ISO_8859_1_stem(struct SN_env * z); +#ifdef __cplusplus +} +#endif +static int r_R1(struct SN_env * z); +static int r_R2(struct SN_env * z); +static int r_RV(struct SN_env * z); +static int r_mark_regions(struct SN_env * z); +static int r_adjetiboak(struct SN_env * z); +static int r_izenak(struct SN_env * z); +static int r_aditzak(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * basque_ISO_8859_1_create_env(void); +extern void basque_ISO_8859_1_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_0[4] = { 'i', 'd', 'e', 'a' }; +static const symbol s_0_1[5] = { 'b', 'i', 'd', 'e', 'a' }; +static const symbol s_0_2[5] = { 'k', 'i', 'd', 'e', 'a' }; +static const symbol s_0_3[5] = { 'p', 'i', 'd', 'e', 'a' }; +static const symbol s_0_4[6] = { 'k', 'u', 'n', 'd', 'e', 'a' }; +static const symbol s_0_5[5] = { 'g', 'a', 'l', 'e', 'a' }; +static const symbol s_0_6[6] = { 't', 'a', 'i', 'l', 'e', 'a' }; +static const symbol s_0_7[7] = { 't', 'z', 'a', 'i', 'l', 'e', 'a' }; +static const symbol s_0_8[5] = { 'g', 'u', 'n', 'e', 'a' }; +static const symbol s_0_9[5] = { 'k', 'u', 'n', 'e', 'a' }; +static const symbol s_0_10[5] = { 't', 'z', 'a', 'g', 'a' }; +static const symbol s_0_11[4] = { 'g', 'a', 'i', 'a' }; +static const symbol s_0_12[5] = { 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_0_13[6] = { 't', 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_0_14[5] = { 'k', 'a', 'r', 'i', 'a' }; +static const symbol s_0_15[6] = { 'g', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_0_16[6] = { 'k', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_0_17[2] = { 'k', 'a' }; +static const symbol s_0_18[5] = { 't', 'z', 'a', 'k', 'a' }; +static const symbol s_0_19[2] = { 'l', 'a' }; +static const symbol s_0_20[4] = { 'm', 'e', 'n', 'a' }; +static const symbol s_0_21[4] = { 'p', 'e', 'n', 'a' }; +static const symbol s_0_22[4] = { 'k', 'i', 'n', 'a' }; +static const symbol s_0_23[5] = { 'e', 'z', 'i', 'n', 'a' }; +static const symbol s_0_24[6] = { 't', 'e', 'z', 'i', 'n', 'a' }; +static const symbol s_0_25[4] = { 'k', 'u', 'n', 'a' }; +static const symbol s_0_26[4] = { 't', 'u', 'n', 'a' }; +static const symbol s_0_27[6] = { 'k', 'i', 'z', 'u', 'n', 'a' }; +static const symbol s_0_28[3] = { 'e', 'r', 'a' }; +static const symbol s_0_29[4] = { 'b', 'e', 'r', 'a' }; +static const symbol s_0_30[7] = { 'a', 'r', 'a', 'b', 'e', 'r', 'a' }; +static const symbol s_0_31[4] = { 'k', 'e', 'r', 'a' }; +static const symbol s_0_32[4] = { 'p', 'e', 'r', 'a' }; +static const symbol s_0_33[4] = { 'o', 'r', 'r', 'a' }; +static const symbol s_0_34[5] = { 'k', 'o', 'r', 'r', 'a' }; +static const symbol s_0_35[4] = { 'd', 'u', 'r', 'a' }; +static const symbol s_0_36[4] = { 'g', 'u', 'r', 'a' }; +static const symbol s_0_37[4] = { 'k', 'u', 'r', 'a' }; +static const symbol s_0_38[4] = { 't', 'u', 'r', 'a' }; +static const symbol s_0_39[3] = { 'e', 't', 'a' }; +static const symbol s_0_40[4] = { 'k', 'e', 't', 'a' }; +static const symbol s_0_41[6] = { 'g', 'a', 'i', 'l', 'u', 'a' }; +static const symbol s_0_42[3] = { 'e', 'z', 'a' }; +static const symbol s_0_43[6] = { 'e', 'r', 'r', 'e', 'z', 'a' }; +static const symbol s_0_44[3] = { 't', 'z', 'a' }; +static const symbol s_0_45[6] = { 'g', 'a', 'i', 't', 'z', 'a' }; +static const symbol s_0_46[6] = { 'k', 'a', 'i', 't', 'z', 'a' }; +static const symbol s_0_47[6] = { 'k', 'u', 'n', 't', 'z', 'a' }; +static const symbol s_0_48[3] = { 'i', 'd', 'e' }; +static const symbol s_0_49[4] = { 'b', 'i', 'd', 'e' }; +static const symbol s_0_50[4] = { 'k', 'i', 'd', 'e' }; +static const symbol s_0_51[4] = { 'p', 'i', 'd', 'e' }; +static const symbol s_0_52[5] = { 'k', 'u', 'n', 'd', 'e' }; +static const symbol s_0_53[5] = { 't', 'z', 'a', 'k', 'e' }; +static const symbol s_0_54[5] = { 't', 'z', 'e', 'k', 'e' }; +static const symbol s_0_55[2] = { 'l', 'e' }; +static const symbol s_0_56[4] = { 'g', 'a', 'l', 'e' }; +static const symbol s_0_57[5] = { 't', 'a', 'i', 'l', 'e' }; +static const symbol s_0_58[6] = { 't', 'z', 'a', 'i', 'l', 'e' }; +static const symbol s_0_59[4] = { 'g', 'u', 'n', 'e' }; +static const symbol s_0_60[4] = { 'k', 'u', 'n', 'e' }; +static const symbol s_0_61[3] = { 't', 'z', 'e' }; +static const symbol s_0_62[4] = { 'a', 't', 'z', 'e' }; +static const symbol s_0_63[3] = { 'g', 'a', 'i' }; +static const symbol s_0_64[4] = { 'a', 'l', 'd', 'i' }; +static const symbol s_0_65[5] = { 't', 'a', 'l', 'd', 'i' }; +static const symbol s_0_66[2] = { 'k', 'i' }; +static const symbol s_0_67[3] = { 'a', 'r', 'i' }; +static const symbol s_0_68[4] = { 'k', 'a', 'r', 'i' }; +static const symbol s_0_69[4] = { 'l', 'a', 'r', 'i' }; +static const symbol s_0_70[4] = { 't', 'a', 'r', 'i' }; +static const symbol s_0_71[5] = { 'e', 't', 'a', 'r', 'i' }; +static const symbol s_0_72[5] = { 'g', 'a', 'r', 'r', 'i' }; +static const symbol s_0_73[5] = { 'k', 'a', 'r', 'r', 'i' }; +static const symbol s_0_74[5] = { 'a', 'r', 'a', 'z', 'i' }; +static const symbol s_0_75[6] = { 't', 'a', 'r', 'a', 'z', 'i' }; +static const symbol s_0_76[2] = { 'a', 'n' }; +static const symbol s_0_77[3] = { 'e', 'a', 'n' }; +static const symbol s_0_78[4] = { 'r', 'e', 'a', 'n' }; +static const symbol s_0_79[3] = { 'k', 'a', 'n' }; +static const symbol s_0_80[4] = { 'e', 't', 'a', 'n' }; +static const symbol s_0_81[7] = { 'a', 't', 's', 'e', 'd', 'e', 'n' }; +static const symbol s_0_82[3] = { 'm', 'e', 'n' }; +static const symbol s_0_83[3] = { 'p', 'e', 'n' }; +static const symbol s_0_84[3] = { 'k', 'i', 'n' }; +static const symbol s_0_85[5] = { 'r', 'e', 'k', 'i', 'n' }; +static const symbol s_0_86[4] = { 'e', 'z', 'i', 'n' }; +static const symbol s_0_87[5] = { 't', 'e', 'z', 'i', 'n' }; +static const symbol s_0_88[3] = { 't', 'u', 'n' }; +static const symbol s_0_89[5] = { 'k', 'i', 'z', 'u', 'n' }; +static const symbol s_0_90[2] = { 'g', 'o' }; +static const symbol s_0_91[3] = { 'a', 'g', 'o' }; +static const symbol s_0_92[3] = { 't', 'i', 'o' }; +static const symbol s_0_93[4] = { 'd', 'a', 'k', 'o' }; +static const symbol s_0_94[2] = { 'o', 'r' }; +static const symbol s_0_95[3] = { 'k', 'o', 'r' }; +static const symbol s_0_96[4] = { 't', 'z', 'a', 't' }; +static const symbol s_0_97[2] = { 'd', 'u' }; +static const symbol s_0_98[5] = { 'g', 'a', 'i', 'l', 'u' }; +static const symbol s_0_99[2] = { 't', 'u' }; +static const symbol s_0_100[3] = { 'a', 't', 'u' }; +static const symbol s_0_101[6] = { 'a', 'l', 'd', 'a', 't', 'u' }; +static const symbol s_0_102[4] = { 't', 'a', 't', 'u' }; +static const symbol s_0_103[6] = { 'b', 'a', 'd', 'i', 't', 'u' }; +static const symbol s_0_104[2] = { 'e', 'z' }; +static const symbol s_0_105[5] = { 'e', 'r', 'r', 'e', 'z' }; +static const symbol s_0_106[4] = { 't', 'z', 'e', 'z' }; +static const symbol s_0_107[5] = { 'g', 'a', 'i', 't', 'z' }; +static const symbol s_0_108[5] = { 'k', 'a', 'i', 't', 'z' }; + +static const struct among a_0[109] = +{ +/* 0 */ { 4, s_0_0, -1, 1, 0}, +/* 1 */ { 5, s_0_1, 0, 1, 0}, +/* 2 */ { 5, s_0_2, 0, 1, 0}, +/* 3 */ { 5, s_0_3, 0, 1, 0}, +/* 4 */ { 6, s_0_4, -1, 1, 0}, +/* 5 */ { 5, s_0_5, -1, 1, 0}, +/* 6 */ { 6, s_0_6, -1, 1, 0}, +/* 7 */ { 7, s_0_7, -1, 1, 0}, +/* 8 */ { 5, s_0_8, -1, 1, 0}, +/* 9 */ { 5, s_0_9, -1, 1, 0}, +/* 10 */ { 5, s_0_10, -1, 1, 0}, +/* 11 */ { 4, s_0_11, -1, 1, 0}, +/* 12 */ { 5, s_0_12, -1, 1, 0}, +/* 13 */ { 6, s_0_13, 12, 1, 0}, +/* 14 */ { 5, s_0_14, -1, 1, 0}, +/* 15 */ { 6, s_0_15, -1, 2, 0}, +/* 16 */ { 6, s_0_16, -1, 1, 0}, +/* 17 */ { 2, s_0_17, -1, 1, 0}, +/* 18 */ { 5, s_0_18, 17, 1, 0}, +/* 19 */ { 2, s_0_19, -1, 1, 0}, +/* 20 */ { 4, s_0_20, -1, 1, 0}, +/* 21 */ { 4, s_0_21, -1, 1, 0}, +/* 22 */ { 4, s_0_22, -1, 1, 0}, +/* 23 */ { 5, s_0_23, -1, 1, 0}, +/* 24 */ { 6, s_0_24, 23, 1, 0}, +/* 25 */ { 4, s_0_25, -1, 1, 0}, +/* 26 */ { 4, s_0_26, -1, 1, 0}, +/* 27 */ { 6, s_0_27, -1, 1, 0}, +/* 28 */ { 3, s_0_28, -1, 1, 0}, +/* 29 */ { 4, s_0_29, 28, 1, 0}, +/* 30 */ { 7, s_0_30, 29, 4, 0}, +/* 31 */ { 4, s_0_31, 28, 1, 0}, +/* 32 */ { 4, s_0_32, 28, 1, 0}, +/* 33 */ { 4, s_0_33, -1, 1, 0}, +/* 34 */ { 5, s_0_34, 33, 1, 0}, +/* 35 */ { 4, s_0_35, -1, 1, 0}, +/* 36 */ { 4, s_0_36, -1, 1, 0}, +/* 37 */ { 4, s_0_37, -1, 1, 0}, +/* 38 */ { 4, s_0_38, -1, 1, 0}, +/* 39 */ { 3, s_0_39, -1, 1, 0}, +/* 40 */ { 4, s_0_40, 39, 1, 0}, +/* 41 */ { 6, s_0_41, -1, 1, 0}, +/* 42 */ { 3, s_0_42, -1, 1, 0}, +/* 43 */ { 6, s_0_43, 42, 1, 0}, +/* 44 */ { 3, s_0_44, -1, 2, 0}, +/* 45 */ { 6, s_0_45, 44, 1, 0}, +/* 46 */ { 6, s_0_46, 44, 1, 0}, +/* 47 */ { 6, s_0_47, 44, 1, 0}, +/* 48 */ { 3, s_0_48, -1, 1, 0}, +/* 49 */ { 4, s_0_49, 48, 1, 0}, +/* 50 */ { 4, s_0_50, 48, 1, 0}, +/* 51 */ { 4, s_0_51, 48, 1, 0}, +/* 52 */ { 5, s_0_52, -1, 1, 0}, +/* 53 */ { 5, s_0_53, -1, 1, 0}, +/* 54 */ { 5, s_0_54, -1, 1, 0}, +/* 55 */ { 2, s_0_55, -1, 1, 0}, +/* 56 */ { 4, s_0_56, 55, 1, 0}, +/* 57 */ { 5, s_0_57, 55, 1, 0}, +/* 58 */ { 6, s_0_58, 55, 1, 0}, +/* 59 */ { 4, s_0_59, -1, 1, 0}, +/* 60 */ { 4, s_0_60, -1, 1, 0}, +/* 61 */ { 3, s_0_61, -1, 1, 0}, +/* 62 */ { 4, s_0_62, 61, 1, 0}, +/* 63 */ { 3, s_0_63, -1, 1, 0}, +/* 64 */ { 4, s_0_64, -1, 1, 0}, +/* 65 */ { 5, s_0_65, 64, 1, 0}, +/* 66 */ { 2, s_0_66, -1, 1, 0}, +/* 67 */ { 3, s_0_67, -1, 1, 0}, +/* 68 */ { 4, s_0_68, 67, 1, 0}, +/* 69 */ { 4, s_0_69, 67, 1, 0}, +/* 70 */ { 4, s_0_70, 67, 1, 0}, +/* 71 */ { 5, s_0_71, 70, 1, 0}, +/* 72 */ { 5, s_0_72, -1, 2, 0}, +/* 73 */ { 5, s_0_73, -1, 1, 0}, +/* 74 */ { 5, s_0_74, -1, 1, 0}, +/* 75 */ { 6, s_0_75, 74, 1, 0}, +/* 76 */ { 2, s_0_76, -1, 1, 0}, +/* 77 */ { 3, s_0_77, 76, 1, 0}, +/* 78 */ { 4, s_0_78, 77, 1, 0}, +/* 79 */ { 3, s_0_79, 76, 1, 0}, +/* 80 */ { 4, s_0_80, 76, 1, 0}, +/* 81 */ { 7, s_0_81, -1, 3, 0}, +/* 82 */ { 3, s_0_82, -1, 1, 0}, +/* 83 */ { 3, s_0_83, -1, 1, 0}, +/* 84 */ { 3, s_0_84, -1, 1, 0}, +/* 85 */ { 5, s_0_85, 84, 1, 0}, +/* 86 */ { 4, s_0_86, -1, 1, 0}, +/* 87 */ { 5, s_0_87, 86, 1, 0}, +/* 88 */ { 3, s_0_88, -1, 1, 0}, +/* 89 */ { 5, s_0_89, -1, 1, 0}, +/* 90 */ { 2, s_0_90, -1, 1, 0}, +/* 91 */ { 3, s_0_91, 90, 1, 0}, +/* 92 */ { 3, s_0_92, -1, 1, 0}, +/* 93 */ { 4, s_0_93, -1, 1, 0}, +/* 94 */ { 2, s_0_94, -1, 1, 0}, +/* 95 */ { 3, s_0_95, 94, 1, 0}, +/* 96 */ { 4, s_0_96, -1, 1, 0}, +/* 97 */ { 2, s_0_97, -1, 1, 0}, +/* 98 */ { 5, s_0_98, -1, 1, 0}, +/* 99 */ { 2, s_0_99, -1, 1, 0}, +/*100 */ { 3, s_0_100, 99, 1, 0}, +/*101 */ { 6, s_0_101, 100, 1, 0}, +/*102 */ { 4, s_0_102, 100, 1, 0}, +/*103 */ { 6, s_0_103, 99, 5, 0}, +/*104 */ { 2, s_0_104, -1, 1, 0}, +/*105 */ { 5, s_0_105, 104, 1, 0}, +/*106 */ { 4, s_0_106, 104, 1, 0}, +/*107 */ { 5, s_0_107, -1, 1, 0}, +/*108 */ { 5, s_0_108, -1, 1, 0} +}; + +static const symbol s_1_0[3] = { 'a', 'd', 'a' }; +static const symbol s_1_1[4] = { 'k', 'a', 'd', 'a' }; +static const symbol s_1_2[4] = { 'a', 'n', 'd', 'a' }; +static const symbol s_1_3[5] = { 'd', 'e', 'n', 'd', 'a' }; +static const symbol s_1_4[5] = { 'g', 'a', 'b', 'e', 'a' }; +static const symbol s_1_5[5] = { 'k', 'a', 'b', 'e', 'a' }; +static const symbol s_1_6[5] = { 'a', 'l', 'd', 'e', 'a' }; +static const symbol s_1_7[6] = { 'k', 'a', 'l', 'd', 'e', 'a' }; +static const symbol s_1_8[6] = { 't', 'a', 'l', 'd', 'e', 'a' }; +static const symbol s_1_9[5] = { 'o', 'r', 'd', 'e', 'a' }; +static const symbol s_1_10[5] = { 'z', 'a', 'l', 'e', 'a' }; +static const symbol s_1_11[6] = { 't', 'z', 'a', 'l', 'e', 'a' }; +static const symbol s_1_12[5] = { 'g', 'i', 'l', 'e', 'a' }; +static const symbol s_1_13[4] = { 'e', 'm', 'e', 'a' }; +static const symbol s_1_14[5] = { 'k', 'u', 'm', 'e', 'a' }; +static const symbol s_1_15[3] = { 'n', 'e', 'a' }; +static const symbol s_1_16[4] = { 'e', 'n', 'e', 'a' }; +static const symbol s_1_17[6] = { 'z', 'i', 'o', 'n', 'e', 'a' }; +static const symbol s_1_18[4] = { 'u', 'n', 'e', 'a' }; +static const symbol s_1_19[5] = { 'g', 'u', 'n', 'e', 'a' }; +static const symbol s_1_20[3] = { 'p', 'e', 'a' }; +static const symbol s_1_21[6] = { 'a', 'u', 'r', 'r', 'e', 'a' }; +static const symbol s_1_22[3] = { 't', 'e', 'a' }; +static const symbol s_1_23[5] = { 'k', 'o', 't', 'e', 'a' }; +static const symbol s_1_24[5] = { 'a', 'r', 't', 'e', 'a' }; +static const symbol s_1_25[5] = { 'o', 's', 't', 'e', 'a' }; +static const symbol s_1_26[5] = { 'e', 't', 'x', 'e', 'a' }; +static const symbol s_1_27[2] = { 'g', 'a' }; +static const symbol s_1_28[4] = { 'a', 'n', 'g', 'a' }; +static const symbol s_1_29[4] = { 'g', 'a', 'i', 'a' }; +static const symbol s_1_30[5] = { 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_1_31[6] = { 't', 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_1_32[6] = { 'h', 'a', 'n', 'd', 'i', 'a' }; +static const symbol s_1_33[6] = { 'm', 'e', 'n', 'd', 'i', 'a' }; +static const symbol s_1_34[4] = { 'g', 'e', 'i', 'a' }; +static const symbol s_1_35[4] = { 'e', 'g', 'i', 'a' }; +static const symbol s_1_36[5] = { 'd', 'e', 'g', 'i', 'a' }; +static const symbol s_1_37[5] = { 't', 'e', 'g', 'i', 'a' }; +static const symbol s_1_38[5] = { 'n', 'a', 'h', 'i', 'a' }; +static const symbol s_1_39[4] = { 'o', 'h', 'i', 'a' }; +static const symbol s_1_40[3] = { 'k', 'i', 'a' }; +static const symbol s_1_41[5] = { 't', 'o', 'k', 'i', 'a' }; +static const symbol s_1_42[3] = { 'o', 'i', 'a' }; +static const symbol s_1_43[4] = { 'k', 'o', 'i', 'a' }; +static const symbol s_1_44[4] = { 'a', 'r', 'i', 'a' }; +static const symbol s_1_45[5] = { 'k', 'a', 'r', 'i', 'a' }; +static const symbol s_1_46[5] = { 'l', 'a', 'r', 'i', 'a' }; +static const symbol s_1_47[5] = { 't', 'a', 'r', 'i', 'a' }; +static const symbol s_1_48[4] = { 'e', 'r', 'i', 'a' }; +static const symbol s_1_49[5] = { 'k', 'e', 'r', 'i', 'a' }; +static const symbol s_1_50[5] = { 't', 'e', 'r', 'i', 'a' }; +static const symbol s_1_51[6] = { 'g', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_1_52[6] = { 'l', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_1_53[6] = { 'k', 'i', 'r', 'r', 'i', 'a' }; +static const symbol s_1_54[5] = { 'd', 'u', 'r', 'i', 'a' }; +static const symbol s_1_55[4] = { 'a', 's', 'i', 'a' }; +static const symbol s_1_56[3] = { 't', 'i', 'a' }; +static const symbol s_1_57[4] = { 'e', 'z', 'i', 'a' }; +static const symbol s_1_58[5] = { 'b', 'i', 'z', 'i', 'a' }; +static const symbol s_1_59[6] = { 'o', 'n', 't', 'z', 'i', 'a' }; +static const symbol s_1_60[2] = { 'k', 'a' }; +static const symbol s_1_61[4] = { 'j', 'o', 'k', 'a' }; +static const symbol s_1_62[5] = { 'a', 'u', 'r', 'k', 'a' }; +static const symbol s_1_63[3] = { 's', 'k', 'a' }; +static const symbol s_1_64[3] = { 'x', 'k', 'a' }; +static const symbol s_1_65[3] = { 'z', 'k', 'a' }; +static const symbol s_1_66[6] = { 'g', 'i', 'b', 'e', 'l', 'a' }; +static const symbol s_1_67[4] = { 'g', 'e', 'l', 'a' }; +static const symbol s_1_68[5] = { 'k', 'a', 'i', 'l', 'a' }; +static const symbol s_1_69[5] = { 's', 'k', 'i', 'l', 'a' }; +static const symbol s_1_70[4] = { 't', 'i', 'l', 'a' }; +static const symbol s_1_71[3] = { 'o', 'l', 'a' }; +static const symbol s_1_72[2] = { 'n', 'a' }; +static const symbol s_1_73[4] = { 'k', 'a', 'n', 'a' }; +static const symbol s_1_74[3] = { 'e', 'n', 'a' }; +static const symbol s_1_75[7] = { 'g', 'a', 'r', 'r', 'e', 'n', 'a' }; +static const symbol s_1_76[7] = { 'g', 'e', 'r', 'r', 'e', 'n', 'a' }; +static const symbol s_1_77[6] = { 'u', 'r', 'r', 'e', 'n', 'a' }; +static const symbol s_1_78[5] = { 'z', 'a', 'i', 'n', 'a' }; +static const symbol s_1_79[6] = { 't', 'z', 'a', 'i', 'n', 'a' }; +static const symbol s_1_80[4] = { 'k', 'i', 'n', 'a' }; +static const symbol s_1_81[4] = { 'm', 'i', 'n', 'a' }; +static const symbol s_1_82[5] = { 'g', 'a', 'r', 'n', 'a' }; +static const symbol s_1_83[3] = { 'u', 'n', 'a' }; +static const symbol s_1_84[4] = { 'd', 'u', 'n', 'a' }; +static const symbol s_1_85[5] = { 'a', 's', 'u', 'n', 'a' }; +static const symbol s_1_86[6] = { 't', 'a', 's', 'u', 'n', 'a' }; +static const symbol s_1_87[5] = { 'o', 'n', 'd', 'o', 'a' }; +static const symbol s_1_88[6] = { 'k', 'o', 'n', 'd', 'o', 'a' }; +static const symbol s_1_89[4] = { 'n', 'g', 'o', 'a' }; +static const symbol s_1_90[4] = { 'z', 'i', 'o', 'a' }; +static const symbol s_1_91[3] = { 'k', 'o', 'a' }; +static const symbol s_1_92[5] = { 't', 'a', 'k', 'o', 'a' }; +static const symbol s_1_93[4] = { 'z', 'k', 'o', 'a' }; +static const symbol s_1_94[3] = { 'n', 'o', 'a' }; +static const symbol s_1_95[5] = { 'z', 'i', 'n', 'o', 'a' }; +static const symbol s_1_96[4] = { 'a', 'r', 'o', 'a' }; +static const symbol s_1_97[5] = { 't', 'a', 'r', 'o', 'a' }; +static const symbol s_1_98[5] = { 'z', 'a', 'r', 'o', 'a' }; +static const symbol s_1_99[4] = { 'e', 'r', 'o', 'a' }; +static const symbol s_1_100[4] = { 'o', 'r', 'o', 'a' }; +static const symbol s_1_101[4] = { 'o', 's', 'o', 'a' }; +static const symbol s_1_102[3] = { 't', 'o', 'a' }; +static const symbol s_1_103[4] = { 't', 't', 'o', 'a' }; +static const symbol s_1_104[4] = { 'z', 't', 'o', 'a' }; +static const symbol s_1_105[4] = { 't', 'x', 'o', 'a' }; +static const symbol s_1_106[4] = { 't', 'z', 'o', 'a' }; +static const symbol s_1_107[3] = { 0xF1, 'o', 'a' }; +static const symbol s_1_108[2] = { 'r', 'a' }; +static const symbol s_1_109[3] = { 'a', 'r', 'a' }; +static const symbol s_1_110[4] = { 'd', 'a', 'r', 'a' }; +static const symbol s_1_111[5] = { 'l', 'i', 'a', 'r', 'a' }; +static const symbol s_1_112[5] = { 't', 'i', 'a', 'r', 'a' }; +static const symbol s_1_113[4] = { 't', 'a', 'r', 'a' }; +static const symbol s_1_114[5] = { 'e', 't', 'a', 'r', 'a' }; +static const symbol s_1_115[5] = { 't', 'z', 'a', 'r', 'a' }; +static const symbol s_1_116[4] = { 'b', 'e', 'r', 'a' }; +static const symbol s_1_117[4] = { 'k', 'e', 'r', 'a' }; +static const symbol s_1_118[4] = { 'p', 'e', 'r', 'a' }; +static const symbol s_1_119[3] = { 'o', 'r', 'a' }; +static const symbol s_1_120[6] = { 't', 'z', 'a', 'r', 'r', 'a' }; +static const symbol s_1_121[5] = { 'k', 'o', 'r', 'r', 'a' }; +static const symbol s_1_122[3] = { 't', 'r', 'a' }; +static const symbol s_1_123[2] = { 's', 'a' }; +static const symbol s_1_124[3] = { 'o', 's', 'a' }; +static const symbol s_1_125[2] = { 't', 'a' }; +static const symbol s_1_126[3] = { 'e', 't', 'a' }; +static const symbol s_1_127[4] = { 'k', 'e', 't', 'a' }; +static const symbol s_1_128[3] = { 's', 't', 'a' }; +static const symbol s_1_129[3] = { 'd', 'u', 'a' }; +static const symbol s_1_130[6] = { 'm', 'e', 'n', 'd', 'u', 'a' }; +static const symbol s_1_131[5] = { 'o', 'r', 'd', 'u', 'a' }; +static const symbol s_1_132[5] = { 'l', 'e', 'k', 'u', 'a' }; +static const symbol s_1_133[5] = { 'b', 'u', 'r', 'u', 'a' }; +static const symbol s_1_134[5] = { 'd', 'u', 'r', 'u', 'a' }; +static const symbol s_1_135[4] = { 't', 's', 'u', 'a' }; +static const symbol s_1_136[3] = { 't', 'u', 'a' }; +static const symbol s_1_137[6] = { 'm', 'e', 'n', 't', 'u', 'a' }; +static const symbol s_1_138[5] = { 'e', 's', 't', 'u', 'a' }; +static const symbol s_1_139[4] = { 't', 'x', 'u', 'a' }; +static const symbol s_1_140[3] = { 'z', 'u', 'a' }; +static const symbol s_1_141[4] = { 't', 'z', 'u', 'a' }; +static const symbol s_1_142[2] = { 'z', 'a' }; +static const symbol s_1_143[3] = { 'e', 'z', 'a' }; +static const symbol s_1_144[5] = { 'e', 'r', 'o', 'z', 'a' }; +static const symbol s_1_145[3] = { 't', 'z', 'a' }; +static const symbol s_1_146[6] = { 'k', 'o', 'i', 't', 'z', 'a' }; +static const symbol s_1_147[5] = { 'a', 'n', 't', 'z', 'a' }; +static const symbol s_1_148[6] = { 'g', 'i', 'n', 't', 'z', 'a' }; +static const symbol s_1_149[6] = { 'k', 'i', 'n', 't', 'z', 'a' }; +static const symbol s_1_150[6] = { 'k', 'u', 'n', 't', 'z', 'a' }; +static const symbol s_1_151[4] = { 'g', 'a', 'b', 'e' }; +static const symbol s_1_152[4] = { 'k', 'a', 'b', 'e' }; +static const symbol s_1_153[4] = { 'k', 'i', 'd', 'e' }; +static const symbol s_1_154[4] = { 'a', 'l', 'd', 'e' }; +static const symbol s_1_155[5] = { 'k', 'a', 'l', 'd', 'e' }; +static const symbol s_1_156[5] = { 't', 'a', 'l', 'd', 'e' }; +static const symbol s_1_157[4] = { 'o', 'r', 'd', 'e' }; +static const symbol s_1_158[2] = { 'g', 'e' }; +static const symbol s_1_159[4] = { 'z', 'a', 'l', 'e' }; +static const symbol s_1_160[5] = { 't', 'z', 'a', 'l', 'e' }; +static const symbol s_1_161[4] = { 'g', 'i', 'l', 'e' }; +static const symbol s_1_162[3] = { 'e', 'm', 'e' }; +static const symbol s_1_163[4] = { 'k', 'u', 'm', 'e' }; +static const symbol s_1_164[2] = { 'n', 'e' }; +static const symbol s_1_165[5] = { 'z', 'i', 'o', 'n', 'e' }; +static const symbol s_1_166[3] = { 'u', 'n', 'e' }; +static const symbol s_1_167[4] = { 'g', 'u', 'n', 'e' }; +static const symbol s_1_168[2] = { 'p', 'e' }; +static const symbol s_1_169[5] = { 'a', 'u', 'r', 'r', 'e' }; +static const symbol s_1_170[2] = { 't', 'e' }; +static const symbol s_1_171[4] = { 'k', 'o', 't', 'e' }; +static const symbol s_1_172[4] = { 'a', 'r', 't', 'e' }; +static const symbol s_1_173[4] = { 'o', 's', 't', 'e' }; +static const symbol s_1_174[4] = { 'e', 't', 'x', 'e' }; +static const symbol s_1_175[3] = { 'g', 'a', 'i' }; +static const symbol s_1_176[2] = { 'd', 'i' }; +static const symbol s_1_177[4] = { 'a', 'l', 'd', 'i' }; +static const symbol s_1_178[5] = { 't', 'a', 'l', 'd', 'i' }; +static const symbol s_1_179[5] = { 'g', 'e', 'l', 'd', 'i' }; +static const symbol s_1_180[5] = { 'h', 'a', 'n', 'd', 'i' }; +static const symbol s_1_181[5] = { 'm', 'e', 'n', 'd', 'i' }; +static const symbol s_1_182[3] = { 'g', 'e', 'i' }; +static const symbol s_1_183[3] = { 'e', 'g', 'i' }; +static const symbol s_1_184[4] = { 'd', 'e', 'g', 'i' }; +static const symbol s_1_185[4] = { 't', 'e', 'g', 'i' }; +static const symbol s_1_186[4] = { 'n', 'a', 'h', 'i' }; +static const symbol s_1_187[3] = { 'o', 'h', 'i' }; +static const symbol s_1_188[2] = { 'k', 'i' }; +static const symbol s_1_189[4] = { 't', 'o', 'k', 'i' }; +static const symbol s_1_190[2] = { 'o', 'i' }; +static const symbol s_1_191[3] = { 'g', 'o', 'i' }; +static const symbol s_1_192[3] = { 'k', 'o', 'i' }; +static const symbol s_1_193[3] = { 'a', 'r', 'i' }; +static const symbol s_1_194[4] = { 'k', 'a', 'r', 'i' }; +static const symbol s_1_195[4] = { 'l', 'a', 'r', 'i' }; +static const symbol s_1_196[4] = { 't', 'a', 'r', 'i' }; +static const symbol s_1_197[5] = { 'g', 'a', 'r', 'r', 'i' }; +static const symbol s_1_198[5] = { 'l', 'a', 'r', 'r', 'i' }; +static const symbol s_1_199[5] = { 'k', 'i', 'r', 'r', 'i' }; +static const symbol s_1_200[4] = { 'd', 'u', 'r', 'i' }; +static const symbol s_1_201[3] = { 'a', 's', 'i' }; +static const symbol s_1_202[2] = { 't', 'i' }; +static const symbol s_1_203[5] = { 'o', 'n', 't', 'z', 'i' }; +static const symbol s_1_204[2] = { 0xF1, 'i' }; +static const symbol s_1_205[2] = { 'a', 'k' }; +static const symbol s_1_206[2] = { 'e', 'k' }; +static const symbol s_1_207[5] = { 't', 'a', 'r', 'i', 'k' }; +static const symbol s_1_208[5] = { 'g', 'i', 'b', 'e', 'l' }; +static const symbol s_1_209[3] = { 'a', 'i', 'l' }; +static const symbol s_1_210[4] = { 'k', 'a', 'i', 'l' }; +static const symbol s_1_211[3] = { 'k', 'a', 'n' }; +static const symbol s_1_212[3] = { 't', 'a', 'n' }; +static const symbol s_1_213[4] = { 'e', 't', 'a', 'n' }; +static const symbol s_1_214[2] = { 'e', 'n' }; +static const symbol s_1_215[3] = { 'r', 'e', 'n' }; +static const symbol s_1_216[6] = { 'g', 'a', 'r', 'r', 'e', 'n' }; +static const symbol s_1_217[6] = { 'g', 'e', 'r', 'r', 'e', 'n' }; +static const symbol s_1_218[5] = { 'u', 'r', 'r', 'e', 'n' }; +static const symbol s_1_219[3] = { 't', 'e', 'n' }; +static const symbol s_1_220[4] = { 't', 'z', 'e', 'n' }; +static const symbol s_1_221[4] = { 'z', 'a', 'i', 'n' }; +static const symbol s_1_222[5] = { 't', 'z', 'a', 'i', 'n' }; +static const symbol s_1_223[3] = { 'k', 'i', 'n' }; +static const symbol s_1_224[3] = { 'm', 'i', 'n' }; +static const symbol s_1_225[3] = { 'd', 'u', 'n' }; +static const symbol s_1_226[4] = { 'a', 's', 'u', 'n' }; +static const symbol s_1_227[5] = { 't', 'a', 's', 'u', 'n' }; +static const symbol s_1_228[5] = { 'a', 'i', 'z', 'u', 'n' }; +static const symbol s_1_229[4] = { 'o', 'n', 'd', 'o' }; +static const symbol s_1_230[5] = { 'k', 'o', 'n', 'd', 'o' }; +static const symbol s_1_231[2] = { 'g', 'o' }; +static const symbol s_1_232[3] = { 'n', 'g', 'o' }; +static const symbol s_1_233[3] = { 'z', 'i', 'o' }; +static const symbol s_1_234[2] = { 'k', 'o' }; +static const symbol s_1_235[5] = { 't', 'r', 'a', 'k', 'o' }; +static const symbol s_1_236[4] = { 't', 'a', 'k', 'o' }; +static const symbol s_1_237[5] = { 'e', 't', 'a', 'k', 'o' }; +static const symbol s_1_238[3] = { 'e', 'k', 'o' }; +static const symbol s_1_239[6] = { 't', 'a', 'r', 'i', 'k', 'o' }; +static const symbol s_1_240[3] = { 's', 'k', 'o' }; +static const symbol s_1_241[4] = { 't', 'u', 'k', 'o' }; +static const symbol s_1_242[8] = { 'm', 'i', 'n', 'u', 't', 'u', 'k', 'o' }; +static const symbol s_1_243[3] = { 'z', 'k', 'o' }; +static const symbol s_1_244[2] = { 'n', 'o' }; +static const symbol s_1_245[4] = { 'z', 'i', 'n', 'o' }; +static const symbol s_1_246[2] = { 'r', 'o' }; +static const symbol s_1_247[3] = { 'a', 'r', 'o' }; +static const symbol s_1_248[5] = { 'i', 'g', 'a', 'r', 'o' }; +static const symbol s_1_249[4] = { 't', 'a', 'r', 'o' }; +static const symbol s_1_250[4] = { 'z', 'a', 'r', 'o' }; +static const symbol s_1_251[3] = { 'e', 'r', 'o' }; +static const symbol s_1_252[4] = { 'g', 'i', 'r', 'o' }; +static const symbol s_1_253[3] = { 'o', 'r', 'o' }; +static const symbol s_1_254[3] = { 'o', 's', 'o' }; +static const symbol s_1_255[2] = { 't', 'o' }; +static const symbol s_1_256[3] = { 't', 't', 'o' }; +static const symbol s_1_257[3] = { 'z', 't', 'o' }; +static const symbol s_1_258[3] = { 't', 'x', 'o' }; +static const symbol s_1_259[3] = { 't', 'z', 'o' }; +static const symbol s_1_260[6] = { 'g', 'i', 'n', 't', 'z', 'o' }; +static const symbol s_1_261[2] = { 0xF1, 'o' }; +static const symbol s_1_262[2] = { 'z', 'p' }; +static const symbol s_1_263[2] = { 'a', 'r' }; +static const symbol s_1_264[3] = { 'd', 'a', 'r' }; +static const symbol s_1_265[5] = { 'b', 'e', 'h', 'a', 'r' }; +static const symbol s_1_266[5] = { 'z', 'e', 'h', 'a', 'r' }; +static const symbol s_1_267[4] = { 'l', 'i', 'a', 'r' }; +static const symbol s_1_268[4] = { 't', 'i', 'a', 'r' }; +static const symbol s_1_269[3] = { 't', 'a', 'r' }; +static const symbol s_1_270[4] = { 't', 'z', 'a', 'r' }; +static const symbol s_1_271[2] = { 'o', 'r' }; +static const symbol s_1_272[3] = { 'k', 'o', 'r' }; +static const symbol s_1_273[2] = { 'o', 's' }; +static const symbol s_1_274[3] = { 'k', 'e', 't' }; +static const symbol s_1_275[2] = { 'd', 'u' }; +static const symbol s_1_276[5] = { 'm', 'e', 'n', 'd', 'u' }; +static const symbol s_1_277[4] = { 'o', 'r', 'd', 'u' }; +static const symbol s_1_278[4] = { 'l', 'e', 'k', 'u' }; +static const symbol s_1_279[4] = { 'b', 'u', 'r', 'u' }; +static const symbol s_1_280[4] = { 'd', 'u', 'r', 'u' }; +static const symbol s_1_281[3] = { 't', 's', 'u' }; +static const symbol s_1_282[2] = { 't', 'u' }; +static const symbol s_1_283[4] = { 't', 'a', 't', 'u' }; +static const symbol s_1_284[5] = { 'm', 'e', 'n', 't', 'u' }; +static const symbol s_1_285[4] = { 'e', 's', 't', 'u' }; +static const symbol s_1_286[3] = { 't', 'x', 'u' }; +static const symbol s_1_287[2] = { 'z', 'u' }; +static const symbol s_1_288[3] = { 't', 'z', 'u' }; +static const symbol s_1_289[6] = { 'g', 'i', 'n', 't', 'z', 'u' }; +static const symbol s_1_290[1] = { 'z' }; +static const symbol s_1_291[2] = { 'e', 'z' }; +static const symbol s_1_292[4] = { 'e', 'r', 'o', 'z' }; +static const symbol s_1_293[2] = { 't', 'z' }; +static const symbol s_1_294[5] = { 'k', 'o', 'i', 't', 'z' }; + +static const struct among a_1[295] = +{ +/* 0 */ { 3, s_1_0, -1, 1, 0}, +/* 1 */ { 4, s_1_1, 0, 1, 0}, +/* 2 */ { 4, s_1_2, -1, 1, 0}, +/* 3 */ { 5, s_1_3, -1, 1, 0}, +/* 4 */ { 5, s_1_4, -1, 1, 0}, +/* 5 */ { 5, s_1_5, -1, 1, 0}, +/* 6 */ { 5, s_1_6, -1, 1, 0}, +/* 7 */ { 6, s_1_7, 6, 1, 0}, +/* 8 */ { 6, s_1_8, 6, 1, 0}, +/* 9 */ { 5, s_1_9, -1, 1, 0}, +/* 10 */ { 5, s_1_10, -1, 1, 0}, +/* 11 */ { 6, s_1_11, 10, 1, 0}, +/* 12 */ { 5, s_1_12, -1, 1, 0}, +/* 13 */ { 4, s_1_13, -1, 1, 0}, +/* 14 */ { 5, s_1_14, -1, 1, 0}, +/* 15 */ { 3, s_1_15, -1, 1, 0}, +/* 16 */ { 4, s_1_16, 15, 1, 0}, +/* 17 */ { 6, s_1_17, 15, 1, 0}, +/* 18 */ { 4, s_1_18, 15, 1, 0}, +/* 19 */ { 5, s_1_19, 18, 1, 0}, +/* 20 */ { 3, s_1_20, -1, 1, 0}, +/* 21 */ { 6, s_1_21, -1, 1, 0}, +/* 22 */ { 3, s_1_22, -1, 1, 0}, +/* 23 */ { 5, s_1_23, 22, 1, 0}, +/* 24 */ { 5, s_1_24, 22, 1, 0}, +/* 25 */ { 5, s_1_25, 22, 1, 0}, +/* 26 */ { 5, s_1_26, -1, 1, 0}, +/* 27 */ { 2, s_1_27, -1, 1, 0}, +/* 28 */ { 4, s_1_28, 27, 1, 0}, +/* 29 */ { 4, s_1_29, -1, 1, 0}, +/* 30 */ { 5, s_1_30, -1, 1, 0}, +/* 31 */ { 6, s_1_31, 30, 1, 0}, +/* 32 */ { 6, s_1_32, -1, 1, 0}, +/* 33 */ { 6, s_1_33, -1, 1, 0}, +/* 34 */ { 4, s_1_34, -1, 1, 0}, +/* 35 */ { 4, s_1_35, -1, 1, 0}, +/* 36 */ { 5, s_1_36, 35, 1, 0}, +/* 37 */ { 5, s_1_37, 35, 1, 0}, +/* 38 */ { 5, s_1_38, -1, 1, 0}, +/* 39 */ { 4, s_1_39, -1, 1, 0}, +/* 40 */ { 3, s_1_40, -1, 1, 0}, +/* 41 */ { 5, s_1_41, 40, 1, 0}, +/* 42 */ { 3, s_1_42, -1, 1, 0}, +/* 43 */ { 4, s_1_43, 42, 1, 0}, +/* 44 */ { 4, s_1_44, -1, 1, 0}, +/* 45 */ { 5, s_1_45, 44, 1, 0}, +/* 46 */ { 5, s_1_46, 44, 1, 0}, +/* 47 */ { 5, s_1_47, 44, 1, 0}, +/* 48 */ { 4, s_1_48, -1, 1, 0}, +/* 49 */ { 5, s_1_49, 48, 1, 0}, +/* 50 */ { 5, s_1_50, 48, 1, 0}, +/* 51 */ { 6, s_1_51, -1, 2, 0}, +/* 52 */ { 6, s_1_52, -1, 1, 0}, +/* 53 */ { 6, s_1_53, -1, 1, 0}, +/* 54 */ { 5, s_1_54, -1, 1, 0}, +/* 55 */ { 4, s_1_55, -1, 1, 0}, +/* 56 */ { 3, s_1_56, -1, 1, 0}, +/* 57 */ { 4, s_1_57, -1, 1, 0}, +/* 58 */ { 5, s_1_58, -1, 1, 0}, +/* 59 */ { 6, s_1_59, -1, 1, 0}, +/* 60 */ { 2, s_1_60, -1, 1, 0}, +/* 61 */ { 4, s_1_61, 60, 3, 0}, +/* 62 */ { 5, s_1_62, 60, 10, 0}, +/* 63 */ { 3, s_1_63, 60, 1, 0}, +/* 64 */ { 3, s_1_64, 60, 1, 0}, +/* 65 */ { 3, s_1_65, 60, 1, 0}, +/* 66 */ { 6, s_1_66, -1, 1, 0}, +/* 67 */ { 4, s_1_67, -1, 1, 0}, +/* 68 */ { 5, s_1_68, -1, 1, 0}, +/* 69 */ { 5, s_1_69, -1, 1, 0}, +/* 70 */ { 4, s_1_70, -1, 1, 0}, +/* 71 */ { 3, s_1_71, -1, 1, 0}, +/* 72 */ { 2, s_1_72, -1, 1, 0}, +/* 73 */ { 4, s_1_73, 72, 1, 0}, +/* 74 */ { 3, s_1_74, 72, 1, 0}, +/* 75 */ { 7, s_1_75, 74, 1, 0}, +/* 76 */ { 7, s_1_76, 74, 1, 0}, +/* 77 */ { 6, s_1_77, 74, 1, 0}, +/* 78 */ { 5, s_1_78, 72, 1, 0}, +/* 79 */ { 6, s_1_79, 78, 1, 0}, +/* 80 */ { 4, s_1_80, 72, 1, 0}, +/* 81 */ { 4, s_1_81, 72, 1, 0}, +/* 82 */ { 5, s_1_82, 72, 1, 0}, +/* 83 */ { 3, s_1_83, 72, 1, 0}, +/* 84 */ { 4, s_1_84, 83, 1, 0}, +/* 85 */ { 5, s_1_85, 83, 1, 0}, +/* 86 */ { 6, s_1_86, 85, 1, 0}, +/* 87 */ { 5, s_1_87, -1, 1, 0}, +/* 88 */ { 6, s_1_88, 87, 1, 0}, +/* 89 */ { 4, s_1_89, -1, 1, 0}, +/* 90 */ { 4, s_1_90, -1, 1, 0}, +/* 91 */ { 3, s_1_91, -1, 1, 0}, +/* 92 */ { 5, s_1_92, 91, 1, 0}, +/* 93 */ { 4, s_1_93, 91, 1, 0}, +/* 94 */ { 3, s_1_94, -1, 1, 0}, +/* 95 */ { 5, s_1_95, 94, 1, 0}, +/* 96 */ { 4, s_1_96, -1, 1, 0}, +/* 97 */ { 5, s_1_97, 96, 1, 0}, +/* 98 */ { 5, s_1_98, 96, 1, 0}, +/* 99 */ { 4, s_1_99, -1, 1, 0}, +/*100 */ { 4, s_1_100, -1, 1, 0}, +/*101 */ { 4, s_1_101, -1, 1, 0}, +/*102 */ { 3, s_1_102, -1, 1, 0}, +/*103 */ { 4, s_1_103, 102, 1, 0}, +/*104 */ { 4, s_1_104, 102, 1, 0}, +/*105 */ { 4, s_1_105, -1, 1, 0}, +/*106 */ { 4, s_1_106, -1, 1, 0}, +/*107 */ { 3, s_1_107, -1, 1, 0}, +/*108 */ { 2, s_1_108, -1, 1, 0}, +/*109 */ { 3, s_1_109, 108, 1, 0}, +/*110 */ { 4, s_1_110, 109, 1, 0}, +/*111 */ { 5, s_1_111, 109, 1, 0}, +/*112 */ { 5, s_1_112, 109, 1, 0}, +/*113 */ { 4, s_1_113, 109, 1, 0}, +/*114 */ { 5, s_1_114, 113, 1, 0}, +/*115 */ { 5, s_1_115, 109, 1, 0}, +/*116 */ { 4, s_1_116, 108, 1, 0}, +/*117 */ { 4, s_1_117, 108, 1, 0}, +/*118 */ { 4, s_1_118, 108, 1, 0}, +/*119 */ { 3, s_1_119, 108, 2, 0}, +/*120 */ { 6, s_1_120, 108, 1, 0}, +/*121 */ { 5, s_1_121, 108, 1, 0}, +/*122 */ { 3, s_1_122, 108, 1, 0}, +/*123 */ { 2, s_1_123, -1, 1, 0}, +/*124 */ { 3, s_1_124, 123, 1, 0}, +/*125 */ { 2, s_1_125, -1, 1, 0}, +/*126 */ { 3, s_1_126, 125, 1, 0}, +/*127 */ { 4, s_1_127, 126, 1, 0}, +/*128 */ { 3, s_1_128, 125, 1, 0}, +/*129 */ { 3, s_1_129, -1, 1, 0}, +/*130 */ { 6, s_1_130, 129, 1, 0}, +/*131 */ { 5, s_1_131, 129, 1, 0}, +/*132 */ { 5, s_1_132, -1, 1, 0}, +/*133 */ { 5, s_1_133, -1, 1, 0}, +/*134 */ { 5, s_1_134, -1, 1, 0}, +/*135 */ { 4, s_1_135, -1, 1, 0}, +/*136 */ { 3, s_1_136, -1, 1, 0}, +/*137 */ { 6, s_1_137, 136, 1, 0}, +/*138 */ { 5, s_1_138, 136, 1, 0}, +/*139 */ { 4, s_1_139, -1, 1, 0}, +/*140 */ { 3, s_1_140, -1, 1, 0}, +/*141 */ { 4, s_1_141, 140, 1, 0}, +/*142 */ { 2, s_1_142, -1, 1, 0}, +/*143 */ { 3, s_1_143, 142, 1, 0}, +/*144 */ { 5, s_1_144, 142, 1, 0}, +/*145 */ { 3, s_1_145, 142, 2, 0}, +/*146 */ { 6, s_1_146, 145, 1, 0}, +/*147 */ { 5, s_1_147, 145, 1, 0}, +/*148 */ { 6, s_1_148, 145, 1, 0}, +/*149 */ { 6, s_1_149, 145, 1, 0}, +/*150 */ { 6, s_1_150, 145, 1, 0}, +/*151 */ { 4, s_1_151, -1, 1, 0}, +/*152 */ { 4, s_1_152, -1, 1, 0}, +/*153 */ { 4, s_1_153, -1, 1, 0}, +/*154 */ { 4, s_1_154, -1, 1, 0}, +/*155 */ { 5, s_1_155, 154, 1, 0}, +/*156 */ { 5, s_1_156, 154, 1, 0}, +/*157 */ { 4, s_1_157, -1, 1, 0}, +/*158 */ { 2, s_1_158, -1, 1, 0}, +/*159 */ { 4, s_1_159, -1, 1, 0}, +/*160 */ { 5, s_1_160, 159, 1, 0}, +/*161 */ { 4, s_1_161, -1, 1, 0}, +/*162 */ { 3, s_1_162, -1, 1, 0}, +/*163 */ { 4, s_1_163, -1, 1, 0}, +/*164 */ { 2, s_1_164, -1, 1, 0}, +/*165 */ { 5, s_1_165, 164, 1, 0}, +/*166 */ { 3, s_1_166, 164, 1, 0}, +/*167 */ { 4, s_1_167, 166, 1, 0}, +/*168 */ { 2, s_1_168, -1, 1, 0}, +/*169 */ { 5, s_1_169, -1, 1, 0}, +/*170 */ { 2, s_1_170, -1, 1, 0}, +/*171 */ { 4, s_1_171, 170, 1, 0}, +/*172 */ { 4, s_1_172, 170, 1, 0}, +/*173 */ { 4, s_1_173, 170, 1, 0}, +/*174 */ { 4, s_1_174, -1, 1, 0}, +/*175 */ { 3, s_1_175, -1, 1, 0}, +/*176 */ { 2, s_1_176, -1, 1, 0}, +/*177 */ { 4, s_1_177, 176, 1, 0}, +/*178 */ { 5, s_1_178, 177, 1, 0}, +/*179 */ { 5, s_1_179, 176, 8, 0}, +/*180 */ { 5, s_1_180, 176, 1, 0}, +/*181 */ { 5, s_1_181, 176, 1, 0}, +/*182 */ { 3, s_1_182, -1, 1, 0}, +/*183 */ { 3, s_1_183, -1, 1, 0}, +/*184 */ { 4, s_1_184, 183, 1, 0}, +/*185 */ { 4, s_1_185, 183, 1, 0}, +/*186 */ { 4, s_1_186, -1, 1, 0}, +/*187 */ { 3, s_1_187, -1, 1, 0}, +/*188 */ { 2, s_1_188, -1, 1, 0}, +/*189 */ { 4, s_1_189, 188, 1, 0}, +/*190 */ { 2, s_1_190, -1, 1, 0}, +/*191 */ { 3, s_1_191, 190, 1, 0}, +/*192 */ { 3, s_1_192, 190, 1, 0}, +/*193 */ { 3, s_1_193, -1, 1, 0}, +/*194 */ { 4, s_1_194, 193, 1, 0}, +/*195 */ { 4, s_1_195, 193, 1, 0}, +/*196 */ { 4, s_1_196, 193, 1, 0}, +/*197 */ { 5, s_1_197, -1, 2, 0}, +/*198 */ { 5, s_1_198, -1, 1, 0}, +/*199 */ { 5, s_1_199, -1, 1, 0}, +/*200 */ { 4, s_1_200, -1, 1, 0}, +/*201 */ { 3, s_1_201, -1, 1, 0}, +/*202 */ { 2, s_1_202, -1, 1, 0}, +/*203 */ { 5, s_1_203, -1, 1, 0}, +/*204 */ { 2, s_1_204, -1, 1, 0}, +/*205 */ { 2, s_1_205, -1, 1, 0}, +/*206 */ { 2, s_1_206, -1, 1, 0}, +/*207 */ { 5, s_1_207, -1, 1, 0}, +/*208 */ { 5, s_1_208, -1, 1, 0}, +/*209 */ { 3, s_1_209, -1, 1, 0}, +/*210 */ { 4, s_1_210, 209, 1, 0}, +/*211 */ { 3, s_1_211, -1, 1, 0}, +/*212 */ { 3, s_1_212, -1, 1, 0}, +/*213 */ { 4, s_1_213, 212, 1, 0}, +/*214 */ { 2, s_1_214, -1, 4, 0}, +/*215 */ { 3, s_1_215, 214, 2, 0}, +/*216 */ { 6, s_1_216, 215, 1, 0}, +/*217 */ { 6, s_1_217, 215, 1, 0}, +/*218 */ { 5, s_1_218, 215, 1, 0}, +/*219 */ { 3, s_1_219, 214, 4, 0}, +/*220 */ { 4, s_1_220, 214, 4, 0}, +/*221 */ { 4, s_1_221, -1, 1, 0}, +/*222 */ { 5, s_1_222, 221, 1, 0}, +/*223 */ { 3, s_1_223, -1, 1, 0}, +/*224 */ { 3, s_1_224, -1, 1, 0}, +/*225 */ { 3, s_1_225, -1, 1, 0}, +/*226 */ { 4, s_1_226, -1, 1, 0}, +/*227 */ { 5, s_1_227, 226, 1, 0}, +/*228 */ { 5, s_1_228, -1, 1, 0}, +/*229 */ { 4, s_1_229, -1, 1, 0}, +/*230 */ { 5, s_1_230, 229, 1, 0}, +/*231 */ { 2, s_1_231, -1, 1, 0}, +/*232 */ { 3, s_1_232, 231, 1, 0}, +/*233 */ { 3, s_1_233, -1, 1, 0}, +/*234 */ { 2, s_1_234, -1, 1, 0}, +/*235 */ { 5, s_1_235, 234, 5, 0}, +/*236 */ { 4, s_1_236, 234, 1, 0}, +/*237 */ { 5, s_1_237, 236, 1, 0}, +/*238 */ { 3, s_1_238, 234, 1, 0}, +/*239 */ { 6, s_1_239, 234, 1, 0}, +/*240 */ { 3, s_1_240, 234, 1, 0}, +/*241 */ { 4, s_1_241, 234, 1, 0}, +/*242 */ { 8, s_1_242, 241, 6, 0}, +/*243 */ { 3, s_1_243, 234, 1, 0}, +/*244 */ { 2, s_1_244, -1, 1, 0}, +/*245 */ { 4, s_1_245, 244, 1, 0}, +/*246 */ { 2, s_1_246, -1, 1, 0}, +/*247 */ { 3, s_1_247, 246, 1, 0}, +/*248 */ { 5, s_1_248, 247, 9, 0}, +/*249 */ { 4, s_1_249, 247, 1, 0}, +/*250 */ { 4, s_1_250, 247, 1, 0}, +/*251 */ { 3, s_1_251, 246, 1, 0}, +/*252 */ { 4, s_1_252, 246, 1, 0}, +/*253 */ { 3, s_1_253, 246, 1, 0}, +/*254 */ { 3, s_1_254, -1, 1, 0}, +/*255 */ { 2, s_1_255, -1, 1, 0}, +/*256 */ { 3, s_1_256, 255, 1, 0}, +/*257 */ { 3, s_1_257, 255, 1, 0}, +/*258 */ { 3, s_1_258, -1, 1, 0}, +/*259 */ { 3, s_1_259, -1, 1, 0}, +/*260 */ { 6, s_1_260, 259, 1, 0}, +/*261 */ { 2, s_1_261, -1, 1, 0}, +/*262 */ { 2, s_1_262, -1, 1, 0}, +/*263 */ { 2, s_1_263, -1, 1, 0}, +/*264 */ { 3, s_1_264, 263, 1, 0}, +/*265 */ { 5, s_1_265, 263, 1, 0}, +/*266 */ { 5, s_1_266, 263, 7, 0}, +/*267 */ { 4, s_1_267, 263, 1, 0}, +/*268 */ { 4, s_1_268, 263, 1, 0}, +/*269 */ { 3, s_1_269, 263, 1, 0}, +/*270 */ { 4, s_1_270, 263, 1, 0}, +/*271 */ { 2, s_1_271, -1, 2, 0}, +/*272 */ { 3, s_1_272, 271, 1, 0}, +/*273 */ { 2, s_1_273, -1, 1, 0}, +/*274 */ { 3, s_1_274, -1, 1, 0}, +/*275 */ { 2, s_1_275, -1, 1, 0}, +/*276 */ { 5, s_1_276, 275, 1, 0}, +/*277 */ { 4, s_1_277, 275, 1, 0}, +/*278 */ { 4, s_1_278, -1, 1, 0}, +/*279 */ { 4, s_1_279, -1, 2, 0}, +/*280 */ { 4, s_1_280, -1, 1, 0}, +/*281 */ { 3, s_1_281, -1, 1, 0}, +/*282 */ { 2, s_1_282, -1, 1, 0}, +/*283 */ { 4, s_1_283, 282, 4, 0}, +/*284 */ { 5, s_1_284, 282, 1, 0}, +/*285 */ { 4, s_1_285, 282, 1, 0}, +/*286 */ { 3, s_1_286, -1, 1, 0}, +/*287 */ { 2, s_1_287, -1, 1, 0}, +/*288 */ { 3, s_1_288, 287, 1, 0}, +/*289 */ { 6, s_1_289, 288, 1, 0}, +/*290 */ { 1, s_1_290, -1, 1, 0}, +/*291 */ { 2, s_1_291, 290, 1, 0}, +/*292 */ { 4, s_1_292, 290, 1, 0}, +/*293 */ { 2, s_1_293, 290, 1, 0}, +/*294 */ { 5, s_1_294, 293, 1, 0} +}; + +static const symbol s_2_0[4] = { 'z', 'l', 'e', 'a' }; +static const symbol s_2_1[5] = { 'k', 'e', 'r', 'i', 'a' }; +static const symbol s_2_2[2] = { 'l', 'a' }; +static const symbol s_2_3[3] = { 'e', 'r', 'a' }; +static const symbol s_2_4[4] = { 'd', 'a', 'd', 'e' }; +static const symbol s_2_5[4] = { 't', 'a', 'd', 'e' }; +static const symbol s_2_6[4] = { 'd', 'a', 't', 'e' }; +static const symbol s_2_7[4] = { 't', 'a', 't', 'e' }; +static const symbol s_2_8[2] = { 'g', 'i' }; +static const symbol s_2_9[2] = { 'k', 'i' }; +static const symbol s_2_10[2] = { 'i', 'k' }; +static const symbol s_2_11[5] = { 'l', 'a', 'n', 'i', 'k' }; +static const symbol s_2_12[3] = { 'r', 'i', 'k' }; +static const symbol s_2_13[5] = { 'l', 'a', 'r', 'i', 'k' }; +static const symbol s_2_14[4] = { 'z', 't', 'i', 'k' }; +static const symbol s_2_15[2] = { 'g', 'o' }; +static const symbol s_2_16[2] = { 'r', 'o' }; +static const symbol s_2_17[3] = { 'e', 'r', 'o' }; +static const symbol s_2_18[2] = { 't', 'o' }; + +static const struct among a_2[19] = +{ +/* 0 */ { 4, s_2_0, -1, 2, 0}, +/* 1 */ { 5, s_2_1, -1, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, -1, 1, 0}, +/* 4 */ { 4, s_2_4, -1, 1, 0}, +/* 5 */ { 4, s_2_5, -1, 1, 0}, +/* 6 */ { 4, s_2_6, -1, 1, 0}, +/* 7 */ { 4, s_2_7, -1, 1, 0}, +/* 8 */ { 2, s_2_8, -1, 1, 0}, +/* 9 */ { 2, s_2_9, -1, 1, 0}, +/* 10 */ { 2, s_2_10, -1, 1, 0}, +/* 11 */ { 5, s_2_11, 10, 1, 0}, +/* 12 */ { 3, s_2_12, 10, 1, 0}, +/* 13 */ { 5, s_2_13, 12, 1, 0}, +/* 14 */ { 4, s_2_14, 10, 1, 0}, +/* 15 */ { 2, s_2_15, -1, 1, 0}, +/* 16 */ { 2, s_2_16, -1, 1, 0}, +/* 17 */ { 3, s_2_17, 16, 1, 0}, +/* 18 */ { 2, s_2_18, -1, 1, 0} +}; + +static const unsigned char g_v[] = { 17, 65, 16 }; + +static const symbol s_0[] = { 'a', 't', 's', 'e', 'd', 'e', 'n' }; +static const symbol s_1[] = { 'a', 'r', 'a', 'b', 'e', 'r', 'a' }; +static const symbol s_2[] = { 'b', 'a', 'd', 'i', 't', 'u' }; +static const symbol s_3[] = { 'j', 'o', 'k' }; +static const symbol s_4[] = { 't', 'r', 'a' }; +static const symbol s_5[] = { 'm', 'i', 'n', 'u', 't', 'u' }; +static const symbol s_6[] = { 'z', 'e', 'h', 'a', 'r' }; +static const symbol s_7[] = { 'g', 'e', 'l', 'd', 'i' }; +static const symbol s_8[] = { 'i', 'g', 'a', 'r', 'o' }; +static const symbol s_9[] = { 'a', 'u', 'r', 'k', 'a' }; +static const symbol s_10[] = { 'z' }; + +static int r_mark_regions(struct SN_env * z) { /* forwardmode */ + z->I[0] = z->l; /* $pV = , line 25 */ + z->I[1] = z->l; /* $p1 = , line 26 */ + z->I[2] = z->l; /* $p2 = , line 27 */ + { int c1 = z->c; /* do, line 29 */ + { int c2 = z->c; /* or, line 31 */ + if (in_grouping(z, g_v, 97, 117, 0)) goto lab2; /* grouping v, line 30 */ + { int c3 = z->c; /* or, line 30 */ + if (out_grouping(z, g_v, 97, 117, 0)) goto lab4; /* non v, line 30 */ + { /* gopast */ /* grouping v, line 30 */ + int ret = out_grouping(z, g_v, 97, 117, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping(z, g_v, 97, 117, 0)) goto lab2; /* grouping v, line 30 */ + { /* gopast */ /* non v, line 30 */ + int ret = in_grouping(z, g_v, 97, 117, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping(z, g_v, 97, 117, 0)) goto lab0; /* non v, line 32 */ + { int c4 = z->c; /* or, line 32 */ + if (out_grouping(z, g_v, 97, 117, 0)) goto lab6; /* non v, line 32 */ + { /* gopast */ /* grouping v, line 32 */ + int ret = out_grouping(z, g_v, 97, 117, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping(z, g_v, 97, 117, 0)) goto lab0; /* grouping v, line 32 */ + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 32 */ + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 33 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 35 */ + { /* gopast */ /* grouping v, line 36 */ + int ret = out_grouping(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 36 */ + int ret = in_grouping(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 36 */ + { /* gopast */ /* grouping v, line 37 */ + int ret = out_grouping(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 37 */ + int ret = in_grouping(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 37 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_RV(struct SN_env * z) { /* backwardmode */ + if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 43 */ + return 1; +} + +static int r_R2(struct SN_env * z) { /* backwardmode */ + if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 44 */ + return 1; +} + +static int r_R1(struct SN_env * z) { /* backwardmode */ + if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 45 */ + return 1; +} + +static int r_aditzak(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 48 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((70566434 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 48 */ + among_var = find_among_b(z, a_0, 109); + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 48 */ + switch (among_var) { /* among, line 48 */ + case 1: + { int ret = r_RV(z); /* call RV, line 59 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 59 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 61 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 61 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 7, s_0); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 7, s_1); /* <-, line 65 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 6, s_2); /* <-, line 67 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_izenak(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 73 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((71162402 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 73 */ + among_var = find_among_b(z, a_1, 295); + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 73 */ + switch (among_var) { /* among, line 73 */ + case 1: + { int ret = r_RV(z); /* call RV, line 103 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 103 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 105 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 105 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 3, s_3); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R1(z); /* call R1, line 109 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 109 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_4); /* <-, line 111 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 6, s_5); /* <-, line 113 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 5, s_6); /* <-, line 115 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 5, s_7); /* <-, line 117 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 5, s_8); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 5, s_9); /* <-, line 121 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_adjetiboak(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 126 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((35362 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 126 */ + among_var = find_among_b(z, a_2, 19); + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 126 */ + switch (among_var) { /* among, line 126 */ + case 1: + { int ret = r_RV(z); /* call RV, line 129 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 129 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 131 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int basque_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ + /* do, line 138 */ + { int ret = r_mark_regions(z); /* call mark_regions, line 138 */ + if (ret < 0) return ret; + } + z->lb = z->c; z->c = z->l; /* backwards, line 139 */ + +/* repeat, line 140 */ + + while(1) { int m1 = z->l - z->c; (void)m1; + { int ret = r_aditzak(z); /* call aditzak, line 140 */ + if (ret == 0) goto lab0; + if (ret < 0) return ret; + } + continue; + lab0: + z->c = z->l - m1; + break; + } +/* repeat, line 141 */ + + while(1) { int m2 = z->l - z->c; (void)m2; + { int ret = r_izenak(z); /* call izenak, line 141 */ + if (ret == 0) goto lab1; + if (ret < 0) return ret; + } + continue; + lab1: + z->c = z->l - m2; + break; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 142 */ + { int ret = r_adjetiboak(z); /* call adjetiboak, line 142 */ + if (ret < 0) return ret; + } + z->c = z->l - m3; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * basque_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void basque_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_catalan.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_catalan.c new file mode 100644 index 0000000000000..87c0cada3df90 --- /dev/null +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_catalan.c @@ -0,0 +1,1447 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#include "header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int catalan_ISO_8859_1_stem(struct SN_env * z); +#ifdef __cplusplus +} +#endif +static int r_residual_suffix(struct SN_env * z); +static int r_verb_suffix(struct SN_env * z); +static int r_standard_suffix(struct SN_env * z); +static int r_attached_pronoun(struct SN_env * z); +static int r_R2(struct SN_env * z); +static int r_R1(struct SN_env * z); +static int r_mark_regions(struct SN_env * z); +static int r_cleaning(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * catalan_ISO_8859_1_create_env(void); +extern void catalan_ISO_8859_1_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[1] = { 0xB7 }; +static const symbol s_0_2[1] = { 0xE0 }; +static const symbol s_0_3[1] = { 0xE1 }; +static const symbol s_0_4[1] = { 0xE8 }; +static const symbol s_0_5[1] = { 0xE9 }; +static const symbol s_0_6[1] = { 0xEC }; +static const symbol s_0_7[1] = { 0xED }; +static const symbol s_0_8[1] = { 0xEF }; +static const symbol s_0_9[1] = { 0xF2 }; +static const symbol s_0_10[1] = { 0xF3 }; +static const symbol s_0_11[1] = { 0xFA }; +static const symbol s_0_12[1] = { 0xFC }; + +static const struct among a_0[13] = +{ +/* 0 */ { 0, 0, -1, 7, 0}, +/* 1 */ { 1, s_0_1, 0, 6, 0}, +/* 2 */ { 1, s_0_2, 0, 1, 0}, +/* 3 */ { 1, s_0_3, 0, 1, 0}, +/* 4 */ { 1, s_0_4, 0, 2, 0}, +/* 5 */ { 1, s_0_5, 0, 2, 0}, +/* 6 */ { 1, s_0_6, 0, 3, 0}, +/* 7 */ { 1, s_0_7, 0, 3, 0}, +/* 8 */ { 1, s_0_8, 0, 3, 0}, +/* 9 */ { 1, s_0_9, 0, 4, 0}, +/* 10 */ { 1, s_0_10, 0, 4, 0}, +/* 11 */ { 1, s_0_11, 0, 5, 0}, +/* 12 */ { 1, s_0_12, 0, 5, 0} +}; + +static const symbol s_1_0[2] = { 'l', 'a' }; +static const symbol s_1_1[3] = { '-', 'l', 'a' }; +static const symbol s_1_2[4] = { 's', 'e', 'l', 'a' }; +static const symbol s_1_3[2] = { 'l', 'e' }; +static const symbol s_1_4[2] = { 'm', 'e' }; +static const symbol s_1_5[3] = { '-', 'm', 'e' }; +static const symbol s_1_6[2] = { 's', 'e' }; +static const symbol s_1_7[3] = { '-', 't', 'e' }; +static const symbol s_1_8[2] = { 'h', 'i' }; +static const symbol s_1_9[3] = { '\'', 'h', 'i' }; +static const symbol s_1_10[2] = { 'l', 'i' }; +static const symbol s_1_11[3] = { '-', 'l', 'i' }; +static const symbol s_1_12[2] = { '\'', 'l' }; +static const symbol s_1_13[2] = { '\'', 'm' }; +static const symbol s_1_14[2] = { '-', 'm' }; +static const symbol s_1_15[2] = { '\'', 'n' }; +static const symbol s_1_16[2] = { '-', 'n' }; +static const symbol s_1_17[2] = { 'h', 'o' }; +static const symbol s_1_18[3] = { '\'', 'h', 'o' }; +static const symbol s_1_19[2] = { 'l', 'o' }; +static const symbol s_1_20[4] = { 's', 'e', 'l', 'o' }; +static const symbol s_1_21[2] = { '\'', 's' }; +static const symbol s_1_22[3] = { 'l', 'a', 's' }; +static const symbol s_1_23[5] = { 's', 'e', 'l', 'a', 's' }; +static const symbol s_1_24[3] = { 'l', 'e', 's' }; +static const symbol s_1_25[4] = { '-', 'l', 'e', 's' }; +static const symbol s_1_26[3] = { '\'', 'l', 's' }; +static const symbol s_1_27[3] = { '-', 'l', 's' }; +static const symbol s_1_28[3] = { '\'', 'n', 's' }; +static const symbol s_1_29[3] = { '-', 'n', 's' }; +static const symbol s_1_30[3] = { 'e', 'n', 's' }; +static const symbol s_1_31[3] = { 'l', 'o', 's' }; +static const symbol s_1_32[5] = { 's', 'e', 'l', 'o', 's' }; +static const symbol s_1_33[3] = { 'n', 'o', 's' }; +static const symbol s_1_34[4] = { '-', 'n', 'o', 's' }; +static const symbol s_1_35[3] = { 'v', 'o', 's' }; +static const symbol s_1_36[2] = { 'u', 's' }; +static const symbol s_1_37[3] = { '-', 'u', 's' }; +static const symbol s_1_38[2] = { '\'', 't' }; + +static const struct among a_1[39] = +{ +/* 0 */ { 2, s_1_0, -1, 1, 0}, +/* 1 */ { 3, s_1_1, 0, 1, 0}, +/* 2 */ { 4, s_1_2, 0, 1, 0}, +/* 3 */ { 2, s_1_3, -1, 1, 0}, +/* 4 */ { 2, s_1_4, -1, 1, 0}, +/* 5 */ { 3, s_1_5, 4, 1, 0}, +/* 6 */ { 2, s_1_6, -1, 1, 0}, +/* 7 */ { 3, s_1_7, -1, 1, 0}, +/* 8 */ { 2, s_1_8, -1, 1, 0}, +/* 9 */ { 3, s_1_9, 8, 1, 0}, +/* 10 */ { 2, s_1_10, -1, 1, 0}, +/* 11 */ { 3, s_1_11, 10, 1, 0}, +/* 12 */ { 2, s_1_12, -1, 1, 0}, +/* 13 */ { 2, s_1_13, -1, 1, 0}, +/* 14 */ { 2, s_1_14, -1, 1, 0}, +/* 15 */ { 2, s_1_15, -1, 1, 0}, +/* 16 */ { 2, s_1_16, -1, 1, 0}, +/* 17 */ { 2, s_1_17, -1, 1, 0}, +/* 18 */ { 3, s_1_18, 17, 1, 0}, +/* 19 */ { 2, s_1_19, -1, 1, 0}, +/* 20 */ { 4, s_1_20, 19, 1, 0}, +/* 21 */ { 2, s_1_21, -1, 1, 0}, +/* 22 */ { 3, s_1_22, -1, 1, 0}, +/* 23 */ { 5, s_1_23, 22, 1, 0}, +/* 24 */ { 3, s_1_24, -1, 1, 0}, +/* 25 */ { 4, s_1_25, 24, 1, 0}, +/* 26 */ { 3, s_1_26, -1, 1, 0}, +/* 27 */ { 3, s_1_27, -1, 1, 0}, +/* 28 */ { 3, s_1_28, -1, 1, 0}, +/* 29 */ { 3, s_1_29, -1, 1, 0}, +/* 30 */ { 3, s_1_30, -1, 1, 0}, +/* 31 */ { 3, s_1_31, -1, 1, 0}, +/* 32 */ { 5, s_1_32, 31, 1, 0}, +/* 33 */ { 3, s_1_33, -1, 1, 0}, +/* 34 */ { 4, s_1_34, 33, 1, 0}, +/* 35 */ { 3, s_1_35, -1, 1, 0}, +/* 36 */ { 2, s_1_36, -1, 1, 0}, +/* 37 */ { 3, s_1_37, 36, 1, 0}, +/* 38 */ { 2, s_1_38, -1, 1, 0} +}; + +static const symbol s_2_0[3] = { 'i', 'c', 'a' }; +static const symbol s_2_1[6] = { 'l', 0xF3, 'g', 'i', 'c', 'a' }; +static const symbol s_2_2[4] = { 'e', 'n', 'c', 'a' }; +static const symbol s_2_3[3] = { 'a', 'd', 'a' }; +static const symbol s_2_4[5] = { 'a', 'n', 'c', 'i', 'a' }; +static const symbol s_2_5[5] = { 'e', 'n', 'c', 'i', 'a' }; +static const symbol s_2_6[5] = { 0xE8, 'n', 'c', 'i', 'a' }; +static const symbol s_2_7[4] = { 0xED, 'c', 'i', 'a' }; +static const symbol s_2_8[5] = { 'l', 'o', 'g', 'i', 'a' }; +static const symbol s_2_9[4] = { 'i', 'n', 'i', 'a' }; +static const symbol s_2_10[5] = { 0xED, 'i', 'n', 'i', 'a' }; +static const symbol s_2_11[4] = { 'e', 'r', 'i', 'a' }; +static const symbol s_2_12[4] = { 0xE0, 'r', 'i', 'a' }; +static const symbol s_2_13[6] = { 'a', 't', 0xF2, 'r', 'i', 'a' }; +static const symbol s_2_14[4] = { 'a', 'l', 'l', 'a' }; +static const symbol s_2_15[4] = { 'e', 'l', 'l', 'a' }; +static const symbol s_2_16[5] = { 0xED, 'v', 'o', 'l', 'a' }; +static const symbol s_2_17[3] = { 'i', 'm', 'a' }; +static const symbol s_2_18[6] = { 0xED, 's', 's', 'i', 'm', 'a' }; +static const symbol s_2_19[8] = { 'q', 'u', 0xED, 's', 's', 'i', 'm', 'a' }; +static const symbol s_2_20[3] = { 'a', 'n', 'a' }; +static const symbol s_2_21[3] = { 'i', 'n', 'a' }; +static const symbol s_2_22[3] = { 'e', 'r', 'a' }; +static const symbol s_2_23[5] = { 's', 'f', 'e', 'r', 'a' }; +static const symbol s_2_24[3] = { 'o', 'r', 'a' }; +static const symbol s_2_25[4] = { 'd', 'o', 'r', 'a' }; +static const symbol s_2_26[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_2_27[5] = { 'a', 'd', 'u', 'r', 'a' }; +static const symbol s_2_28[3] = { 'e', 's', 'a' }; +static const symbol s_2_29[3] = { 'o', 's', 'a' }; +static const symbol s_2_30[4] = { 'a', 's', 's', 'a' }; +static const symbol s_2_31[4] = { 'e', 's', 's', 'a' }; +static const symbol s_2_32[4] = { 'i', 's', 's', 'a' }; +static const symbol s_2_33[3] = { 'e', 't', 'a' }; +static const symbol s_2_34[3] = { 'i', 't', 'a' }; +static const symbol s_2_35[3] = { 'o', 't', 'a' }; +static const symbol s_2_36[4] = { 'i', 's', 't', 'a' }; +static const symbol s_2_37[7] = { 'i', 'a', 'l', 'i', 's', 't', 'a' }; +static const symbol s_2_38[7] = { 'i', 'o', 'n', 'i', 's', 't', 'a' }; +static const symbol s_2_39[3] = { 'i', 'v', 'a' }; +static const symbol s_2_40[5] = { 'a', 't', 'i', 'v', 'a' }; +static const symbol s_2_41[3] = { 'n', 0xE7, 'a' }; +static const symbol s_2_42[5] = { 'l', 'o', 'g', 0xED, 'a' }; +static const symbol s_2_43[2] = { 'i', 'c' }; +static const symbol s_2_44[5] = { 0xED, 's', 't', 'i', 'c' }; +static const symbol s_2_45[3] = { 'e', 'n', 'c' }; +static const symbol s_2_46[3] = { 'e', 's', 'c' }; +static const symbol s_2_47[2] = { 'u', 'd' }; +static const symbol s_2_48[4] = { 'a', 't', 'g', 'e' }; +static const symbol s_2_49[3] = { 'b', 'l', 'e' }; +static const symbol s_2_50[4] = { 'a', 'b', 'l', 'e' }; +static const symbol s_2_51[4] = { 'i', 'b', 'l', 'e' }; +static const symbol s_2_52[4] = { 'i', 's', 'm', 'e' }; +static const symbol s_2_53[7] = { 'i', 'a', 'l', 'i', 's', 'm', 'e' }; +static const symbol s_2_54[7] = { 'i', 'o', 'n', 'i', 's', 'm', 'e' }; +static const symbol s_2_55[6] = { 'i', 'v', 'i', 's', 'm', 'e' }; +static const symbol s_2_56[4] = { 'a', 'i', 'r', 'e' }; +static const symbol s_2_57[4] = { 'i', 'c', 't', 'e' }; +static const symbol s_2_58[4] = { 'i', 's', 't', 'e' }; +static const symbol s_2_59[3] = { 'i', 'c', 'i' }; +static const symbol s_2_60[3] = { 0xED, 'c', 'i' }; +static const symbol s_2_61[4] = { 'l', 'o', 'g', 'i' }; +static const symbol s_2_62[3] = { 'a', 'r', 'i' }; +static const symbol s_2_63[4] = { 't', 'o', 'r', 'i' }; +static const symbol s_2_64[2] = { 'a', 'l' }; +static const symbol s_2_65[2] = { 'i', 'l' }; +static const symbol s_2_66[3] = { 'a', 'l', 'l' }; +static const symbol s_2_67[3] = { 'e', 'l', 'l' }; +static const symbol s_2_68[4] = { 0xED, 'v', 'o', 'l' }; +static const symbol s_2_69[4] = { 'i', 's', 'a', 'm' }; +static const symbol s_2_70[5] = { 'i', 's', 's', 'e', 'm' }; +static const symbol s_2_71[5] = { 0xEC, 's', 's', 'e', 'm' }; +static const symbol s_2_72[5] = { 0xED, 's', 's', 'e', 'm' }; +static const symbol s_2_73[5] = { 0xED, 's', 's', 'i', 'm' }; +static const symbol s_2_74[7] = { 'q', 'u', 0xED, 's', 's', 'i', 'm' }; +static const symbol s_2_75[4] = { 'a', 'm', 'e', 'n' }; +static const symbol s_2_76[5] = { 0xEC, 's', 's', 'i', 'n' }; +static const symbol s_2_77[2] = { 'a', 'r' }; +static const symbol s_2_78[6] = { 'i', 'f', 'i', 'c', 'a', 'r' }; +static const symbol s_2_79[4] = { 'e', 'g', 'a', 'r' }; +static const symbol s_2_80[4] = { 'e', 'j', 'a', 'r' }; +static const symbol s_2_81[4] = { 'i', 't', 'a', 'r' }; +static const symbol s_2_82[5] = { 'i', 't', 'z', 'a', 'r' }; +static const symbol s_2_83[3] = { 'f', 'e', 'r' }; +static const symbol s_2_84[2] = { 'o', 'r' }; +static const symbol s_2_85[3] = { 'd', 'o', 'r' }; +static const symbol s_2_86[3] = { 'd', 'u', 'r' }; +static const symbol s_2_87[5] = { 'd', 'o', 'r', 'a', 's' }; +static const symbol s_2_88[3] = { 'i', 'c', 's' }; +static const symbol s_2_89[6] = { 'l', 0xF3, 'g', 'i', 'c', 's' }; +static const symbol s_2_90[3] = { 'u', 'd', 's' }; +static const symbol s_2_91[4] = { 'n', 'c', 'e', 's' }; +static const symbol s_2_92[4] = { 'a', 'd', 'e', 's' }; +static const symbol s_2_93[6] = { 'a', 'n', 'c', 'i', 'e', 's' }; +static const symbol s_2_94[6] = { 'e', 'n', 'c', 'i', 'e', 's' }; +static const symbol s_2_95[6] = { 0xE8, 'n', 'c', 'i', 'e', 's' }; +static const symbol s_2_96[5] = { 0xED, 'c', 'i', 'e', 's' }; +static const symbol s_2_97[6] = { 'l', 'o', 'g', 'i', 'e', 's' }; +static const symbol s_2_98[5] = { 'i', 'n', 'i', 'e', 's' }; +static const symbol s_2_99[5] = { 0xED, 'n', 'i', 'e', 's' }; +static const symbol s_2_100[5] = { 'e', 'r', 'i', 'e', 's' }; +static const symbol s_2_101[5] = { 0xE0, 'r', 'i', 'e', 's' }; +static const symbol s_2_102[7] = { 'a', 't', 0xF2, 'r', 'i', 'e', 's' }; +static const symbol s_2_103[4] = { 'b', 'l', 'e', 's' }; +static const symbol s_2_104[5] = { 'a', 'b', 'l', 'e', 's' }; +static const symbol s_2_105[5] = { 'i', 'b', 'l', 'e', 's' }; +static const symbol s_2_106[4] = { 'i', 'm', 'e', 's' }; +static const symbol s_2_107[7] = { 0xED, 's', 's', 'i', 'm', 'e', 's' }; +static const symbol s_2_108[9] = { 'q', 'u', 0xED, 's', 's', 'i', 'm', 'e', 's' }; +static const symbol s_2_109[6] = { 'f', 'o', 'r', 'm', 'e', 's' }; +static const symbol s_2_110[5] = { 'i', 's', 'm', 'e', 's' }; +static const symbol s_2_111[8] = { 'i', 'a', 'l', 'i', 's', 'm', 'e', 's' }; +static const symbol s_2_112[4] = { 'i', 'n', 'e', 's' }; +static const symbol s_2_113[4] = { 'e', 'r', 'e', 's' }; +static const symbol s_2_114[4] = { 'o', 'r', 'e', 's' }; +static const symbol s_2_115[5] = { 'd', 'o', 'r', 'e', 's' }; +static const symbol s_2_116[6] = { 'i', 'd', 'o', 'r', 'e', 's' }; +static const symbol s_2_117[5] = { 'd', 'u', 'r', 'e', 's' }; +static const symbol s_2_118[4] = { 'e', 's', 'e', 's' }; +static const symbol s_2_119[4] = { 'o', 's', 'e', 's' }; +static const symbol s_2_120[5] = { 'a', 's', 's', 'e', 's' }; +static const symbol s_2_121[5] = { 'i', 'c', 't', 'e', 's' }; +static const symbol s_2_122[4] = { 'i', 't', 'e', 's' }; +static const symbol s_2_123[4] = { 'o', 't', 'e', 's' }; +static const symbol s_2_124[5] = { 'i', 's', 't', 'e', 's' }; +static const symbol s_2_125[8] = { 'i', 'a', 'l', 'i', 's', 't', 'e', 's' }; +static const symbol s_2_126[8] = { 'i', 'o', 'n', 'i', 's', 't', 'e', 's' }; +static const symbol s_2_127[5] = { 'i', 'q', 'u', 'e', 's' }; +static const symbol s_2_128[8] = { 'l', 0xF3, 'g', 'i', 'q', 'u', 'e', 's' }; +static const symbol s_2_129[4] = { 'i', 'v', 'e', 's' }; +static const symbol s_2_130[6] = { 'a', 't', 'i', 'v', 'e', 's' }; +static const symbol s_2_131[6] = { 'l', 'o', 'g', 0xED, 'e', 's' }; +static const symbol s_2_132[9] = { 'a', 'l', 'l', 'e', 'n', 'g', 0xFC, 'e', 's' }; +static const symbol s_2_133[4] = { 'i', 'c', 'i', 's' }; +static const symbol s_2_134[4] = { 0xED, 'c', 'i', 's' }; +static const symbol s_2_135[5] = { 'l', 'o', 'g', 'i', 's' }; +static const symbol s_2_136[4] = { 'a', 'r', 'i', 's' }; +static const symbol s_2_137[5] = { 't', 'o', 'r', 'i', 's' }; +static const symbol s_2_138[2] = { 'l', 's' }; +static const symbol s_2_139[3] = { 'a', 'l', 's' }; +static const symbol s_2_140[4] = { 'e', 'l', 'l', 's' }; +static const symbol s_2_141[3] = { 'i', 'm', 's' }; +static const symbol s_2_142[6] = { 0xED, 's', 's', 'i', 'm', 's' }; +static const symbol s_2_143[8] = { 'q', 'u', 0xED, 's', 's', 'i', 'm', 's' }; +static const symbol s_2_144[4] = { 'i', 'o', 'n', 's' }; +static const symbol s_2_145[5] = { 'c', 'i', 'o', 'n', 's' }; +static const symbol s_2_146[6] = { 'a', 'c', 'i', 'o', 'n', 's' }; +static const symbol s_2_147[4] = { 'e', 's', 'o', 's' }; +static const symbol s_2_148[4] = { 'o', 's', 'o', 's' }; +static const symbol s_2_149[5] = { 'a', 's', 's', 'o', 's' }; +static const symbol s_2_150[5] = { 'i', 's', 's', 'o', 's' }; +static const symbol s_2_151[3] = { 'e', 'r', 's' }; +static const symbol s_2_152[3] = { 'o', 'r', 's' }; +static const symbol s_2_153[4] = { 'd', 'o', 'r', 's' }; +static const symbol s_2_154[5] = { 'a', 'd', 'o', 'r', 's' }; +static const symbol s_2_155[5] = { 'i', 'd', 'o', 'r', 's' }; +static const symbol s_2_156[3] = { 'a', 't', 's' }; +static const symbol s_2_157[5] = { 'i', 't', 'a', 't', 's' }; +static const symbol s_2_158[8] = { 'b', 'i', 'l', 'i', 't', 'a', 't', 's' }; +static const symbol s_2_159[7] = { 'i', 'v', 'i', 't', 'a', 't', 's' }; +static const symbol s_2_160[9] = { 'a', 't', 'i', 'v', 'i', 't', 'a', 't', 's' }; +static const symbol s_2_161[5] = { 0xEF, 't', 'a', 't', 's' }; +static const symbol s_2_162[3] = { 'e', 't', 's' }; +static const symbol s_2_163[4] = { 'a', 'n', 't', 's' }; +static const symbol s_2_164[4] = { 'e', 'n', 't', 's' }; +static const symbol s_2_165[5] = { 'm', 'e', 'n', 't', 's' }; +static const symbol s_2_166[6] = { 'a', 'm', 'e', 'n', 't', 's' }; +static const symbol s_2_167[3] = { 'o', 't', 's' }; +static const symbol s_2_168[3] = { 'u', 't', 's' }; +static const symbol s_2_169[3] = { 'i', 'u', 's' }; +static const symbol s_2_170[5] = { 't', 'r', 'i', 'u', 's' }; +static const symbol s_2_171[5] = { 'a', 't', 'i', 'u', 's' }; +static const symbol s_2_172[2] = { 0xE8, 's' }; +static const symbol s_2_173[2] = { 0xE9, 's' }; +static const symbol s_2_174[2] = { 0xED, 's' }; +static const symbol s_2_175[3] = { 'd', 0xED, 's' }; +static const symbol s_2_176[2] = { 0xF3, 's' }; +static const symbol s_2_177[4] = { 'i', 't', 'a', 't' }; +static const symbol s_2_178[7] = { 'b', 'i', 'l', 'i', 't', 'a', 't' }; +static const symbol s_2_179[6] = { 'i', 'v', 'i', 't', 'a', 't' }; +static const symbol s_2_180[8] = { 'a', 't', 'i', 'v', 'i', 't', 'a', 't' }; +static const symbol s_2_181[4] = { 0xEF, 't', 'a', 't' }; +static const symbol s_2_182[2] = { 'e', 't' }; +static const symbol s_2_183[3] = { 'a', 'n', 't' }; +static const symbol s_2_184[3] = { 'e', 'n', 't' }; +static const symbol s_2_185[4] = { 'i', 'e', 'n', 't' }; +static const symbol s_2_186[4] = { 'm', 'e', 'n', 't' }; +static const symbol s_2_187[5] = { 'a', 'm', 'e', 'n', 't' }; +static const symbol s_2_188[7] = { 'i', 's', 'a', 'm', 'e', 'n', 't' }; +static const symbol s_2_189[2] = { 'o', 't' }; +static const symbol s_2_190[5] = { 'i', 's', 's', 'e', 'u' }; +static const symbol s_2_191[5] = { 0xEC, 's', 's', 'e', 'u' }; +static const symbol s_2_192[5] = { 0xED, 's', 's', 'e', 'u' }; +static const symbol s_2_193[4] = { 't', 'r', 'i', 'u' }; +static const symbol s_2_194[5] = { 0xED, 's', 's', 'i', 'u' }; +static const symbol s_2_195[4] = { 'a', 't', 'i', 'u' }; +static const symbol s_2_196[1] = { 0xF3 }; +static const symbol s_2_197[2] = { 'i', 0xF3 }; +static const symbol s_2_198[3] = { 'c', 'i', 0xF3 }; +static const symbol s_2_199[4] = { 'a', 'c', 'i', 0xF3 }; + +static const struct among a_2[200] = +{ +/* 0 */ { 3, s_2_0, -1, 4, 0}, +/* 1 */ { 6, s_2_1, 0, 3, 0}, +/* 2 */ { 4, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, -1, 2, 0}, +/* 4 */ { 5, s_2_4, -1, 1, 0}, +/* 5 */ { 5, s_2_5, -1, 1, 0}, +/* 6 */ { 5, s_2_6, -1, 1, 0}, +/* 7 */ { 4, s_2_7, -1, 1, 0}, +/* 8 */ { 5, s_2_8, -1, 3, 0}, +/* 9 */ { 4, s_2_9, -1, 1, 0}, +/* 10 */ { 5, s_2_10, 9, 1, 0}, +/* 11 */ { 4, s_2_11, -1, 1, 0}, +/* 12 */ { 4, s_2_12, -1, 1, 0}, +/* 13 */ { 6, s_2_13, -1, 1, 0}, +/* 14 */ { 4, s_2_14, -1, 1, 0}, +/* 15 */ { 4, s_2_15, -1, 1, 0}, +/* 16 */ { 5, s_2_16, -1, 1, 0}, +/* 17 */ { 3, s_2_17, -1, 1, 0}, +/* 18 */ { 6, s_2_18, 17, 1, 0}, +/* 19 */ { 8, s_2_19, 18, 5, 0}, +/* 20 */ { 3, s_2_20, -1, 1, 0}, +/* 21 */ { 3, s_2_21, -1, 1, 0}, +/* 22 */ { 3, s_2_22, -1, 1, 0}, +/* 23 */ { 5, s_2_23, 22, 1, 0}, +/* 24 */ { 3, s_2_24, -1, 1, 0}, +/* 25 */ { 4, s_2_25, 24, 1, 0}, +/* 26 */ { 5, s_2_26, 25, 1, 0}, +/* 27 */ { 5, s_2_27, -1, 1, 0}, +/* 28 */ { 3, s_2_28, -1, 1, 0}, +/* 29 */ { 3, s_2_29, -1, 1, 0}, +/* 30 */ { 4, s_2_30, -1, 1, 0}, +/* 31 */ { 4, s_2_31, -1, 1, 0}, +/* 32 */ { 4, s_2_32, -1, 1, 0}, +/* 33 */ { 3, s_2_33, -1, 1, 0}, +/* 34 */ { 3, s_2_34, -1, 1, 0}, +/* 35 */ { 3, s_2_35, -1, 1, 0}, +/* 36 */ { 4, s_2_36, -1, 1, 0}, +/* 37 */ { 7, s_2_37, 36, 1, 0}, +/* 38 */ { 7, s_2_38, 36, 1, 0}, +/* 39 */ { 3, s_2_39, -1, 1, 0}, +/* 40 */ { 5, s_2_40, 39, 1, 0}, +/* 41 */ { 3, s_2_41, -1, 1, 0}, +/* 42 */ { 5, s_2_42, -1, 3, 0}, +/* 43 */ { 2, s_2_43, -1, 4, 0}, +/* 44 */ { 5, s_2_44, 43, 1, 0}, +/* 45 */ { 3, s_2_45, -1, 1, 0}, +/* 46 */ { 3, s_2_46, -1, 1, 0}, +/* 47 */ { 2, s_2_47, -1, 1, 0}, +/* 48 */ { 4, s_2_48, -1, 1, 0}, +/* 49 */ { 3, s_2_49, -1, 1, 0}, +/* 50 */ { 4, s_2_50, 49, 1, 0}, +/* 51 */ { 4, s_2_51, 49, 1, 0}, +/* 52 */ { 4, s_2_52, -1, 1, 0}, +/* 53 */ { 7, s_2_53, 52, 1, 0}, +/* 54 */ { 7, s_2_54, 52, 1, 0}, +/* 55 */ { 6, s_2_55, 52, 1, 0}, +/* 56 */ { 4, s_2_56, -1, 1, 0}, +/* 57 */ { 4, s_2_57, -1, 1, 0}, +/* 58 */ { 4, s_2_58, -1, 1, 0}, +/* 59 */ { 3, s_2_59, -1, 1, 0}, +/* 60 */ { 3, s_2_60, -1, 1, 0}, +/* 61 */ { 4, s_2_61, -1, 3, 0}, +/* 62 */ { 3, s_2_62, -1, 1, 0}, +/* 63 */ { 4, s_2_63, -1, 1, 0}, +/* 64 */ { 2, s_2_64, -1, 1, 0}, +/* 65 */ { 2, s_2_65, -1, 1, 0}, +/* 66 */ { 3, s_2_66, -1, 1, 0}, +/* 67 */ { 3, s_2_67, -1, 1, 0}, +/* 68 */ { 4, s_2_68, -1, 1, 0}, +/* 69 */ { 4, s_2_69, -1, 1, 0}, +/* 70 */ { 5, s_2_70, -1, 1, 0}, +/* 71 */ { 5, s_2_71, -1, 1, 0}, +/* 72 */ { 5, s_2_72, -1, 1, 0}, +/* 73 */ { 5, s_2_73, -1, 1, 0}, +/* 74 */ { 7, s_2_74, 73, 5, 0}, +/* 75 */ { 4, s_2_75, -1, 1, 0}, +/* 76 */ { 5, s_2_76, -1, 1, 0}, +/* 77 */ { 2, s_2_77, -1, 1, 0}, +/* 78 */ { 6, s_2_78, 77, 1, 0}, +/* 79 */ { 4, s_2_79, 77, 1, 0}, +/* 80 */ { 4, s_2_80, 77, 1, 0}, +/* 81 */ { 4, s_2_81, 77, 1, 0}, +/* 82 */ { 5, s_2_82, 77, 1, 0}, +/* 83 */ { 3, s_2_83, -1, 1, 0}, +/* 84 */ { 2, s_2_84, -1, 1, 0}, +/* 85 */ { 3, s_2_85, 84, 1, 0}, +/* 86 */ { 3, s_2_86, -1, 1, 0}, +/* 87 */ { 5, s_2_87, -1, 1, 0}, +/* 88 */ { 3, s_2_88, -1, 4, 0}, +/* 89 */ { 6, s_2_89, 88, 3, 0}, +/* 90 */ { 3, s_2_90, -1, 1, 0}, +/* 91 */ { 4, s_2_91, -1, 1, 0}, +/* 92 */ { 4, s_2_92, -1, 2, 0}, +/* 93 */ { 6, s_2_93, -1, 1, 0}, +/* 94 */ { 6, s_2_94, -1, 1, 0}, +/* 95 */ { 6, s_2_95, -1, 1, 0}, +/* 96 */ { 5, s_2_96, -1, 1, 0}, +/* 97 */ { 6, s_2_97, -1, 3, 0}, +/* 98 */ { 5, s_2_98, -1, 1, 0}, +/* 99 */ { 5, s_2_99, -1, 1, 0}, +/*100 */ { 5, s_2_100, -1, 1, 0}, +/*101 */ { 5, s_2_101, -1, 1, 0}, +/*102 */ { 7, s_2_102, -1, 1, 0}, +/*103 */ { 4, s_2_103, -1, 1, 0}, +/*104 */ { 5, s_2_104, 103, 1, 0}, +/*105 */ { 5, s_2_105, 103, 1, 0}, +/*106 */ { 4, s_2_106, -1, 1, 0}, +/*107 */ { 7, s_2_107, 106, 1, 0}, +/*108 */ { 9, s_2_108, 107, 5, 0}, +/*109 */ { 6, s_2_109, -1, 1, 0}, +/*110 */ { 5, s_2_110, -1, 1, 0}, +/*111 */ { 8, s_2_111, 110, 1, 0}, +/*112 */ { 4, s_2_112, -1, 1, 0}, +/*113 */ { 4, s_2_113, -1, 1, 0}, +/*114 */ { 4, s_2_114, -1, 1, 0}, +/*115 */ { 5, s_2_115, 114, 1, 0}, +/*116 */ { 6, s_2_116, 115, 1, 0}, +/*117 */ { 5, s_2_117, -1, 1, 0}, +/*118 */ { 4, s_2_118, -1, 1, 0}, +/*119 */ { 4, s_2_119, -1, 1, 0}, +/*120 */ { 5, s_2_120, -1, 1, 0}, +/*121 */ { 5, s_2_121, -1, 1, 0}, +/*122 */ { 4, s_2_122, -1, 1, 0}, +/*123 */ { 4, s_2_123, -1, 1, 0}, +/*124 */ { 5, s_2_124, -1, 1, 0}, +/*125 */ { 8, s_2_125, 124, 1, 0}, +/*126 */ { 8, s_2_126, 124, 1, 0}, +/*127 */ { 5, s_2_127, -1, 4, 0}, +/*128 */ { 8, s_2_128, 127, 3, 0}, +/*129 */ { 4, s_2_129, -1, 1, 0}, +/*130 */ { 6, s_2_130, 129, 1, 0}, +/*131 */ { 6, s_2_131, -1, 3, 0}, +/*132 */ { 9, s_2_132, -1, 1, 0}, +/*133 */ { 4, s_2_133, -1, 1, 0}, +/*134 */ { 4, s_2_134, -1, 1, 0}, +/*135 */ { 5, s_2_135, -1, 3, 0}, +/*136 */ { 4, s_2_136, -1, 1, 0}, +/*137 */ { 5, s_2_137, -1, 1, 0}, +/*138 */ { 2, s_2_138, -1, 1, 0}, +/*139 */ { 3, s_2_139, 138, 1, 0}, +/*140 */ { 4, s_2_140, 138, 1, 0}, +/*141 */ { 3, s_2_141, -1, 1, 0}, +/*142 */ { 6, s_2_142, 141, 1, 0}, +/*143 */ { 8, s_2_143, 142, 5, 0}, +/*144 */ { 4, s_2_144, -1, 1, 0}, +/*145 */ { 5, s_2_145, 144, 1, 0}, +/*146 */ { 6, s_2_146, 145, 2, 0}, +/*147 */ { 4, s_2_147, -1, 1, 0}, +/*148 */ { 4, s_2_148, -1, 1, 0}, +/*149 */ { 5, s_2_149, -1, 1, 0}, +/*150 */ { 5, s_2_150, -1, 1, 0}, +/*151 */ { 3, s_2_151, -1, 1, 0}, +/*152 */ { 3, s_2_152, -1, 1, 0}, +/*153 */ { 4, s_2_153, 152, 1, 0}, +/*154 */ { 5, s_2_154, 153, 1, 0}, +/*155 */ { 5, s_2_155, 153, 1, 0}, +/*156 */ { 3, s_2_156, -1, 1, 0}, +/*157 */ { 5, s_2_157, 156, 1, 0}, +/*158 */ { 8, s_2_158, 157, 1, 0}, +/*159 */ { 7, s_2_159, 157, 1, 0}, +/*160 */ { 9, s_2_160, 159, 1, 0}, +/*161 */ { 5, s_2_161, 156, 1, 0}, +/*162 */ { 3, s_2_162, -1, 1, 0}, +/*163 */ { 4, s_2_163, -1, 1, 0}, +/*164 */ { 4, s_2_164, -1, 1, 0}, +/*165 */ { 5, s_2_165, 164, 1, 0}, +/*166 */ { 6, s_2_166, 165, 1, 0}, +/*167 */ { 3, s_2_167, -1, 1, 0}, +/*168 */ { 3, s_2_168, -1, 1, 0}, +/*169 */ { 3, s_2_169, -1, 1, 0}, +/*170 */ { 5, s_2_170, 169, 1, 0}, +/*171 */ { 5, s_2_171, 169, 1, 0}, +/*172 */ { 2, s_2_172, -1, 1, 0}, +/*173 */ { 2, s_2_173, -1, 1, 0}, +/*174 */ { 2, s_2_174, -1, 1, 0}, +/*175 */ { 3, s_2_175, 174, 1, 0}, +/*176 */ { 2, s_2_176, -1, 1, 0}, +/*177 */ { 4, s_2_177, -1, 1, 0}, +/*178 */ { 7, s_2_178, 177, 1, 0}, +/*179 */ { 6, s_2_179, 177, 1, 0}, +/*180 */ { 8, s_2_180, 179, 1, 0}, +/*181 */ { 4, s_2_181, -1, 1, 0}, +/*182 */ { 2, s_2_182, -1, 1, 0}, +/*183 */ { 3, s_2_183, -1, 1, 0}, +/*184 */ { 3, s_2_184, -1, 1, 0}, +/*185 */ { 4, s_2_185, 184, 1, 0}, +/*186 */ { 4, s_2_186, 184, 1, 0}, +/*187 */ { 5, s_2_187, 186, 1, 0}, +/*188 */ { 7, s_2_188, 187, 1, 0}, +/*189 */ { 2, s_2_189, -1, 1, 0}, +/*190 */ { 5, s_2_190, -1, 1, 0}, +/*191 */ { 5, s_2_191, -1, 1, 0}, +/*192 */ { 5, s_2_192, -1, 1, 0}, +/*193 */ { 4, s_2_193, -1, 1, 0}, +/*194 */ { 5, s_2_194, -1, 1, 0}, +/*195 */ { 4, s_2_195, -1, 1, 0}, +/*196 */ { 1, s_2_196, -1, 1, 0}, +/*197 */ { 2, s_2_197, 196, 1, 0}, +/*198 */ { 3, s_2_198, 197, 1, 0}, +/*199 */ { 4, s_2_199, 198, 1, 0} +}; + +static const symbol s_3_0[3] = { 'a', 'b', 'a' }; +static const symbol s_3_1[4] = { 'e', 's', 'c', 'a' }; +static const symbol s_3_2[4] = { 'i', 's', 'c', 'a' }; +static const symbol s_3_3[4] = { 0xEF, 's', 'c', 'a' }; +static const symbol s_3_4[3] = { 'a', 'd', 'a' }; +static const symbol s_3_5[3] = { 'i', 'd', 'a' }; +static const symbol s_3_6[3] = { 'u', 'd', 'a' }; +static const symbol s_3_7[3] = { 0xEF, 'd', 'a' }; +static const symbol s_3_8[2] = { 'i', 'a' }; +static const symbol s_3_9[4] = { 'a', 'r', 'i', 'a' }; +static const symbol s_3_10[4] = { 'i', 'r', 'i', 'a' }; +static const symbol s_3_11[3] = { 'a', 'r', 'a' }; +static const symbol s_3_12[4] = { 'i', 'e', 'r', 'a' }; +static const symbol s_3_13[3] = { 'i', 'r', 'a' }; +static const symbol s_3_14[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_3_15[3] = { 0xEF, 'r', 'a' }; +static const symbol s_3_16[3] = { 'a', 'v', 'a' }; +static const symbol s_3_17[3] = { 'i', 'x', 'a' }; +static const symbol s_3_18[4] = { 'i', 't', 'z', 'a' }; +static const symbol s_3_19[2] = { 0xED, 'a' }; +static const symbol s_3_20[4] = { 'a', 'r', 0xED, 'a' }; +static const symbol s_3_21[4] = { 'e', 'r', 0xED, 'a' }; +static const symbol s_3_22[4] = { 'i', 'r', 0xED, 'a' }; +static const symbol s_3_23[2] = { 0xEF, 'a' }; +static const symbol s_3_24[3] = { 'i', 's', 'c' }; +static const symbol s_3_25[3] = { 0xEF, 's', 'c' }; +static const symbol s_3_26[2] = { 'a', 'd' }; +static const symbol s_3_27[2] = { 'e', 'd' }; +static const symbol s_3_28[2] = { 'i', 'd' }; +static const symbol s_3_29[2] = { 'i', 'e' }; +static const symbol s_3_30[2] = { 'r', 'e' }; +static const symbol s_3_31[3] = { 'd', 'r', 'e' }; +static const symbol s_3_32[3] = { 'a', 's', 'e' }; +static const symbol s_3_33[4] = { 'i', 'e', 's', 'e' }; +static const symbol s_3_34[4] = { 'a', 's', 't', 'e' }; +static const symbol s_3_35[4] = { 'i', 's', 't', 'e' }; +static const symbol s_3_36[2] = { 'i', 'i' }; +static const symbol s_3_37[3] = { 'i', 'n', 'i' }; +static const symbol s_3_38[5] = { 'e', 's', 'q', 'u', 'i' }; +static const symbol s_3_39[4] = { 'e', 'i', 'x', 'i' }; +static const symbol s_3_40[4] = { 'i', 't', 'z', 'i' }; +static const symbol s_3_41[2] = { 'a', 'm' }; +static const symbol s_3_42[2] = { 'e', 'm' }; +static const symbol s_3_43[4] = { 'a', 'r', 'e', 'm' }; +static const symbol s_3_44[4] = { 'i', 'r', 'e', 'm' }; +static const symbol s_3_45[4] = { 0xE0, 'r', 'e', 'm' }; +static const symbol s_3_46[4] = { 0xED, 'r', 'e', 'm' }; +static const symbol s_3_47[5] = { 0xE0, 's', 's', 'e', 'm' }; +static const symbol s_3_48[5] = { 0xE9, 's', 's', 'e', 'm' }; +static const symbol s_3_49[5] = { 'i', 'g', 'u', 'e', 'm' }; +static const symbol s_3_50[5] = { 0xEF, 'g', 'u', 'e', 'm' }; +static const symbol s_3_51[4] = { 'a', 'v', 'e', 'm' }; +static const symbol s_3_52[4] = { 0xE0, 'v', 'e', 'm' }; +static const symbol s_3_53[4] = { 0xE1, 'v', 'e', 'm' }; +static const symbol s_3_54[5] = { 'i', 'r', 0xEC, 'e', 'm' }; +static const symbol s_3_55[3] = { 0xED, 'e', 'm' }; +static const symbol s_3_56[5] = { 'a', 'r', 0xED, 'e', 'm' }; +static const symbol s_3_57[5] = { 'i', 'r', 0xED, 'e', 'm' }; +static const symbol s_3_58[5] = { 'a', 's', 's', 'i', 'm' }; +static const symbol s_3_59[5] = { 'e', 's', 's', 'i', 'm' }; +static const symbol s_3_60[5] = { 'i', 's', 's', 'i', 'm' }; +static const symbol s_3_61[5] = { 0xE0, 's', 's', 'i', 'm' }; +static const symbol s_3_62[5] = { 0xE8, 's', 's', 'i', 'm' }; +static const symbol s_3_63[5] = { 0xE9, 's', 's', 'i', 'm' }; +static const symbol s_3_64[5] = { 0xED, 's', 's', 'i', 'm' }; +static const symbol s_3_65[2] = { 0xEF, 'm' }; +static const symbol s_3_66[2] = { 'a', 'n' }; +static const symbol s_3_67[4] = { 'a', 'b', 'a', 'n' }; +static const symbol s_3_68[5] = { 'a', 'r', 'i', 'a', 'n' }; +static const symbol s_3_69[4] = { 'a', 'r', 'a', 'n' }; +static const symbol s_3_70[5] = { 'i', 'e', 'r', 'a', 'n' }; +static const symbol s_3_71[4] = { 'i', 'r', 'a', 'n' }; +static const symbol s_3_72[3] = { 0xED, 'a', 'n' }; +static const symbol s_3_73[5] = { 'a', 'r', 0xED, 'a', 'n' }; +static const symbol s_3_74[5] = { 'e', 'r', 0xED, 'a', 'n' }; +static const symbol s_3_75[5] = { 'i', 'r', 0xED, 'a', 'n' }; +static const symbol s_3_76[2] = { 'e', 'n' }; +static const symbol s_3_77[3] = { 'i', 'e', 'n' }; +static const symbol s_3_78[5] = { 'a', 'r', 'i', 'e', 'n' }; +static const symbol s_3_79[5] = { 'i', 'r', 'i', 'e', 'n' }; +static const symbol s_3_80[4] = { 'a', 'r', 'e', 'n' }; +static const symbol s_3_81[4] = { 'e', 'r', 'e', 'n' }; +static const symbol s_3_82[4] = { 'i', 'r', 'e', 'n' }; +static const symbol s_3_83[4] = { 0xE0, 'r', 'e', 'n' }; +static const symbol s_3_84[4] = { 0xEF, 'r', 'e', 'n' }; +static const symbol s_3_85[4] = { 'a', 's', 'e', 'n' }; +static const symbol s_3_86[5] = { 'i', 'e', 's', 'e', 'n' }; +static const symbol s_3_87[5] = { 'a', 's', 's', 'e', 'n' }; +static const symbol s_3_88[5] = { 'e', 's', 's', 'e', 'n' }; +static const symbol s_3_89[5] = { 'i', 's', 's', 'e', 'n' }; +static const symbol s_3_90[5] = { 0xE9, 's', 's', 'e', 'n' }; +static const symbol s_3_91[5] = { 0xEF, 's', 's', 'e', 'n' }; +static const symbol s_3_92[6] = { 'e', 's', 'q', 'u', 'e', 'n' }; +static const symbol s_3_93[6] = { 'i', 's', 'q', 'u', 'e', 'n' }; +static const symbol s_3_94[6] = { 0xEF, 's', 'q', 'u', 'e', 'n' }; +static const symbol s_3_95[4] = { 'a', 'v', 'e', 'n' }; +static const symbol s_3_96[4] = { 'i', 'x', 'e', 'n' }; +static const symbol s_3_97[5] = { 'e', 'i', 'x', 'e', 'n' }; +static const symbol s_3_98[4] = { 0xEF, 'x', 'e', 'n' }; +static const symbol s_3_99[3] = { 0xEF, 'e', 'n' }; +static const symbol s_3_100[2] = { 'i', 'n' }; +static const symbol s_3_101[4] = { 'i', 'n', 'i', 'n' }; +static const symbol s_3_102[3] = { 's', 'i', 'n' }; +static const symbol s_3_103[4] = { 'i', 's', 'i', 'n' }; +static const symbol s_3_104[5] = { 'a', 's', 's', 'i', 'n' }; +static const symbol s_3_105[5] = { 'e', 's', 's', 'i', 'n' }; +static const symbol s_3_106[5] = { 'i', 's', 's', 'i', 'n' }; +static const symbol s_3_107[5] = { 0xEF, 's', 's', 'i', 'n' }; +static const symbol s_3_108[6] = { 'e', 's', 'q', 'u', 'i', 'n' }; +static const symbol s_3_109[5] = { 'e', 'i', 'x', 'i', 'n' }; +static const symbol s_3_110[4] = { 'a', 'r', 'o', 'n' }; +static const symbol s_3_111[5] = { 'i', 'e', 'r', 'o', 'n' }; +static const symbol s_3_112[4] = { 'a', 'r', 0xE1, 'n' }; +static const symbol s_3_113[4] = { 'e', 'r', 0xE1, 'n' }; +static const symbol s_3_114[4] = { 'i', 'r', 0xE1, 'n' }; +static const symbol s_3_115[3] = { 'i', 0xEF, 'n' }; +static const symbol s_3_116[3] = { 'a', 'd', 'o' }; +static const symbol s_3_117[3] = { 'i', 'd', 'o' }; +static const symbol s_3_118[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_3_119[5] = { 'i', 'e', 'n', 'd', 'o' }; +static const symbol s_3_120[2] = { 'i', 'o' }; +static const symbol s_3_121[3] = { 'i', 'x', 'o' }; +static const symbol s_3_122[4] = { 'e', 'i', 'x', 'o' }; +static const symbol s_3_123[3] = { 0xEF, 'x', 'o' }; +static const symbol s_3_124[4] = { 'i', 't', 'z', 'o' }; +static const symbol s_3_125[2] = { 'a', 'r' }; +static const symbol s_3_126[4] = { 't', 'z', 'a', 'r' }; +static const symbol s_3_127[2] = { 'e', 'r' }; +static const symbol s_3_128[5] = { 'e', 'i', 'x', 'e', 'r' }; +static const symbol s_3_129[2] = { 'i', 'r' }; +static const symbol s_3_130[4] = { 'a', 'd', 'o', 'r' }; +static const symbol s_3_131[2] = { 'a', 's' }; +static const symbol s_3_132[4] = { 'a', 'b', 'a', 's' }; +static const symbol s_3_133[4] = { 'a', 'd', 'a', 's' }; +static const symbol s_3_134[4] = { 'i', 'd', 'a', 's' }; +static const symbol s_3_135[4] = { 'a', 'r', 'a', 's' }; +static const symbol s_3_136[5] = { 'i', 'e', 'r', 'a', 's' }; +static const symbol s_3_137[3] = { 0xED, 'a', 's' }; +static const symbol s_3_138[5] = { 'a', 'r', 0xED, 'a', 's' }; +static const symbol s_3_139[5] = { 'e', 'r', 0xED, 'a', 's' }; +static const symbol s_3_140[5] = { 'i', 'r', 0xED, 'a', 's' }; +static const symbol s_3_141[3] = { 'i', 'd', 's' }; +static const symbol s_3_142[2] = { 'e', 's' }; +static const symbol s_3_143[4] = { 'a', 'd', 'e', 's' }; +static const symbol s_3_144[4] = { 'i', 'd', 'e', 's' }; +static const symbol s_3_145[4] = { 'u', 'd', 'e', 's' }; +static const symbol s_3_146[4] = { 0xEF, 'd', 'e', 's' }; +static const symbol s_3_147[5] = { 'a', 't', 'g', 'e', 's' }; +static const symbol s_3_148[3] = { 'i', 'e', 's' }; +static const symbol s_3_149[5] = { 'a', 'r', 'i', 'e', 's' }; +static const symbol s_3_150[5] = { 'i', 'r', 'i', 'e', 's' }; +static const symbol s_3_151[4] = { 'a', 'r', 'e', 's' }; +static const symbol s_3_152[4] = { 'i', 'r', 'e', 's' }; +static const symbol s_3_153[6] = { 'a', 'd', 'o', 'r', 'e', 's' }; +static const symbol s_3_154[4] = { 0xEF, 'r', 'e', 's' }; +static const symbol s_3_155[4] = { 'a', 's', 'e', 's' }; +static const symbol s_3_156[5] = { 'i', 'e', 's', 'e', 's' }; +static const symbol s_3_157[5] = { 'a', 's', 's', 'e', 's' }; +static const symbol s_3_158[5] = { 'e', 's', 's', 'e', 's' }; +static const symbol s_3_159[5] = { 'i', 's', 's', 'e', 's' }; +static const symbol s_3_160[5] = { 0xEF, 's', 's', 'e', 's' }; +static const symbol s_3_161[4] = { 'q', 'u', 'e', 's' }; +static const symbol s_3_162[6] = { 'e', 's', 'q', 'u', 'e', 's' }; +static const symbol s_3_163[6] = { 0xEF, 's', 'q', 'u', 'e', 's' }; +static const symbol s_3_164[4] = { 'a', 'v', 'e', 's' }; +static const symbol s_3_165[4] = { 'i', 'x', 'e', 's' }; +static const symbol s_3_166[5] = { 'e', 'i', 'x', 'e', 's' }; +static const symbol s_3_167[4] = { 0xEF, 'x', 'e', 's' }; +static const symbol s_3_168[3] = { 0xEF, 'e', 's' }; +static const symbol s_3_169[5] = { 'a', 'b', 'a', 'i', 's' }; +static const symbol s_3_170[5] = { 'a', 'r', 'a', 'i', 's' }; +static const symbol s_3_171[6] = { 'i', 'e', 'r', 'a', 'i', 's' }; +static const symbol s_3_172[4] = { 0xED, 'a', 'i', 's' }; +static const symbol s_3_173[6] = { 'a', 'r', 0xED, 'a', 'i', 's' }; +static const symbol s_3_174[6] = { 'e', 'r', 0xED, 'a', 'i', 's' }; +static const symbol s_3_175[6] = { 'i', 'r', 0xED, 'a', 'i', 's' }; +static const symbol s_3_176[5] = { 'a', 's', 'e', 'i', 's' }; +static const symbol s_3_177[6] = { 'i', 'e', 's', 'e', 'i', 's' }; +static const symbol s_3_178[6] = { 'a', 's', 't', 'e', 'i', 's' }; +static const symbol s_3_179[6] = { 'i', 's', 't', 'e', 'i', 's' }; +static const symbol s_3_180[4] = { 'i', 'n', 'i', 's' }; +static const symbol s_3_181[3] = { 's', 'i', 's' }; +static const symbol s_3_182[4] = { 'i', 's', 'i', 's' }; +static const symbol s_3_183[5] = { 'a', 's', 's', 'i', 's' }; +static const symbol s_3_184[5] = { 'e', 's', 's', 'i', 's' }; +static const symbol s_3_185[5] = { 'i', 's', 's', 'i', 's' }; +static const symbol s_3_186[5] = { 0xEF, 's', 's', 'i', 's' }; +static const symbol s_3_187[6] = { 'e', 's', 'q', 'u', 'i', 's' }; +static const symbol s_3_188[5] = { 'e', 'i', 'x', 'i', 's' }; +static const symbol s_3_189[5] = { 'i', 't', 'z', 'i', 's' }; +static const symbol s_3_190[3] = { 0xE1, 'i', 's' }; +static const symbol s_3_191[5] = { 'a', 'r', 0xE9, 'i', 's' }; +static const symbol s_3_192[5] = { 'e', 'r', 0xE9, 'i', 's' }; +static const symbol s_3_193[5] = { 'i', 'r', 0xE9, 'i', 's' }; +static const symbol s_3_194[3] = { 'a', 'm', 's' }; +static const symbol s_3_195[4] = { 'a', 'd', 'o', 's' }; +static const symbol s_3_196[4] = { 'i', 'd', 'o', 's' }; +static const symbol s_3_197[4] = { 'a', 'm', 'o', 's' }; +static const symbol s_3_198[6] = { 0xE1, 'b', 'a', 'm', 'o', 's' }; +static const symbol s_3_199[6] = { 0xE1, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_3_200[7] = { 'i', 0xE9, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_3_201[5] = { 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_3_202[7] = { 'a', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_3_203[7] = { 'e', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_3_204[7] = { 'i', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_3_205[6] = { 'a', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_3_206[6] = { 'e', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_3_207[6] = { 'i', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_3_208[6] = { 0xE1, 's', 'e', 'm', 'o', 's' }; +static const symbol s_3_209[7] = { 'i', 0xE9, 's', 'e', 'm', 'o', 's' }; +static const symbol s_3_210[4] = { 'i', 'm', 'o', 's' }; +static const symbol s_3_211[5] = { 'a', 'd', 'o', 'r', 's' }; +static const symbol s_3_212[3] = { 'a', 's', 's' }; +static const symbol s_3_213[5] = { 'e', 'r', 'a', 's', 's' }; +static const symbol s_3_214[3] = { 'e', 's', 's' }; +static const symbol s_3_215[3] = { 'a', 't', 's' }; +static const symbol s_3_216[3] = { 'i', 't', 's' }; +static const symbol s_3_217[4] = { 'e', 'n', 't', 's' }; +static const symbol s_3_218[2] = { 0xE0, 's' }; +static const symbol s_3_219[4] = { 'a', 'r', 0xE0, 's' }; +static const symbol s_3_220[4] = { 'i', 'r', 0xE0, 's' }; +static const symbol s_3_221[4] = { 'a', 'r', 0xE1, 's' }; +static const symbol s_3_222[4] = { 'e', 'r', 0xE1, 's' }; +static const symbol s_3_223[4] = { 'i', 'r', 0xE1, 's' }; +static const symbol s_3_224[2] = { 0xE9, 's' }; +static const symbol s_3_225[4] = { 'a', 'r', 0xE9, 's' }; +static const symbol s_3_226[2] = { 0xED, 's' }; +static const symbol s_3_227[3] = { 'i', 0xEF, 's' }; +static const symbol s_3_228[2] = { 'a', 't' }; +static const symbol s_3_229[2] = { 'i', 't' }; +static const symbol s_3_230[3] = { 'a', 'n', 't' }; +static const symbol s_3_231[3] = { 'e', 'n', 't' }; +static const symbol s_3_232[3] = { 'i', 'n', 't' }; +static const symbol s_3_233[2] = { 'u', 't' }; +static const symbol s_3_234[2] = { 0xEF, 't' }; +static const symbol s_3_235[2] = { 'a', 'u' }; +static const symbol s_3_236[4] = { 'e', 'r', 'a', 'u' }; +static const symbol s_3_237[3] = { 'i', 'e', 'u' }; +static const symbol s_3_238[4] = { 'i', 'n', 'e', 'u' }; +static const symbol s_3_239[4] = { 'a', 'r', 'e', 'u' }; +static const symbol s_3_240[4] = { 'i', 'r', 'e', 'u' }; +static const symbol s_3_241[4] = { 0xE0, 'r', 'e', 'u' }; +static const symbol s_3_242[4] = { 0xED, 'r', 'e', 'u' }; +static const symbol s_3_243[5] = { 'a', 's', 's', 'e', 'u' }; +static const symbol s_3_244[5] = { 'e', 's', 's', 'e', 'u' }; +static const symbol s_3_245[7] = { 'e', 'r', 'e', 's', 's', 'e', 'u' }; +static const symbol s_3_246[5] = { 0xE0, 's', 's', 'e', 'u' }; +static const symbol s_3_247[5] = { 0xE9, 's', 's', 'e', 'u' }; +static const symbol s_3_248[5] = { 'i', 'g', 'u', 'e', 'u' }; +static const symbol s_3_249[5] = { 0xEF, 'g', 'u', 'e', 'u' }; +static const symbol s_3_250[4] = { 0xE0, 'v', 'e', 'u' }; +static const symbol s_3_251[4] = { 0xE1, 'v', 'e', 'u' }; +static const symbol s_3_252[5] = { 'i', 't', 'z', 'e', 'u' }; +static const symbol s_3_253[3] = { 0xEC, 'e', 'u' }; +static const symbol s_3_254[5] = { 'i', 'r', 0xEC, 'e', 'u' }; +static const symbol s_3_255[3] = { 0xED, 'e', 'u' }; +static const symbol s_3_256[5] = { 'a', 'r', 0xED, 'e', 'u' }; +static const symbol s_3_257[5] = { 'i', 'r', 0xED, 'e', 'u' }; +static const symbol s_3_258[5] = { 'a', 's', 's', 'i', 'u' }; +static const symbol s_3_259[5] = { 'i', 's', 's', 'i', 'u' }; +static const symbol s_3_260[5] = { 0xE0, 's', 's', 'i', 'u' }; +static const symbol s_3_261[5] = { 0xE8, 's', 's', 'i', 'u' }; +static const symbol s_3_262[5] = { 0xE9, 's', 's', 'i', 'u' }; +static const symbol s_3_263[5] = { 0xED, 's', 's', 'i', 'u' }; +static const symbol s_3_264[2] = { 0xEF, 'u' }; +static const symbol s_3_265[2] = { 'i', 'x' }; +static const symbol s_3_266[3] = { 'e', 'i', 'x' }; +static const symbol s_3_267[2] = { 0xEF, 'x' }; +static const symbol s_3_268[3] = { 'i', 't', 'z' }; +static const symbol s_3_269[2] = { 'i', 0xE0 }; +static const symbol s_3_270[3] = { 'a', 'r', 0xE0 }; +static const symbol s_3_271[3] = { 'i', 'r', 0xE0 }; +static const symbol s_3_272[4] = { 'i', 't', 'z', 0xE0 }; +static const symbol s_3_273[3] = { 'a', 'r', 0xE1 }; +static const symbol s_3_274[3] = { 'e', 'r', 0xE1 }; +static const symbol s_3_275[3] = { 'i', 'r', 0xE1 }; +static const symbol s_3_276[3] = { 'i', 'r', 0xE8 }; +static const symbol s_3_277[3] = { 'a', 'r', 0xE9 }; +static const symbol s_3_278[3] = { 'e', 'r', 0xE9 }; +static const symbol s_3_279[3] = { 'i', 'r', 0xE9 }; +static const symbol s_3_280[1] = { 0xED }; +static const symbol s_3_281[2] = { 'i', 0xEF }; +static const symbol s_3_282[2] = { 'i', 0xF3 }; + +static const struct among a_3[283] = +{ +/* 0 */ { 3, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 4, s_3_2, -1, 1, 0}, +/* 3 */ { 4, s_3_3, -1, 1, 0}, +/* 4 */ { 3, s_3_4, -1, 1, 0}, +/* 5 */ { 3, s_3_5, -1, 1, 0}, +/* 6 */ { 3, s_3_6, -1, 1, 0}, +/* 7 */ { 3, s_3_7, -1, 1, 0}, +/* 8 */ { 2, s_3_8, -1, 1, 0}, +/* 9 */ { 4, s_3_9, 8, 1, 0}, +/* 10 */ { 4, s_3_10, 8, 1, 0}, +/* 11 */ { 3, s_3_11, -1, 1, 0}, +/* 12 */ { 4, s_3_12, -1, 1, 0}, +/* 13 */ { 3, s_3_13, -1, 1, 0}, +/* 14 */ { 5, s_3_14, -1, 1, 0}, +/* 15 */ { 3, s_3_15, -1, 1, 0}, +/* 16 */ { 3, s_3_16, -1, 1, 0}, +/* 17 */ { 3, s_3_17, -1, 1, 0}, +/* 18 */ { 4, s_3_18, -1, 1, 0}, +/* 19 */ { 2, s_3_19, -1, 1, 0}, +/* 20 */ { 4, s_3_20, 19, 1, 0}, +/* 21 */ { 4, s_3_21, 19, 1, 0}, +/* 22 */ { 4, s_3_22, 19, 1, 0}, +/* 23 */ { 2, s_3_23, -1, 1, 0}, +/* 24 */ { 3, s_3_24, -1, 1, 0}, +/* 25 */ { 3, s_3_25, -1, 1, 0}, +/* 26 */ { 2, s_3_26, -1, 1, 0}, +/* 27 */ { 2, s_3_27, -1, 1, 0}, +/* 28 */ { 2, s_3_28, -1, 1, 0}, +/* 29 */ { 2, s_3_29, -1, 1, 0}, +/* 30 */ { 2, s_3_30, -1, 1, 0}, +/* 31 */ { 3, s_3_31, 30, 1, 0}, +/* 32 */ { 3, s_3_32, -1, 1, 0}, +/* 33 */ { 4, s_3_33, -1, 1, 0}, +/* 34 */ { 4, s_3_34, -1, 1, 0}, +/* 35 */ { 4, s_3_35, -1, 1, 0}, +/* 36 */ { 2, s_3_36, -1, 1, 0}, +/* 37 */ { 3, s_3_37, -1, 1, 0}, +/* 38 */ { 5, s_3_38, -1, 1, 0}, +/* 39 */ { 4, s_3_39, -1, 1, 0}, +/* 40 */ { 4, s_3_40, -1, 1, 0}, +/* 41 */ { 2, s_3_41, -1, 1, 0}, +/* 42 */ { 2, s_3_42, -1, 1, 0}, +/* 43 */ { 4, s_3_43, 42, 1, 0}, +/* 44 */ { 4, s_3_44, 42, 1, 0}, +/* 45 */ { 4, s_3_45, 42, 1, 0}, +/* 46 */ { 4, s_3_46, 42, 1, 0}, +/* 47 */ { 5, s_3_47, 42, 1, 0}, +/* 48 */ { 5, s_3_48, 42, 1, 0}, +/* 49 */ { 5, s_3_49, 42, 1, 0}, +/* 50 */ { 5, s_3_50, 42, 1, 0}, +/* 51 */ { 4, s_3_51, 42, 1, 0}, +/* 52 */ { 4, s_3_52, 42, 1, 0}, +/* 53 */ { 4, s_3_53, 42, 1, 0}, +/* 54 */ { 5, s_3_54, 42, 1, 0}, +/* 55 */ { 3, s_3_55, 42, 1, 0}, +/* 56 */ { 5, s_3_56, 55, 1, 0}, +/* 57 */ { 5, s_3_57, 55, 1, 0}, +/* 58 */ { 5, s_3_58, -1, 1, 0}, +/* 59 */ { 5, s_3_59, -1, 1, 0}, +/* 60 */ { 5, s_3_60, -1, 1, 0}, +/* 61 */ { 5, s_3_61, -1, 1, 0}, +/* 62 */ { 5, s_3_62, -1, 1, 0}, +/* 63 */ { 5, s_3_63, -1, 1, 0}, +/* 64 */ { 5, s_3_64, -1, 1, 0}, +/* 65 */ { 2, s_3_65, -1, 1, 0}, +/* 66 */ { 2, s_3_66, -1, 1, 0}, +/* 67 */ { 4, s_3_67, 66, 1, 0}, +/* 68 */ { 5, s_3_68, 66, 1, 0}, +/* 69 */ { 4, s_3_69, 66, 1, 0}, +/* 70 */ { 5, s_3_70, 66, 1, 0}, +/* 71 */ { 4, s_3_71, 66, 1, 0}, +/* 72 */ { 3, s_3_72, 66, 1, 0}, +/* 73 */ { 5, s_3_73, 72, 1, 0}, +/* 74 */ { 5, s_3_74, 72, 1, 0}, +/* 75 */ { 5, s_3_75, 72, 1, 0}, +/* 76 */ { 2, s_3_76, -1, 1, 0}, +/* 77 */ { 3, s_3_77, 76, 1, 0}, +/* 78 */ { 5, s_3_78, 77, 1, 0}, +/* 79 */ { 5, s_3_79, 77, 1, 0}, +/* 80 */ { 4, s_3_80, 76, 1, 0}, +/* 81 */ { 4, s_3_81, 76, 1, 0}, +/* 82 */ { 4, s_3_82, 76, 1, 0}, +/* 83 */ { 4, s_3_83, 76, 1, 0}, +/* 84 */ { 4, s_3_84, 76, 1, 0}, +/* 85 */ { 4, s_3_85, 76, 1, 0}, +/* 86 */ { 5, s_3_86, 76, 1, 0}, +/* 87 */ { 5, s_3_87, 76, 1, 0}, +/* 88 */ { 5, s_3_88, 76, 1, 0}, +/* 89 */ { 5, s_3_89, 76, 1, 0}, +/* 90 */ { 5, s_3_90, 76, 1, 0}, +/* 91 */ { 5, s_3_91, 76, 1, 0}, +/* 92 */ { 6, s_3_92, 76, 1, 0}, +/* 93 */ { 6, s_3_93, 76, 1, 0}, +/* 94 */ { 6, s_3_94, 76, 1, 0}, +/* 95 */ { 4, s_3_95, 76, 1, 0}, +/* 96 */ { 4, s_3_96, 76, 1, 0}, +/* 97 */ { 5, s_3_97, 96, 1, 0}, +/* 98 */ { 4, s_3_98, 76, 1, 0}, +/* 99 */ { 3, s_3_99, 76, 1, 0}, +/*100 */ { 2, s_3_100, -1, 1, 0}, +/*101 */ { 4, s_3_101, 100, 1, 0}, +/*102 */ { 3, s_3_102, 100, 1, 0}, +/*103 */ { 4, s_3_103, 102, 1, 0}, +/*104 */ { 5, s_3_104, 102, 1, 0}, +/*105 */ { 5, s_3_105, 102, 1, 0}, +/*106 */ { 5, s_3_106, 102, 1, 0}, +/*107 */ { 5, s_3_107, 102, 1, 0}, +/*108 */ { 6, s_3_108, 100, 1, 0}, +/*109 */ { 5, s_3_109, 100, 1, 0}, +/*110 */ { 4, s_3_110, -1, 1, 0}, +/*111 */ { 5, s_3_111, -1, 1, 0}, +/*112 */ { 4, s_3_112, -1, 1, 0}, +/*113 */ { 4, s_3_113, -1, 1, 0}, +/*114 */ { 4, s_3_114, -1, 1, 0}, +/*115 */ { 3, s_3_115, -1, 1, 0}, +/*116 */ { 3, s_3_116, -1, 1, 0}, +/*117 */ { 3, s_3_117, -1, 1, 0}, +/*118 */ { 4, s_3_118, -1, 2, 0}, +/*119 */ { 5, s_3_119, -1, 1, 0}, +/*120 */ { 2, s_3_120, -1, 1, 0}, +/*121 */ { 3, s_3_121, -1, 1, 0}, +/*122 */ { 4, s_3_122, 121, 1, 0}, +/*123 */ { 3, s_3_123, -1, 1, 0}, +/*124 */ { 4, s_3_124, -1, 1, 0}, +/*125 */ { 2, s_3_125, -1, 1, 0}, +/*126 */ { 4, s_3_126, 125, 1, 0}, +/*127 */ { 2, s_3_127, -1, 1, 0}, +/*128 */ { 5, s_3_128, 127, 1, 0}, +/*129 */ { 2, s_3_129, -1, 1, 0}, +/*130 */ { 4, s_3_130, -1, 1, 0}, +/*131 */ { 2, s_3_131, -1, 1, 0}, +/*132 */ { 4, s_3_132, 131, 1, 0}, +/*133 */ { 4, s_3_133, 131, 1, 0}, +/*134 */ { 4, s_3_134, 131, 1, 0}, +/*135 */ { 4, s_3_135, 131, 1, 0}, +/*136 */ { 5, s_3_136, 131, 1, 0}, +/*137 */ { 3, s_3_137, 131, 1, 0}, +/*138 */ { 5, s_3_138, 137, 1, 0}, +/*139 */ { 5, s_3_139, 137, 1, 0}, +/*140 */ { 5, s_3_140, 137, 1, 0}, +/*141 */ { 3, s_3_141, -1, 1, 0}, +/*142 */ { 2, s_3_142, -1, 1, 0}, +/*143 */ { 4, s_3_143, 142, 1, 0}, +/*144 */ { 4, s_3_144, 142, 1, 0}, +/*145 */ { 4, s_3_145, 142, 1, 0}, +/*146 */ { 4, s_3_146, 142, 1, 0}, +/*147 */ { 5, s_3_147, 142, 1, 0}, +/*148 */ { 3, s_3_148, 142, 1, 0}, +/*149 */ { 5, s_3_149, 148, 1, 0}, +/*150 */ { 5, s_3_150, 148, 1, 0}, +/*151 */ { 4, s_3_151, 142, 1, 0}, +/*152 */ { 4, s_3_152, 142, 1, 0}, +/*153 */ { 6, s_3_153, 142, 1, 0}, +/*154 */ { 4, s_3_154, 142, 1, 0}, +/*155 */ { 4, s_3_155, 142, 1, 0}, +/*156 */ { 5, s_3_156, 142, 1, 0}, +/*157 */ { 5, s_3_157, 142, 1, 0}, +/*158 */ { 5, s_3_158, 142, 1, 0}, +/*159 */ { 5, s_3_159, 142, 1, 0}, +/*160 */ { 5, s_3_160, 142, 1, 0}, +/*161 */ { 4, s_3_161, 142, 1, 0}, +/*162 */ { 6, s_3_162, 161, 1, 0}, +/*163 */ { 6, s_3_163, 161, 1, 0}, +/*164 */ { 4, s_3_164, 142, 1, 0}, +/*165 */ { 4, s_3_165, 142, 1, 0}, +/*166 */ { 5, s_3_166, 165, 1, 0}, +/*167 */ { 4, s_3_167, 142, 1, 0}, +/*168 */ { 3, s_3_168, 142, 1, 0}, +/*169 */ { 5, s_3_169, -1, 1, 0}, +/*170 */ { 5, s_3_170, -1, 1, 0}, +/*171 */ { 6, s_3_171, -1, 1, 0}, +/*172 */ { 4, s_3_172, -1, 1, 0}, +/*173 */ { 6, s_3_173, 172, 1, 0}, +/*174 */ { 6, s_3_174, 172, 1, 0}, +/*175 */ { 6, s_3_175, 172, 1, 0}, +/*176 */ { 5, s_3_176, -1, 1, 0}, +/*177 */ { 6, s_3_177, -1, 1, 0}, +/*178 */ { 6, s_3_178, -1, 1, 0}, +/*179 */ { 6, s_3_179, -1, 1, 0}, +/*180 */ { 4, s_3_180, -1, 1, 0}, +/*181 */ { 3, s_3_181, -1, 1, 0}, +/*182 */ { 4, s_3_182, 181, 1, 0}, +/*183 */ { 5, s_3_183, 181, 1, 0}, +/*184 */ { 5, s_3_184, 181, 1, 0}, +/*185 */ { 5, s_3_185, 181, 1, 0}, +/*186 */ { 5, s_3_186, 181, 1, 0}, +/*187 */ { 6, s_3_187, -1, 1, 0}, +/*188 */ { 5, s_3_188, -1, 1, 0}, +/*189 */ { 5, s_3_189, -1, 1, 0}, +/*190 */ { 3, s_3_190, -1, 1, 0}, +/*191 */ { 5, s_3_191, -1, 1, 0}, +/*192 */ { 5, s_3_192, -1, 1, 0}, +/*193 */ { 5, s_3_193, -1, 1, 0}, +/*194 */ { 3, s_3_194, -1, 1, 0}, +/*195 */ { 4, s_3_195, -1, 1, 0}, +/*196 */ { 4, s_3_196, -1, 1, 0}, +/*197 */ { 4, s_3_197, -1, 1, 0}, +/*198 */ { 6, s_3_198, 197, 1, 0}, +/*199 */ { 6, s_3_199, 197, 1, 0}, +/*200 */ { 7, s_3_200, 197, 1, 0}, +/*201 */ { 5, s_3_201, 197, 1, 0}, +/*202 */ { 7, s_3_202, 201, 1, 0}, +/*203 */ { 7, s_3_203, 201, 1, 0}, +/*204 */ { 7, s_3_204, 201, 1, 0}, +/*205 */ { 6, s_3_205, -1, 1, 0}, +/*206 */ { 6, s_3_206, -1, 1, 0}, +/*207 */ { 6, s_3_207, -1, 1, 0}, +/*208 */ { 6, s_3_208, -1, 1, 0}, +/*209 */ { 7, s_3_209, -1, 1, 0}, +/*210 */ { 4, s_3_210, -1, 1, 0}, +/*211 */ { 5, s_3_211, -1, 1, 0}, +/*212 */ { 3, s_3_212, -1, 1, 0}, +/*213 */ { 5, s_3_213, 212, 1, 0}, +/*214 */ { 3, s_3_214, -1, 1, 0}, +/*215 */ { 3, s_3_215, -1, 1, 0}, +/*216 */ { 3, s_3_216, -1, 1, 0}, +/*217 */ { 4, s_3_217, -1, 1, 0}, +/*218 */ { 2, s_3_218, -1, 1, 0}, +/*219 */ { 4, s_3_219, 218, 1, 0}, +/*220 */ { 4, s_3_220, 218, 1, 0}, +/*221 */ { 4, s_3_221, -1, 1, 0}, +/*222 */ { 4, s_3_222, -1, 1, 0}, +/*223 */ { 4, s_3_223, -1, 1, 0}, +/*224 */ { 2, s_3_224, -1, 1, 0}, +/*225 */ { 4, s_3_225, 224, 1, 0}, +/*226 */ { 2, s_3_226, -1, 1, 0}, +/*227 */ { 3, s_3_227, -1, 1, 0}, +/*228 */ { 2, s_3_228, -1, 1, 0}, +/*229 */ { 2, s_3_229, -1, 1, 0}, +/*230 */ { 3, s_3_230, -1, 1, 0}, +/*231 */ { 3, s_3_231, -1, 1, 0}, +/*232 */ { 3, s_3_232, -1, 1, 0}, +/*233 */ { 2, s_3_233, -1, 1, 0}, +/*234 */ { 2, s_3_234, -1, 1, 0}, +/*235 */ { 2, s_3_235, -1, 1, 0}, +/*236 */ { 4, s_3_236, 235, 1, 0}, +/*237 */ { 3, s_3_237, -1, 1, 0}, +/*238 */ { 4, s_3_238, -1, 1, 0}, +/*239 */ { 4, s_3_239, -1, 1, 0}, +/*240 */ { 4, s_3_240, -1, 1, 0}, +/*241 */ { 4, s_3_241, -1, 1, 0}, +/*242 */ { 4, s_3_242, -1, 1, 0}, +/*243 */ { 5, s_3_243, -1, 1, 0}, +/*244 */ { 5, s_3_244, -1, 1, 0}, +/*245 */ { 7, s_3_245, 244, 1, 0}, +/*246 */ { 5, s_3_246, -1, 1, 0}, +/*247 */ { 5, s_3_247, -1, 1, 0}, +/*248 */ { 5, s_3_248, -1, 1, 0}, +/*249 */ { 5, s_3_249, -1, 1, 0}, +/*250 */ { 4, s_3_250, -1, 1, 0}, +/*251 */ { 4, s_3_251, -1, 1, 0}, +/*252 */ { 5, s_3_252, -1, 1, 0}, +/*253 */ { 3, s_3_253, -1, 1, 0}, +/*254 */ { 5, s_3_254, 253, 1, 0}, +/*255 */ { 3, s_3_255, -1, 1, 0}, +/*256 */ { 5, s_3_256, 255, 1, 0}, +/*257 */ { 5, s_3_257, 255, 1, 0}, +/*258 */ { 5, s_3_258, -1, 1, 0}, +/*259 */ { 5, s_3_259, -1, 1, 0}, +/*260 */ { 5, s_3_260, -1, 1, 0}, +/*261 */ { 5, s_3_261, -1, 1, 0}, +/*262 */ { 5, s_3_262, -1, 1, 0}, +/*263 */ { 5, s_3_263, -1, 1, 0}, +/*264 */ { 2, s_3_264, -1, 1, 0}, +/*265 */ { 2, s_3_265, -1, 1, 0}, +/*266 */ { 3, s_3_266, 265, 1, 0}, +/*267 */ { 2, s_3_267, -1, 1, 0}, +/*268 */ { 3, s_3_268, -1, 1, 0}, +/*269 */ { 2, s_3_269, -1, 1, 0}, +/*270 */ { 3, s_3_270, -1, 1, 0}, +/*271 */ { 3, s_3_271, -1, 1, 0}, +/*272 */ { 4, s_3_272, -1, 1, 0}, +/*273 */ { 3, s_3_273, -1, 1, 0}, +/*274 */ { 3, s_3_274, -1, 1, 0}, +/*275 */ { 3, s_3_275, -1, 1, 0}, +/*276 */ { 3, s_3_276, -1, 1, 0}, +/*277 */ { 3, s_3_277, -1, 1, 0}, +/*278 */ { 3, s_3_278, -1, 1, 0}, +/*279 */ { 3, s_3_279, -1, 1, 0}, +/*280 */ { 1, s_3_280, -1, 1, 0}, +/*281 */ { 2, s_3_281, -1, 1, 0}, +/*282 */ { 2, s_3_282, -1, 1, 0} +}; + +static const symbol s_4_0[1] = { 'a' }; +static const symbol s_4_1[1] = { 'e' }; +static const symbol s_4_2[1] = { 'i' }; +static const symbol s_4_3[2] = { 0xEF, 'n' }; +static const symbol s_4_4[1] = { 'o' }; +static const symbol s_4_5[2] = { 'i', 'r' }; +static const symbol s_4_6[1] = { 's' }; +static const symbol s_4_7[2] = { 'i', 's' }; +static const symbol s_4_8[2] = { 'o', 's' }; +static const symbol s_4_9[2] = { 0xEF, 's' }; +static const symbol s_4_10[2] = { 'i', 't' }; +static const symbol s_4_11[2] = { 'e', 'u' }; +static const symbol s_4_12[2] = { 'i', 'u' }; +static const symbol s_4_13[3] = { 'i', 'q', 'u' }; +static const symbol s_4_14[3] = { 'i', 't', 'z' }; +static const symbol s_4_15[1] = { 0xE0 }; +static const symbol s_4_16[1] = { 0xE1 }; +static const symbol s_4_17[1] = { 0xE9 }; +static const symbol s_4_18[1] = { 0xEC }; +static const symbol s_4_19[1] = { 0xED }; +static const symbol s_4_20[1] = { 0xEF }; +static const symbol s_4_21[1] = { 0xF3 }; + +static const struct among a_4[22] = +{ +/* 0 */ { 1, s_4_0, -1, 1, 0}, +/* 1 */ { 1, s_4_1, -1, 1, 0}, +/* 2 */ { 1, s_4_2, -1, 1, 0}, +/* 3 */ { 2, s_4_3, -1, 1, 0}, +/* 4 */ { 1, s_4_4, -1, 1, 0}, +/* 5 */ { 2, s_4_5, -1, 1, 0}, +/* 6 */ { 1, s_4_6, -1, 1, 0}, +/* 7 */ { 2, s_4_7, 6, 1, 0}, +/* 8 */ { 2, s_4_8, 6, 1, 0}, +/* 9 */ { 2, s_4_9, 6, 1, 0}, +/* 10 */ { 2, s_4_10, -1, 1, 0}, +/* 11 */ { 2, s_4_11, -1, 1, 0}, +/* 12 */ { 2, s_4_12, -1, 1, 0}, +/* 13 */ { 3, s_4_13, -1, 2, 0}, +/* 14 */ { 3, s_4_14, -1, 1, 0}, +/* 15 */ { 1, s_4_15, -1, 1, 0}, +/* 16 */ { 1, s_4_16, -1, 1, 0}, +/* 17 */ { 1, s_4_17, -1, 1, 0}, +/* 18 */ { 1, s_4_18, -1, 1, 0}, +/* 19 */ { 1, s_4_19, -1, 1, 0}, +/* 20 */ { 1, s_4_20, -1, 1, 0}, +/* 21 */ { 1, s_4_21, -1, 1, 0} +}; + +static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, 81, 6, 10 }; + +static const symbol s_0[] = { 'a' }; +static const symbol s_1[] = { 'e' }; +static const symbol s_2[] = { 'i' }; +static const symbol s_3[] = { 'o' }; +static const symbol s_4[] = { 'u' }; +static const symbol s_5[] = { '.' }; +static const symbol s_6[] = { 'l', 'o', 'g' }; +static const symbol s_7[] = { 'i', 'c' }; +static const symbol s_8[] = { 'c' }; +static const symbol s_9[] = { 'i', 'c' }; + +static int r_mark_regions(struct SN_env * z) { /* forwardmode */ + z->I[0] = z->l; /* $p1 = , line 38 */ + z->I[1] = z->l; /* $p2 = , line 39 */ + { int c1 = z->c; /* do, line 41 */ + { /* gopast */ /* grouping v, line 42 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 42 */ + int ret = in_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 42 */ + { /* gopast */ /* grouping v, line 43 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 43 */ + int ret = in_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 43 */ + lab0: + z->c = c1; + } + return 1; +} + +static int r_cleaning(struct SN_env * z) { /* forwardmode */ + int among_var; +/* repeat, line 47 */ + + while(1) { int c1 = z->c; + z->bra = z->c; /* [, line 48 */ + among_var = find_among(z, a_0, 13); /* substring, line 48 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 48 */ + switch (among_var) { /* among, line 48 */ + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 49 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 51 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 53 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 55 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 57 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_5); /* <-, line 60 */ + if (ret < 0) return ret; + } + break; + case 7: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 61 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_R1(struct SN_env * z) { /* backwardmode */ + if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 67 */ + return 1; +} + +static int r_R2(struct SN_env * z) { /* backwardmode */ + if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 68 */ + return 1; +} + +static int r_attached_pronoun(struct SN_env * z) { /* backwardmode */ + z->ket = z->c; /* [, line 71 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1634850 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 71 */ + if (!(find_among_b(z, a_1, 39))) return 0; + z->bra = z->c; /* ], line 71 */ + { int ret = r_R1(z); /* call R1, line 81 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 81 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 86 */ + among_var = find_among_b(z, a_2, 200); /* substring, line 86 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 86 */ + switch (among_var) { /* among, line 86 */ + case 1: + { int ret = r_R1(z); /* call R1, line 110 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 110 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 112 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 112 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R2(z); /* call R2, line 114 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 3, s_6); /* <-, line 114 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); /* call R2, line 116 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 2, s_7); /* <-, line 116 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R1(z); /* call R1, line 118 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 1, s_8); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 123 */ + among_var = find_among_b(z, a_3, 283); /* substring, line 123 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 123 */ + switch (among_var) { /* among, line 123 */ + case 1: + { int ret = r_R1(z); /* call R1, line 168 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 168 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 170 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 170 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 175 */ + among_var = find_among_b(z, a_4, 22); /* substring, line 175 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 175 */ + switch (among_var) { /* among, line 175 */ + case 1: + { int ret = r_R1(z); /* call R1, line 178 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 178 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R1(z); /* call R1, line 180 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 2, s_9); /* <-, line 180 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int catalan_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ + /* do, line 186 */ + { int ret = r_mark_regions(z); /* call mark_regions, line 186 */ + if (ret < 0) return ret; + } + z->lb = z->c; z->c = z->l; /* backwards, line 187 */ + + { int m1 = z->l - z->c; (void)m1; /* do, line 188 */ + { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 188 */ + if (ret < 0) return ret; + } + z->c = z->l - m1; + } + { int m2 = z->l - z->c; (void)m2; /* do, line 189 */ + { int m3 = z->l - z->c; (void)m3; /* or, line 189 */ + { int ret = r_standard_suffix(z); /* call standard_suffix, line 189 */ + if (ret == 0) goto lab2; + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m3; + { int ret = r_verb_suffix(z); /* call verb_suffix, line 190 */ + if (ret == 0) goto lab0; + if (ret < 0) return ret; + } + } + lab1: + lab0: + z->c = z->l - m2; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 192 */ + { int ret = r_residual_suffix(z); /* call residual_suffix, line 192 */ + if (ret < 0) return ret; + } + z->c = z->l - m4; + } + z->c = z->lb; + { int c5 = z->c; /* do, line 194 */ + { int ret = r_cleaning(z); /* call cleaning, line 194 */ + if (ret < 0) return ret; + } + z->c = c5; + } + return 1; +} + +extern struct SN_env * catalan_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void catalan_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c index 0ecbbb76a8f2f..dff225884b8aa 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -241,10 +240,8 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ } { int m3 = z->l - z->c; (void)m3; /* do, line 72 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 72 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m3; } break; @@ -279,44 +276,34 @@ static int r_undouble(struct SN_env * z) { /* backwardmode */ extern int danish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 86 */ { int ret = r_mark_regions(z); /* call mark_regions, line 86 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 87 */ { int m2 = z->l - z->c; (void)m2; /* do, line 88 */ { int ret = r_main_suffix(z); /* call main_suffix, line 88 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 89 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 89 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 90 */ { int ret = r_other_suffix(z); /* call other_suffix, line 90 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } { int m5 = z->l - z->c; (void)m5; /* do, line 91 */ { int ret = r_undouble(z); /* call undouble, line 91 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m5; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c index b3d2c4e5d1399..aa33b42df3960 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -148,8 +147,9 @@ static const symbol s_14[] = { 'i', 'g' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ int among_var; { int c_test1 = z->c; /* test, line 42 */ - while(1) { /* repeat, line 42 */ - int c2 = z->c; +/* repeat, line 42 */ + + while(1) { int c2 = z->c; z->bra = z->c; /* [, line 43 */ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 7 || !((340306450 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 6; else /* substring, line 43 */ among_var = find_among(z, a_0, 11); @@ -204,8 +204,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ lab1: ; } - while(1) { /* repeat, line 58 */ - int c4 = z->c; +/* repeat, line 58 */ + + while(1) { int c4 = z->c; while(1) { /* goto, line 58 */ int c5 = z->c; if (in_grouping(z, g_v, 97, 232, 0)) goto lab3; /* grouping v, line 59 */ @@ -278,8 +279,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 75 */ - int c1 = z->c; +/* repeat, line 75 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 77 */ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 89)) among_var = 3; else /* substring, line 77 */ among_var = find_among(z, a_1, 3); @@ -421,50 +423,48 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ } { int m2 = z->l - z->c; (void)m2; /* do, line 120 */ { int ret = r_e_ending(z); /* call e_ending, line 120 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 122 */ z->ket = z->c; /* [, line 122 */ - if (!(eq_s_b(z, 4, s_12))) goto lab2; /* literal, line 122 */ + if (!(eq_s_b(z, 4, s_12))) goto lab1; /* literal, line 122 */ z->bra = z->c; /* ], line 122 */ { int ret = r_R2(z); /* call R2, line 122 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab1; if (ret < 0) return ret; } { int m4 = z->l - z->c; (void)m4; /* not, line 122 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab3; /* literal, line 122 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab2; /* literal, line 122 */ z->c--; - goto lab2; - lab3: + goto lab1; + lab2: z->c = z->l - m4; } { int ret = slice_del(z); /* delete, line 122 */ if (ret < 0) return ret; } z->ket = z->c; /* [, line 123 */ - if (!(eq_s_b(z, 2, s_13))) goto lab2; /* literal, line 123 */ + if (!(eq_s_b(z, 2, s_13))) goto lab1; /* literal, line 123 */ z->bra = z->c; /* ], line 123 */ { int ret = r_en_ending(z); /* call en_ending, line 123 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab2: + lab1: z->c = z->l - m3; } { int m5 = z->l - z->c; (void)m5; /* do, line 126 */ z->ket = z->c; /* [, line 127 */ - if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab4; /* substring, line 127 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3; /* substring, line 127 */ among_var = find_among_b(z, a_4, 6); - if (!(among_var)) goto lab4; + if (!(among_var)) goto lab3; z->bra = z->c; /* ], line 127 */ switch (among_var) { /* among, line 127 */ case 1: { int ret = r_R2(z); /* call R2, line 129 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 129 */ @@ -472,42 +472,42 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ } { int m6 = z->l - z->c; (void)m6; /* or, line 130 */ z->ket = z->c; /* [, line 130 */ - if (!(eq_s_b(z, 2, s_14))) goto lab6; /* literal, line 130 */ + if (!(eq_s_b(z, 2, s_14))) goto lab5; /* literal, line 130 */ z->bra = z->c; /* ], line 130 */ { int ret = r_R2(z); /* call R2, line 130 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab5; if (ret < 0) return ret; } { int m7 = z->l - z->c; (void)m7; /* not, line 130 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7; /* literal, line 130 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6; /* literal, line 130 */ z->c--; - goto lab6; - lab7: + goto lab5; + lab6: z->c = z->l - m7; } { int ret = slice_del(z); /* delete, line 130 */ if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab4; + lab5: z->c = z->l - m6; { int ret = r_undouble(z); /* call undouble, line 130 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } } - lab5: + lab4: break; case 2: { int ret = r_R2(z); /* call R2, line 133 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int m8 = z->l - z->c; (void)m8; /* not, line 133 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab8; /* literal, line 133 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7; /* literal, line 133 */ z->c--; - goto lab4; - lab8: + goto lab3; + lab7: z->c = z->l - m8; } { int ret = slice_del(z); /* delete, line 133 */ @@ -516,20 +516,20 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ break; case 3: { int ret = r_R2(z); /* call R2, line 136 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 136 */ if (ret < 0) return ret; } { int ret = r_e_ending(z); /* call e_ending, line 136 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } break; case 4: { int ret = r_R2(z); /* call R2, line 139 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 139 */ @@ -538,34 +538,34 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ break; case 5: { int ret = r_R2(z); /* call R2, line 142 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } - if (!(z->B[0])) goto lab4; /* Boolean test e_found, line 142 */ + if (!(z->B[0])) goto lab3; /* Boolean test e_found, line 142 */ { int ret = slice_del(z); /* delete, line 142 */ if (ret < 0) return ret; } break; } - lab4: + lab3: z->c = z->l - m5; } { int m9 = z->l - z->c; (void)m9; /* do, line 146 */ - if (out_grouping_b(z, g_v_I, 73, 232, 0)) goto lab9; /* non v_I, line 147 */ + if (out_grouping_b(z, g_v_I, 73, 232, 0)) goto lab8; /* non v_I, line 147 */ { int m_test10 = z->l - z->c; /* test, line 148 */ - if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab9; /* among, line 149 */ - if (!(find_among_b(z, a_5, 4))) goto lab9; - if (out_grouping_b(z, g_v, 97, 232, 0)) goto lab9; /* non v, line 150 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab8; /* among, line 149 */ + if (!(find_among_b(z, a_5, 4))) goto lab8; + if (out_grouping_b(z, g_v, 97, 232, 0)) goto lab8; /* non v, line 150 */ z->c = z->l - m_test10; } z->ket = z->c; /* [, line 152 */ - if (z->c <= z->lb) goto lab9; + if (z->c <= z->lb) goto lab8; z->c--; /* next, line 152 */ z->bra = z->c; /* ], line 152 */ { int ret = slice_del(z); /* delete, line 152 */ if (ret < 0) return ret; } - lab9: + lab8: z->c = z->l - m9; } return 1; @@ -574,35 +574,27 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ extern int dutch_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 159 */ { int ret = r_prelude(z); /* call prelude, line 159 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } { int c2 = z->c; /* do, line 160 */ { int ret = r_mark_regions(z); /* call mark_regions, line 160 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = c2; } z->lb = z->c; z->c = z->l; /* backwards, line 161 */ /* do, line 162 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 162 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } -lab2: z->c = z->lb; { int c3 = z->c; /* do, line 163 */ { int ret = r_postlude(z); /* call postlude, line 163 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = c3; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c index 87ff8041aa36c..d1f80c6c3b3c8 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -383,8 +382,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ z->c = c2; } { int c3 = z->c; /* do, line 29 */ - while(1) { /* repeat, line 29 */ - int c4 = z->c; +/* repeat, line 29 */ + + while(1) { int c4 = z->c; while(1) { /* goto, line 29 */ int c5 = z->c; if (in_grouping(z, g_v, 97, 121, 0)) goto lab4; /* grouping v, line 29 */ @@ -940,8 +940,9 @@ static int r_exception1(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ if (!(z->B[0])) return 0; /* Boolean test Y_found, line 203 */ - while(1) { /* repeat, line 203 */ - int c1 = z->c; +/* repeat, line 203 */ + + while(1) { int c1 = z->c; while(1) { /* goto, line 203 */ int c2 = z->c; z->bra = z->c; /* [, line 203 */ @@ -989,91 +990,71 @@ extern int english_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ z->c = c1; /* do, line 209 */ { int ret = r_prelude(z); /* call prelude, line 209 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: /* do, line 210 */ { int ret = r_mark_regions(z); /* call mark_regions, line 210 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->lb = z->c; z->c = z->l; /* backwards, line 211 */ { int m3 = z->l - z->c; (void)m3; /* do, line 213 */ { int ret = r_Step_1a(z); /* call Step_1a, line 213 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* or, line 215 */ { int ret = r_exception2(z); /* call exception2, line 215 */ - if (ret == 0) goto lab8; + if (ret == 0) goto lab5; if (ret < 0) return ret; } - goto lab7; - lab8: + goto lab4; + lab5: z->c = z->l - m4; { int m5 = z->l - z->c; (void)m5; /* do, line 217 */ { int ret = r_Step_1b(z); /* call Step_1b, line 217 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m5; } { int m6 = z->l - z->c; (void)m6; /* do, line 218 */ { int ret = r_Step_1c(z); /* call Step_1c, line 218 */ - if (ret == 0) goto lab10; if (ret < 0) return ret; } - lab10: z->c = z->l - m6; } { int m7 = z->l - z->c; (void)m7; /* do, line 220 */ { int ret = r_Step_2(z); /* call Step_2, line 220 */ - if (ret == 0) goto lab11; if (ret < 0) return ret; } - lab11: z->c = z->l - m7; } { int m8 = z->l - z->c; (void)m8; /* do, line 221 */ { int ret = r_Step_3(z); /* call Step_3, line 221 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 222 */ { int ret = r_Step_4(z); /* call Step_4, line 222 */ - if (ret == 0) goto lab13; if (ret < 0) return ret; } - lab13: z->c = z->l - m9; } { int m10 = z->l - z->c; (void)m10; /* do, line 224 */ { int ret = r_Step_5(z); /* call Step_5, line 224 */ - if (ret == 0) goto lab14; if (ret < 0) return ret; } - lab14: z->c = z->l - m10; } } - lab7: + lab4: z->c = z->lb; { int c11 = z->c; /* do, line 227 */ { int ret = r_postlude(z); /* call postlude, line 227 */ - if (ret == 0) goto lab15; if (ret < 0) return ret; } - lab15: z->c = c11; } } diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c index 58285e8c343fd..3bb6615a68c44 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -655,10 +654,8 @@ static int r_tidy(struct SN_env * z) { /* backwardmode */ extern int finnish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 186 */ { int ret = r_mark_regions(z); /* call mark_regions, line 186 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->B[0] = 0; /* unset ending_removed, line 187 */ @@ -666,63 +663,49 @@ extern int finnish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int m2 = z->l - z->c; (void)m2; /* do, line 189 */ { int ret = r_particle_etc(z); /* call particle_etc, line 189 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 190 */ { int ret = r_possessive(z); /* call possessive, line 190 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 191 */ { int ret = r_case_ending(z); /* call case_ending, line 191 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } { int m5 = z->l - z->c; (void)m5; /* do, line 192 */ { int ret = r_other_endings(z); /* call other_endings, line 192 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m5; } /* or, line 193 */ - if (!(z->B[0])) goto lab6; /* Boolean test ending_removed, line 193 */ + if (!(z->B[0])) goto lab1; /* Boolean test ending_removed, line 193 */ { int m6 = z->l - z->c; (void)m6; /* do, line 193 */ { int ret = r_i_plural(z); /* call i_plural, line 193 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m6; } - goto lab5; -lab6: + goto lab0; +lab1: { int m7 = z->l - z->c; (void)m7; /* do, line 193 */ { int ret = r_t_plural(z); /* call t_plural, line 193 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m7; } -lab5: +lab0: { int m8 = z->l - z->c; (void)m8; /* do, line 194 */ { int ret = r_tidy(z); /* call tidy, line 194 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m8; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c index 4e9f76cd9a413..bbf6985ba5841 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -411,8 +410,9 @@ static const symbol s_33[] = { 'i' }; static const symbol s_34[] = { 'c' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ - while(1) { /* repeat, line 38 */ - int c1 = z->c; +/* repeat, line 38 */ + + while(1) { int c1 = z->c; while(1) { /* goto, line 38 */ int c2 = z->c; { int c3 = z->c; /* or, line 44 */ @@ -569,8 +569,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 79 */ - int c1 = z->c; +/* repeat, line 79 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 81 */ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652352 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 7; else /* substring, line 81 */ among_var = find_among(z, a_1, 7); @@ -1124,8 +1125,7 @@ static int r_un_double(struct SN_env * z) { /* backwardmode */ static int r_un_accent(struct SN_env * z) { /* backwardmode */ { int i = 1; - while(1) { /* atleast, line 222 */ - if (out_grouping_b(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 222 */ + while(1) { if (out_grouping_b(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 222 */ i--; continue; lab0: @@ -1154,18 +1154,14 @@ static int r_un_accent(struct SN_env * z) { /* backwardmode */ extern int french_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 229 */ { int ret = r_prelude(z); /* call prelude, line 229 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 230 */ { int ret = r_mark_regions(z); /* call mark_regions, line 230 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 231 */ { int m2 = z->l - z->c; (void)m2; /* do, line 233 */ @@ -1173,85 +1169,79 @@ extern int french_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int m4 = z->l - z->c; (void)m4; /* and, line 239 */ { int m5 = z->l - z->c; (void)m5; /* or, line 235 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 235 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab3; + lab4: z->c = z->l - m5; { int ret = r_i_verb_suffix(z); /* call i_verb_suffix, line 236 */ - if (ret == 0) goto lab7; + if (ret == 0) goto lab5; if (ret < 0) return ret; } - goto lab5; - lab7: + goto lab3; + lab5: z->c = z->l - m5; { int ret = r_verb_suffix(z); /* call verb_suffix, line 237 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab2; if (ret < 0) return ret; } } - lab5: + lab3: z->c = z->l - m4; { int m6 = z->l - z->c; (void)m6; /* try, line 240 */ z->ket = z->c; /* [, line 240 */ { int m7 = z->l - z->c; (void)m7; /* or, line 240 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab10; /* literal, line 240 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab8; /* literal, line 240 */ z->c--; z->bra = z->c; /* ], line 240 */ { int ret = slice_from_s(z, 1, s_33); /* <-, line 240 */ if (ret < 0) return ret; } - goto lab9; - lab10: + goto lab7; + lab8: z->c = z->l - m7; - if (z->c <= z->lb || z->p[z->c - 1] != 0xE7) { z->c = z->l - m6; goto lab8; } /* literal, line 241 */ + if (z->c <= z->lb || z->p[z->c - 1] != 0xE7) { z->c = z->l - m6; goto lab6; } /* literal, line 241 */ z->c--; z->bra = z->c; /* ], line 241 */ { int ret = slice_from_s(z, 1, s_34); /* <-, line 241 */ if (ret < 0) return ret; } } - lab9: - lab8: + lab7: + lab6: ; } } - goto lab3; - lab4: + goto lab1; + lab2: z->c = z->l - m3; { int ret = r_residual_suffix(z); /* call residual_suffix, line 244 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab3: - lab2: + lab1: + lab0: z->c = z->l - m2; } { int m8 = z->l - z->c; (void)m8; /* do, line 249 */ { int ret = r_un_double(z); /* call un_double, line 249 */ - if (ret == 0) goto lab11; if (ret < 0) return ret; } - lab11: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 250 */ { int ret = r_un_accent(z); /* call un_accent, line 250 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m9; } z->c = z->lb; { int c10 = z->c; /* do, line 252 */ { int ret = r_postlude(z); /* call postlude, line 252 */ - if (ret == 0) goto lab13; if (ret < 0) return ret; } - lab13: z->c = c10; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c index ae334f80bf915..48d6fbc294a1c 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -126,8 +125,9 @@ static const symbol s_10[] = { 'e', 'n' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ { int c_test1 = z->c; /* test, line 35 */ - while(1) { /* repeat, line 35 */ - int c2 = z->c; +/* repeat, line 35 */ + + while(1) { int c2 = z->c; { int c3 = z->c; /* or, line 38 */ z->bra = z->c; /* [, line 37 */ if (z->c == z->l || z->p[z->c] != 0xDF) goto lab2; /* literal, line 37 */ @@ -150,8 +150,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ } z->c = c_test1; } - while(1) { /* repeat, line 41 */ - int c4 = z->c; +/* repeat, line 41 */ + + while(1) { int c4 = z->c; while(1) { /* goto, line 41 */ int c5 = z->c; if (in_grouping(z, g_v, 97, 252, 0)) goto lab4; /* grouping v, line 42 */ @@ -233,8 +234,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 60 */ - int c1 = z->c; +/* repeat, line 60 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 62 */ among_var = find_among(z, a_0, 6); /* substring, line 62 */ if (!(among_var)) goto lab0; @@ -463,35 +465,27 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ extern int german_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 134 */ { int ret = r_prelude(z); /* call prelude, line 134 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } { int c2 = z->c; /* do, line 135 */ { int ret = r_mark_regions(z); /* call mark_regions, line 135 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = c2; } z->lb = z->c; z->c = z->l; /* backwards, line 136 */ /* do, line 137 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 137 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } -lab2: z->c = z->lb; { int c3 = z->c; /* do, line 138 */ { int ret = r_postlude(z); /* call postlude, line 138 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = c3; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c index 42711709032a3..6e0c911d690f9 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -314,8 +313,9 @@ static int r_remove_second_order_prefix(struct SN_env * z) { /* forwardmode */ extern int indonesian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ z->I[0] = 0; /* $measure = , line 172 */ { int c1 = z->c; /* do, line 173 */ - while(1) { /* repeat, line 173 */ - int c2 = z->c; +/* repeat, line 173 */ + + while(1) { int c2 = z->c; { /* gopast */ /* grouping vowel, line 173 */ int ret = out_grouping(z, g_vowel, 97, 117, 1); if (ret < 0) goto lab1; @@ -335,19 +335,15 @@ extern int indonesian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int m3 = z->l - z->c; (void)m3; /* do, line 177 */ { int ret = r_remove_particle(z); /* call remove_particle, line 177 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } if (!(z->I[0] > 2)) return 0; /* $( > ), line 178 */ { int m4 = z->l - z->c; (void)m4; /* do, line 179 */ { int ret = r_remove_possessive_pronoun(z); /* call remove_possessive_pronoun, line 179 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } z->c = z->lb; @@ -355,56 +351,54 @@ extern int indonesian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c5 = z->c; /* or, line 188 */ { int c_test6 = z->c; /* test, line 182 */ { int ret = r_remove_first_order_prefix(z); /* call remove_first_order_prefix, line 183 */ - if (ret == 0) goto lab5; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int c7 = z->c; /* do, line 184 */ { int c_test8 = z->c; /* test, line 185 */ - if (!(z->I[0] > 2)) goto lab6; /* $( > ), line 185 */ + if (!(z->I[0] > 2)) goto lab4; /* $( > ), line 185 */ z->lb = z->c; z->c = z->l; /* backwards, line 185 */ { int ret = r_remove_suffix(z); /* call remove_suffix, line 185 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } z->c = z->lb; z->c = c_test8; } - if (!(z->I[0] > 2)) goto lab6; /* $( > ), line 186 */ + if (!(z->I[0] > 2)) goto lab4; /* $( > ), line 186 */ { int ret = r_remove_second_order_prefix(z); /* call remove_second_order_prefix, line 186 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab6: + lab4: z->c = c7; } z->c = c_test6; } - goto lab4; - lab5: + goto lab2; + lab3: z->c = c5; { int c9 = z->c; /* do, line 189 */ { int ret = r_remove_second_order_prefix(z); /* call remove_second_order_prefix, line 189 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = c9; } { int c10 = z->c; /* do, line 190 */ - if (!(z->I[0] > 2)) goto lab8; /* $( > ), line 190 */ + if (!(z->I[0] > 2)) goto lab5; /* $( > ), line 190 */ z->lb = z->c; z->c = z->l; /* backwards, line 190 */ { int ret = r_remove_suffix(z); /* call remove_suffix, line 190 */ - if (ret == 0) goto lab8; + if (ret == 0) goto lab5; if (ret < 0) return ret; } z->c = z->lb; - lab8: + lab5: z->c = c10; } } -lab4: +lab2: return 1; } diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c index 8ef9a90d50119..87df430aea649 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -442,42 +441,32 @@ static int r_verb_sfx(struct SN_env * z) { /* backwardmode */ extern int irish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 144 */ { int ret = r_initial_morph(z); /* call initial_morph, line 144 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 145 */ { int ret = r_mark_regions(z); /* call mark_regions, line 145 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 146 */ { int m2 = z->l - z->c; (void)m2; /* do, line 147 */ { int ret = r_noun_sfx(z); /* call noun_sfx, line 147 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 148 */ { int ret = r_deriv(z); /* call deriv, line 148 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 149 */ { int ret = r_verb_sfx(z); /* call verb_sfx, line 149 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m4; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c index fca2e3af1c327..a06e8902d93df 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -492,8 +491,9 @@ static const symbol s_17[] = { 'i', 'c' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ int among_var; { int c_test1 = z->c; /* test, line 35 */ - while(1) { /* repeat, line 35 */ - int c2 = z->c; +/* repeat, line 35 */ + + while(1) { int c2 = z->c; z->bra = z->c; /* [, line 36 */ among_var = find_among(z, a_0, 7); /* substring, line 36 */ if (!(among_var)) goto lab0; @@ -541,8 +541,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ } z->c = c_test1; } - while(1) { /* repeat, line 46 */ - int c3 = z->c; +/* repeat, line 46 */ + + while(1) { int c3 = z->c; while(1) { /* goto, line 46 */ int c4 = z->c; if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; /* grouping v, line 47 */ @@ -664,8 +665,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 70 */ - int c1 = z->c; +/* repeat, line 70 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 72 */ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else /* substring, line 72 */ among_var = find_among(z, a_1, 3); @@ -967,61 +969,51 @@ static int r_vowel_suffix(struct SN_env * z) { /* backwardmode */ extern int italian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 182 */ { int ret = r_prelude(z); /* call prelude, line 182 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 183 */ { int ret = r_mark_regions(z); /* call mark_regions, line 183 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 184 */ { int m2 = z->l - z->c; (void)m2; /* do, line 185 */ { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 185 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 186 */ { int m4 = z->l - z->c; (void)m4; /* or, line 186 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 186 */ - if (ret == 0) goto lab5; + if (ret == 0) goto lab2; if (ret < 0) return ret; } - goto lab4; - lab5: + goto lab1; + lab2: z->c = z->l - m4; { int ret = r_verb_suffix(z); /* call verb_suffix, line 186 */ - if (ret == 0) goto lab3; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab4: - lab3: + lab1: + lab0: z->c = z->l - m3; } { int m5 = z->l - z->c; (void)m5; /* do, line 187 */ { int ret = r_vowel_suffix(z); /* call vowel_suffix, line 187 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m5; } z->c = z->lb; { int c6 = z->c; /* do, line 189 */ { int ret = r_postlude(z); /* call postlude, line 189 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = c6; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c index 88eb9290e9783..a70f6f5aa200a 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -241,36 +240,28 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ extern int norwegian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 74 */ { int ret = r_mark_regions(z); /* call mark_regions, line 74 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 75 */ { int m2 = z->l - z->c; (void)m2; /* do, line 76 */ { int ret = r_main_suffix(z); /* call main_suffix, line 76 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 77 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 77 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 78 */ { int ret = r_other_suffix(z); /* call other_suffix, line 78 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c index cc330e0cd7390..4666afb725f20 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -575,8 +574,9 @@ extern int porter_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ z->c = c1; } { int c2 = z->c; /* do, line 117 */ - while(1) { /* repeat, line 117 */ - int c3 = z->c; +/* repeat, line 117 */ + + while(1) { int c3 = z->c; while(1) { /* goto, line 117 */ int c4 = z->c; if (in_grouping(z, g_v, 97, 121, 0)) goto lab3; /* grouping v, line 117 */ @@ -634,95 +634,80 @@ extern int porter_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int m6 = z->l - z->c; (void)m6; /* do, line 127 */ { int ret = r_Step_1a(z); /* call Step_1a, line 127 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->c = z->l - m6; } { int m7 = z->l - z->c; (void)m7; /* do, line 128 */ { int ret = r_Step_1b(z); /* call Step_1b, line 128 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m7; } { int m8 = z->l - z->c; (void)m8; /* do, line 129 */ { int ret = r_Step_1c(z); /* call Step_1c, line 129 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 130 */ { int ret = r_Step_2(z); /* call Step_2, line 130 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m9; } { int m10 = z->l - z->c; (void)m10; /* do, line 131 */ { int ret = r_Step_3(z); /* call Step_3, line 131 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m10; } { int m11 = z->l - z->c; (void)m11; /* do, line 132 */ { int ret = r_Step_4(z); /* call Step_4, line 132 */ - if (ret == 0) goto lab10; if (ret < 0) return ret; } - lab10: z->c = z->l - m11; } { int m12 = z->l - z->c; (void)m12; /* do, line 133 */ { int ret = r_Step_5a(z); /* call Step_5a, line 133 */ - if (ret == 0) goto lab11; if (ret < 0) return ret; } - lab11: z->c = z->l - m12; } { int m13 = z->l - z->c; (void)m13; /* do, line 134 */ { int ret = r_Step_5b(z); /* call Step_5b, line 134 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m13; } z->c = z->lb; { int c14 = z->c; /* do, line 137 */ - if (!(z->B[0])) goto lab13; /* Boolean test Y_found, line 137 */ - while(1) { /* repeat, line 137 */ - int c15 = z->c; + if (!(z->B[0])) goto lab5; /* Boolean test Y_found, line 137 */ +/* repeat, line 137 */ + + while(1) { int c15 = z->c; while(1) { /* goto, line 137 */ int c16 = z->c; z->bra = z->c; /* [, line 137 */ - if (z->c == z->l || z->p[z->c] != 'Y') goto lab15; /* literal, line 137 */ + if (z->c == z->l || z->p[z->c] != 'Y') goto lab7; /* literal, line 137 */ z->c++; z->ket = z->c; /* ], line 137 */ z->c = c16; break; - lab15: + lab7: z->c = c16; - if (z->c >= z->l) goto lab14; + if (z->c >= z->l) goto lab6; z->c++; /* goto, line 137 */ } { int ret = slice_from_s(z, 1, s_23); /* <-, line 137 */ if (ret < 0) return ret; } continue; - lab14: + lab6: z->c = c15; break; } - lab13: + lab5: z->c = c14; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c index 674d9c2657ae7..1e440a66e143c 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -475,8 +474,9 @@ static const symbol s_10[] = { 'c' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 36 */ - int c1 = z->c; +/* repeat, line 36 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 37 */ if (z->c >= z->l || (z->p[z->c + 0] != 227 && z->p[z->c + 0] != 245)) among_var = 3; else /* substring, line 37 */ among_var = find_among(z, a_0, 3); @@ -588,8 +588,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 62 */ - int c1 = z->c; +/* repeat, line 62 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 63 */ if (z->c + 1 >= z->l || z->p[z->c + 1] != 126) among_var = 3; else /* substring, line 63 */ among_var = find_among(z, a_1, 3); @@ -879,18 +880,14 @@ static int r_residual_form(struct SN_env * z) { /* backwardmode */ extern int portuguese_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 202 */ { int ret = r_prelude(z); /* call prelude, line 202 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 203 */ { int ret = r_mark_regions(z); /* call mark_regions, line 203 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 204 */ { int m2 = z->l - z->c; (void)m2; /* do, line 205 */ @@ -898,67 +895,63 @@ extern int portuguese_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int m4 = z->l - z->c; (void)m4; /* and, line 207 */ { int m5 = z->l - z->c; (void)m5; /* or, line 206 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 206 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab3; + lab4: z->c = z->l - m5; { int ret = r_verb_suffix(z); /* call verb_suffix, line 206 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab2; if (ret < 0) return ret; } } - lab5: + lab3: z->c = z->l - m4; { int m6 = z->l - z->c; (void)m6; /* do, line 207 */ z->ket = z->c; /* [, line 207 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab7; /* literal, line 207 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab5; /* literal, line 207 */ z->c--; z->bra = z->c; /* ], line 207 */ { int m_test7 = z->l - z->c; /* test, line 207 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab7; /* literal, line 207 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab5; /* literal, line 207 */ z->c--; z->c = z->l - m_test7; } { int ret = r_RV(z); /* call RV, line 207 */ - if (ret == 0) goto lab7; + if (ret == 0) goto lab5; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 207 */ if (ret < 0) return ret; } - lab7: + lab5: z->c = z->l - m6; } } - goto lab3; - lab4: + goto lab1; + lab2: z->c = z->l - m3; { int ret = r_residual_suffix(z); /* call residual_suffix, line 209 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab3: - lab2: + lab1: + lab0: z->c = z->l - m2; } { int m8 = z->l - z->c; (void)m8; /* do, line 211 */ { int ret = r_residual_form(z); /* call residual_form, line 211 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m8; } z->c = z->lb; { int c9 = z->c; /* do, line 213 */ { int ret = r_postlude(z); /* call postlude, line 213 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = c9; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c index c2f101df3ac03..e77aadda6a397 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -586,8 +585,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 49 */ - int c1 = z->c; +/* repeat, line 49 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 50 */ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 7 || !((67641858 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 6; else /* substring, line 50 */ among_var = find_among(z, a_0, 6); @@ -985,60 +985,52 @@ static int r_residual_suffix(struct SN_env * z) { /* backwardmode */ extern int spanish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ /* do, line 216 */ { int ret = r_mark_regions(z); /* call mark_regions, line 216 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } -lab0: z->lb = z->c; z->c = z->l; /* backwards, line 217 */ { int m1 = z->l - z->c; (void)m1; /* do, line 218 */ { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 218 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m1; } { int m2 = z->l - z->c; (void)m2; /* do, line 219 */ { int m3 = z->l - z->c; (void)m3; /* or, line 219 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 219 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab2; if (ret < 0) return ret; } - goto lab3; - lab4: + goto lab1; + lab2: z->c = z->l - m3; { int ret = r_y_verb_suffix(z); /* call y_verb_suffix, line 220 */ - if (ret == 0) goto lab5; + if (ret == 0) goto lab3; if (ret < 0) return ret; } - goto lab3; - lab5: + goto lab1; + lab3: z->c = z->l - m3; { int ret = r_verb_suffix(z); /* call verb_suffix, line 221 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab3: - lab2: + lab1: + lab0: z->c = z->l - m2; } { int m4 = z->l - z->c; (void)m4; /* do, line 223 */ { int ret = r_residual_suffix(z); /* call residual_suffix, line 223 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m4; } z->c = z->lb; { int c5 = z->c; /* do, line 225 */ { int ret = r_postlude(z); /* call postlude, line 225 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = c5; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c index 13be21762c396..e53777eb735a8 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -257,36 +256,28 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ extern int swedish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 66 */ { int ret = r_mark_regions(z); /* call mark_regions, line 66 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 67 */ { int m2 = z->l - z->c; (void)m2; /* do, line 68 */ { int ret = r_main_suffix(z); /* call main_suffix, line 68 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 69 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 69 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 70 */ { int ret = r_other_suffix(z); /* call other_suffix, line 70 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c index ae088a32f7533..44ef3d9253d8d 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -795,84 +794,64 @@ static int r_plur_owner(struct SN_env * z) { /* backwardmode */ extern int hungarian_ISO_8859_2_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 229 */ { int ret = r_mark_regions(z); /* call mark_regions, line 229 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 230 */ { int m2 = z->l - z->c; (void)m2; /* do, line 231 */ { int ret = r_instrum(z); /* call instrum, line 231 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 232 */ { int ret = r_case(z); /* call case, line 232 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 233 */ { int ret = r_case_special(z); /* call case_special, line 233 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } { int m5 = z->l - z->c; (void)m5; /* do, line 234 */ { int ret = r_case_other(z); /* call case_other, line 234 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m5; } { int m6 = z->l - z->c; (void)m6; /* do, line 235 */ { int ret = r_factive(z); /* call factive, line 235 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->c = z->l - m6; } { int m7 = z->l - z->c; (void)m7; /* do, line 236 */ { int ret = r_owned(z); /* call owned, line 236 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m7; } { int m8 = z->l - z->c; (void)m8; /* do, line 237 */ { int ret = r_sing_owner(z); /* call sing_owner, line 237 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 238 */ { int ret = r_plur_owner(z); /* call plur_owner, line 238 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m9; } { int m10 = z->l - z->c; (void)m10; /* do, line 239 */ { int ret = r_plural(z); /* call plural, line 239 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m10; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_2_romanian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_2_romanian.c index a085e09efe58e..14c6fb3c1463e 100644 --- a/src/backend/snowball/libstemmer/stem_ISO_8859_2_romanian.c +++ b/src/backend/snowball/libstemmer/stem_ISO_8859_2_romanian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -537,8 +536,9 @@ static const symbol s_17[] = { 't' }; static const symbol s_18[] = { 'i', 's', 't' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ - while(1) { /* repeat, line 32 */ - int c1 = z->c; +/* repeat, line 32 */ + + while(1) { int c1 = z->c; while(1) { /* goto, line 32 */ int c2 = z->c; if (in_grouping(z, g_v, 97, 238, 0)) goto lab1; /* grouping v, line 33 */ @@ -660,8 +660,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 56 */ - int c1 = z->c; +/* repeat, line 56 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 58 */ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else /* substring, line 58 */ among_var = find_among(z, a_0, 3); @@ -813,8 +814,9 @@ static int r_combo_suffix(struct SN_env * z) { /* backwardmode */ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ int among_var; z->B[0] = 0; /* unset standard_suffix_removed, line 130 */ - while(1) { /* repeat, line 131 */ - int m1 = z->l - z->c; (void)m1; +/* repeat, line 131 */ + + while(1) { int m1 = z->l - z->c; (void)m1; { int ret = r_combo_suffix(z); /* call combo_suffix, line 131 */ if (ret == 0) goto lab0; if (ret < 0) return ret; @@ -907,66 +909,54 @@ static int r_vowel_suffix(struct SN_env * z) { /* backwardmode */ extern int romanian_ISO_8859_2_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 226 */ { int ret = r_prelude(z); /* call prelude, line 226 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 227 */ { int ret = r_mark_regions(z); /* call mark_regions, line 227 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 228 */ { int m2 = z->l - z->c; (void)m2; /* do, line 229 */ { int ret = r_step_0(z); /* call step_0, line 229 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 230 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 230 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 231 */ { int m5 = z->l - z->c; (void)m5; /* or, line 231 */ - if (!(z->B[0])) goto lab6; /* Boolean test standard_suffix_removed, line 231 */ - goto lab5; - lab6: + if (!(z->B[0])) goto lab2; /* Boolean test standard_suffix_removed, line 231 */ + goto lab1; + lab2: z->c = z->l - m5; { int ret = r_verb_suffix(z); /* call verb_suffix, line 231 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab5: - lab4: + lab1: + lab0: z->c = z->l - m4; } { int m6 = z->l - z->c; (void)m6; /* do, line 232 */ { int ret = r_vowel_suffix(z); /* call vowel_suffix, line 232 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m6; } z->c = z->lb; { int c7 = z->c; /* do, line 234 */ { int ret = r_postlude(z); /* call postlude, line 234 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = c7; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c b/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c index fea26a66cf7e6..eef4b208e8f49 100644 --- a/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c +++ b/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -569,8 +568,9 @@ static int r_tidy_up(struct SN_env * z) { /* backwardmode */ extern int russian_KOI8_R_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 205 */ - while(1) { /* repeat, line 205 */ - int c2 = z->c; +/* repeat, line 205 */ + + while(1) { int c2 = z->c; while(1) { /* goto, line 205 */ int c3 = z->c; z->bra = z->c; /* [, line 205 */ @@ -596,10 +596,8 @@ extern int russian_KOI8_R_stem(struct SN_env * z) { /* forwardmode */ } /* do, line 207 */ { int ret = r_mark_regions(z); /* call mark_regions, line 207 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } -lab3: z->lb = z->c; z->c = z->l; /* backwards, line 208 */ @@ -609,72 +607,68 @@ extern int russian_KOI8_R_stem(struct SN_env * z) { /* forwardmode */ { int m5 = z->l - z->c; (void)m5; /* do, line 209 */ { int m6 = z->l - z->c; (void)m6; /* or, line 210 */ { int ret = r_perfective_gerund(z); /* call perfective_gerund, line 210 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab5; if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab4; + lab5: z->c = z->l - m6; { int m7 = z->l - z->c; (void)m7; /* try, line 211 */ { int ret = r_reflexive(z); /* call reflexive, line 211 */ - if (ret == 0) { z->c = z->l - m7; goto lab7; } + if (ret == 0) { z->c = z->l - m7; goto lab6; } if (ret < 0) return ret; } - lab7: + lab6: ; } { int m8 = z->l - z->c; (void)m8; /* or, line 212 */ { int ret = r_adjectival(z); /* call adjectival, line 212 */ - if (ret == 0) goto lab9; + if (ret == 0) goto lab8; if (ret < 0) return ret; } - goto lab8; - lab9: + goto lab7; + lab8: z->c = z->l - m8; { int ret = r_verb(z); /* call verb, line 212 */ - if (ret == 0) goto lab10; + if (ret == 0) goto lab9; if (ret < 0) return ret; } - goto lab8; - lab10: + goto lab7; + lab9: z->c = z->l - m8; { int ret = r_noun(z); /* call noun, line 212 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } } - lab8: + lab7: ; } - lab5: lab4: + lab3: z->c = z->l - m5; } { int m9 = z->l - z->c; (void)m9; /* try, line 215 */ z->ket = z->c; /* [, line 215 */ - if (z->c <= z->lb || z->p[z->c - 1] != 0xC9) { z->c = z->l - m9; goto lab11; } /* literal, line 215 */ + if (z->c <= z->lb || z->p[z->c - 1] != 0xC9) { z->c = z->l - m9; goto lab10; } /* literal, line 215 */ z->c--; z->bra = z->c; /* ], line 215 */ { int ret = slice_del(z); /* delete, line 215 */ if (ret < 0) return ret; } - lab11: + lab10: ; } { int m10 = z->l - z->c; (void)m10; /* do, line 218 */ { int ret = r_derivational(z); /* call derivational, line 218 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m10; } { int m11 = z->l - z->c; (void)m11; /* do, line 219 */ { int ret = r_tidy_up(z); /* call tidy_up, line 219 */ - if (ret == 0) goto lab13; if (ret < 0) return ret; } - lab13: z->c = z->l - m11; } z->lb = mlimit4; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c b/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c index 30bf1d99642dc..701ae2e810e41 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -676,8 +675,9 @@ static const symbol s_68[] = { 0xD9, 0x8A }; static int r_Normalize_pre(struct SN_env * z) { /* forwardmode */ int among_var; { int c1 = z->c; /* do, line 247 */ - while(1) { /* repeat, line 247 */ - int c2 = z->c; +/* repeat, line 247 */ + + while(1) { int c2 = z->c; { int c3 = z->c; /* or, line 311 */ z->bra = z->c; /* [, line 249 */ among_var = find_among(z, a_0, 144); /* substring, line 249 */ @@ -976,8 +976,9 @@ static int r_Normalize_post(struct SN_env * z) { /* forwardmode */ z->c = c1; } { int c2 = z->c; /* do, line 329 */ - while(1) { /* repeat, line 329 */ - int c3 = z->c; +/* repeat, line 329 */ + + while(1) { int c3 = z->c; { int c4 = z->c; /* or, line 338 */ z->bra = z->c; /* [, line 332 */ if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((124 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab4; /* substring, line 332 */ @@ -1430,250 +1431,243 @@ extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */ z->B[2] = 0; /* unset is_defined, line 495 */ { int c1 = z->c; /* do, line 498 */ { int ret = r_Checks1(z); /* call Checks1, line 498 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 501 */ { int ret = r_Normalize_pre(z); /* call Normalize_pre, line 501 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 504 */ { int m2 = z->l - z->c; (void)m2; /* do, line 506 */ { int m3 = z->l - z->c; (void)m3; /* or, line 520 */ - if (!(z->B[1])) goto lab4; /* Boolean test is_verb, line 509 */ + if (!(z->B[1])) goto lab2; /* Boolean test is_verb, line 509 */ { int m4 = z->l - z->c; (void)m4; /* or, line 515 */ { int i = 1; - while(1) { /* atleast, line 512 */ - int m5 = z->l - z->c; (void)m5; + while(1) { int m5 = z->l - z->c; (void)m5; { int ret = r_Suffix_Verb_Step1(z); /* call Suffix_Verb_Step1, line 512 */ - if (ret == 0) goto lab7; + if (ret == 0) goto lab5; if (ret < 0) return ret; } i--; continue; - lab7: + lab5: z->c = z->l - m5; break; } - if (i > 0) goto lab6; + if (i > 0) goto lab4; } { int m6 = z->l - z->c; (void)m6; /* or, line 513 */ { int ret = r_Suffix_Verb_Step2a(z); /* call Suffix_Verb_Step2a, line 513 */ - if (ret == 0) goto lab9; + if (ret == 0) goto lab7; if (ret < 0) return ret; } - goto lab8; - lab9: + goto lab6; + lab7: z->c = z->l - m6; { int ret = r_Suffix_Verb_Step2c(z); /* call Suffix_Verb_Step2c, line 513 */ - if (ret == 0) goto lab10; + if (ret == 0) goto lab8; if (ret < 0) return ret; } - goto lab8; - lab10: + goto lab6; + lab8: z->c = z->l - m6; { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); - if (ret < 0) goto lab6; + if (ret < 0) goto lab4; z->c = ret; /* next, line 513 */ } } - lab8: - goto lab5; lab6: + goto lab3; + lab4: z->c = z->l - m4; { int ret = r_Suffix_Verb_Step2b(z); /* call Suffix_Verb_Step2b, line 515 */ - if (ret == 0) goto lab11; + if (ret == 0) goto lab9; if (ret < 0) return ret; } - goto lab5; - lab11: + goto lab3; + lab9: z->c = z->l - m4; { int ret = r_Suffix_Verb_Step2a(z); /* call Suffix_Verb_Step2a, line 516 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab2; if (ret < 0) return ret; } } - lab5: - goto lab3; - lab4: + lab3: + goto lab1; + lab2: z->c = z->l - m3; - if (!(z->B[0])) goto lab12; /* Boolean test is_noun, line 521 */ + if (!(z->B[0])) goto lab10; /* Boolean test is_noun, line 521 */ { int m7 = z->l - z->c; (void)m7; /* try, line 524 */ { int m8 = z->l - z->c; (void)m8; /* or, line 526 */ { int ret = r_Suffix_Noun_Step2c2(z); /* call Suffix_Noun_Step2c2, line 525 */ - if (ret == 0) goto lab15; + if (ret == 0) goto lab13; if (ret < 0) return ret; } - goto lab14; - lab15: + goto lab12; + lab13: z->c = z->l - m8; /* not, line 526 */ - if (!(z->B[2])) goto lab17; /* Boolean test is_defined, line 526 */ - goto lab16; - lab17: + if (!(z->B[2])) goto lab15; /* Boolean test is_defined, line 526 */ + goto lab14; + lab15: { int ret = r_Suffix_Noun_Step1a(z); /* call Suffix_Noun_Step1a, line 526 */ - if (ret == 0) goto lab16; + if (ret == 0) goto lab14; if (ret < 0) return ret; } { int m9 = z->l - z->c; (void)m9; /* or, line 528 */ { int ret = r_Suffix_Noun_Step2a(z); /* call Suffix_Noun_Step2a, line 527 */ - if (ret == 0) goto lab19; + if (ret == 0) goto lab17; if (ret < 0) return ret; } - goto lab18; - lab19: + goto lab16; + lab17: z->c = z->l - m9; { int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 528 */ - if (ret == 0) goto lab20; + if (ret == 0) goto lab18; if (ret < 0) return ret; } - goto lab18; - lab20: + goto lab16; + lab18: z->c = z->l - m9; { int ret = r_Suffix_Noun_Step2c1(z); /* call Suffix_Noun_Step2c1, line 529 */ - if (ret == 0) goto lab21; + if (ret == 0) goto lab19; if (ret < 0) return ret; } - goto lab18; - lab21: + goto lab16; + lab19: z->c = z->l - m9; { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); - if (ret < 0) goto lab16; + if (ret < 0) goto lab14; z->c = ret; /* next, line 530 */ } } - lab18: - goto lab14; lab16: + goto lab12; + lab14: z->c = z->l - m8; { int ret = r_Suffix_Noun_Step1b(z); /* call Suffix_Noun_Step1b, line 531 */ - if (ret == 0) goto lab22; + if (ret == 0) goto lab20; if (ret < 0) return ret; } { int m10 = z->l - z->c; (void)m10; /* or, line 533 */ { int ret = r_Suffix_Noun_Step2a(z); /* call Suffix_Noun_Step2a, line 532 */ - if (ret == 0) goto lab24; + if (ret == 0) goto lab22; if (ret < 0) return ret; } - goto lab23; - lab24: + goto lab21; + lab22: z->c = z->l - m10; { int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 533 */ - if (ret == 0) goto lab25; + if (ret == 0) goto lab23; if (ret < 0) return ret; } - goto lab23; - lab25: + goto lab21; + lab23: z->c = z->l - m10; { int ret = r_Suffix_Noun_Step2c1(z); /* call Suffix_Noun_Step2c1, line 534 */ - if (ret == 0) goto lab22; + if (ret == 0) goto lab20; if (ret < 0) return ret; } } - lab23: - goto lab14; - lab22: + lab21: + goto lab12; + lab20: z->c = z->l - m8; /* not, line 535 */ - if (!(z->B[2])) goto lab27; /* Boolean test is_defined, line 535 */ - goto lab26; - lab27: + if (!(z->B[2])) goto lab25; /* Boolean test is_defined, line 535 */ + goto lab24; + lab25: { int ret = r_Suffix_Noun_Step2a(z); /* call Suffix_Noun_Step2a, line 535 */ - if (ret == 0) goto lab26; + if (ret == 0) goto lab24; if (ret < 0) return ret; } - goto lab14; - lab26: + goto lab12; + lab24: z->c = z->l - m8; { int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 536 */ - if (ret == 0) { z->c = z->l - m7; goto lab13; } + if (ret == 0) { z->c = z->l - m7; goto lab11; } if (ret < 0) return ret; } } - lab14: - lab13: + lab12: + lab11: ; } { int ret = r_Suffix_Noun_Step3(z); /* call Suffix_Noun_Step3, line 538 */ - if (ret == 0) goto lab12; + if (ret == 0) goto lab10; if (ret < 0) return ret; } - goto lab3; - lab12: + goto lab1; + lab10: z->c = z->l - m3; { int ret = r_Suffix_All_alef_maqsura(z); /* call Suffix_All_alef_maqsura, line 544 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab3: - lab2: + lab1: + lab0: z->c = z->l - m2; } z->c = z->lb; { int c11 = z->c; /* do, line 549 */ { int c12 = z->c; /* try, line 550 */ { int ret = r_Prefix_Step1(z); /* call Prefix_Step1, line 550 */ - if (ret == 0) { z->c = c12; goto lab29; } + if (ret == 0) { z->c = c12; goto lab27; } if (ret < 0) return ret; } - lab29: + lab27: ; } { int c13 = z->c; /* try, line 551 */ { int ret = r_Prefix_Step2(z); /* call Prefix_Step2, line 551 */ - if (ret == 0) { z->c = c13; goto lab30; } + if (ret == 0) { z->c = c13; goto lab28; } if (ret < 0) return ret; } - lab30: + lab28: ; } { int c14 = z->c; /* or, line 553 */ { int ret = r_Prefix_Step3a_Noun(z); /* call Prefix_Step3a_Noun, line 552 */ - if (ret == 0) goto lab32; + if (ret == 0) goto lab30; if (ret < 0) return ret; } - goto lab31; - lab32: + goto lab29; + lab30: z->c = c14; - if (!(z->B[0])) goto lab33; /* Boolean test is_noun, line 553 */ + if (!(z->B[0])) goto lab31; /* Boolean test is_noun, line 553 */ { int ret = r_Prefix_Step3b_Noun(z); /* call Prefix_Step3b_Noun, line 553 */ - if (ret == 0) goto lab33; + if (ret == 0) goto lab31; if (ret < 0) return ret; } - goto lab31; - lab33: + goto lab29; + lab31: z->c = c14; - if (!(z->B[1])) goto lab28; /* Boolean test is_verb, line 554 */ + if (!(z->B[1])) goto lab26; /* Boolean test is_verb, line 554 */ { int c15 = z->c; /* try, line 554 */ { int ret = r_Prefix_Step3_Verb(z); /* call Prefix_Step3_Verb, line 554 */ - if (ret == 0) { z->c = c15; goto lab34; } + if (ret == 0) { z->c = c15; goto lab32; } if (ret < 0) return ret; } - lab34: + lab32: ; } { int ret = r_Prefix_Step4_Verb(z); /* call Prefix_Step4_Verb, line 554 */ - if (ret == 0) goto lab28; + if (ret == 0) goto lab26; if (ret < 0) return ret; } } - lab31: - lab28: + lab29: + lab26: z->c = c11; } /* do, line 559 */ { int ret = r_Normalize_post(z); /* call Normalize_post, line 559 */ - if (ret == 0) goto lab35; if (ret < 0) return ret; } -lab35: return 1; } diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_basque.c b/src/backend/snowball/libstemmer/stem_UTF_8_basque.c new file mode 100644 index 0000000000000..f21f53165b8a1 --- /dev/null +++ b/src/backend/snowball/libstemmer/stem_UTF_8_basque.c @@ -0,0 +1,1186 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#include "header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int basque_UTF_8_stem(struct SN_env * z); +#ifdef __cplusplus +} +#endif +static int r_R1(struct SN_env * z); +static int r_R2(struct SN_env * z); +static int r_RV(struct SN_env * z); +static int r_mark_regions(struct SN_env * z); +static int r_adjetiboak(struct SN_env * z); +static int r_izenak(struct SN_env * z); +static int r_aditzak(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * basque_UTF_8_create_env(void); +extern void basque_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_0[4] = { 'i', 'd', 'e', 'a' }; +static const symbol s_0_1[5] = { 'b', 'i', 'd', 'e', 'a' }; +static const symbol s_0_2[5] = { 'k', 'i', 'd', 'e', 'a' }; +static const symbol s_0_3[5] = { 'p', 'i', 'd', 'e', 'a' }; +static const symbol s_0_4[6] = { 'k', 'u', 'n', 'd', 'e', 'a' }; +static const symbol s_0_5[5] = { 'g', 'a', 'l', 'e', 'a' }; +static const symbol s_0_6[6] = { 't', 'a', 'i', 'l', 'e', 'a' }; +static const symbol s_0_7[7] = { 't', 'z', 'a', 'i', 'l', 'e', 'a' }; +static const symbol s_0_8[5] = { 'g', 'u', 'n', 'e', 'a' }; +static const symbol s_0_9[5] = { 'k', 'u', 'n', 'e', 'a' }; +static const symbol s_0_10[5] = { 't', 'z', 'a', 'g', 'a' }; +static const symbol s_0_11[4] = { 'g', 'a', 'i', 'a' }; +static const symbol s_0_12[5] = { 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_0_13[6] = { 't', 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_0_14[5] = { 'k', 'a', 'r', 'i', 'a' }; +static const symbol s_0_15[6] = { 'g', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_0_16[6] = { 'k', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_0_17[2] = { 'k', 'a' }; +static const symbol s_0_18[5] = { 't', 'z', 'a', 'k', 'a' }; +static const symbol s_0_19[2] = { 'l', 'a' }; +static const symbol s_0_20[4] = { 'm', 'e', 'n', 'a' }; +static const symbol s_0_21[4] = { 'p', 'e', 'n', 'a' }; +static const symbol s_0_22[4] = { 'k', 'i', 'n', 'a' }; +static const symbol s_0_23[5] = { 'e', 'z', 'i', 'n', 'a' }; +static const symbol s_0_24[6] = { 't', 'e', 'z', 'i', 'n', 'a' }; +static const symbol s_0_25[4] = { 'k', 'u', 'n', 'a' }; +static const symbol s_0_26[4] = { 't', 'u', 'n', 'a' }; +static const symbol s_0_27[6] = { 'k', 'i', 'z', 'u', 'n', 'a' }; +static const symbol s_0_28[3] = { 'e', 'r', 'a' }; +static const symbol s_0_29[4] = { 'b', 'e', 'r', 'a' }; +static const symbol s_0_30[7] = { 'a', 'r', 'a', 'b', 'e', 'r', 'a' }; +static const symbol s_0_31[4] = { 'k', 'e', 'r', 'a' }; +static const symbol s_0_32[4] = { 'p', 'e', 'r', 'a' }; +static const symbol s_0_33[4] = { 'o', 'r', 'r', 'a' }; +static const symbol s_0_34[5] = { 'k', 'o', 'r', 'r', 'a' }; +static const symbol s_0_35[4] = { 'd', 'u', 'r', 'a' }; +static const symbol s_0_36[4] = { 'g', 'u', 'r', 'a' }; +static const symbol s_0_37[4] = { 'k', 'u', 'r', 'a' }; +static const symbol s_0_38[4] = { 't', 'u', 'r', 'a' }; +static const symbol s_0_39[3] = { 'e', 't', 'a' }; +static const symbol s_0_40[4] = { 'k', 'e', 't', 'a' }; +static const symbol s_0_41[6] = { 'g', 'a', 'i', 'l', 'u', 'a' }; +static const symbol s_0_42[3] = { 'e', 'z', 'a' }; +static const symbol s_0_43[6] = { 'e', 'r', 'r', 'e', 'z', 'a' }; +static const symbol s_0_44[3] = { 't', 'z', 'a' }; +static const symbol s_0_45[6] = { 'g', 'a', 'i', 't', 'z', 'a' }; +static const symbol s_0_46[6] = { 'k', 'a', 'i', 't', 'z', 'a' }; +static const symbol s_0_47[6] = { 'k', 'u', 'n', 't', 'z', 'a' }; +static const symbol s_0_48[3] = { 'i', 'd', 'e' }; +static const symbol s_0_49[4] = { 'b', 'i', 'd', 'e' }; +static const symbol s_0_50[4] = { 'k', 'i', 'd', 'e' }; +static const symbol s_0_51[4] = { 'p', 'i', 'd', 'e' }; +static const symbol s_0_52[5] = { 'k', 'u', 'n', 'd', 'e' }; +static const symbol s_0_53[5] = { 't', 'z', 'a', 'k', 'e' }; +static const symbol s_0_54[5] = { 't', 'z', 'e', 'k', 'e' }; +static const symbol s_0_55[2] = { 'l', 'e' }; +static const symbol s_0_56[4] = { 'g', 'a', 'l', 'e' }; +static const symbol s_0_57[5] = { 't', 'a', 'i', 'l', 'e' }; +static const symbol s_0_58[6] = { 't', 'z', 'a', 'i', 'l', 'e' }; +static const symbol s_0_59[4] = { 'g', 'u', 'n', 'e' }; +static const symbol s_0_60[4] = { 'k', 'u', 'n', 'e' }; +static const symbol s_0_61[3] = { 't', 'z', 'e' }; +static const symbol s_0_62[4] = { 'a', 't', 'z', 'e' }; +static const symbol s_0_63[3] = { 'g', 'a', 'i' }; +static const symbol s_0_64[4] = { 'a', 'l', 'd', 'i' }; +static const symbol s_0_65[5] = { 't', 'a', 'l', 'd', 'i' }; +static const symbol s_0_66[2] = { 'k', 'i' }; +static const symbol s_0_67[3] = { 'a', 'r', 'i' }; +static const symbol s_0_68[4] = { 'k', 'a', 'r', 'i' }; +static const symbol s_0_69[4] = { 'l', 'a', 'r', 'i' }; +static const symbol s_0_70[4] = { 't', 'a', 'r', 'i' }; +static const symbol s_0_71[5] = { 'e', 't', 'a', 'r', 'i' }; +static const symbol s_0_72[5] = { 'g', 'a', 'r', 'r', 'i' }; +static const symbol s_0_73[5] = { 'k', 'a', 'r', 'r', 'i' }; +static const symbol s_0_74[5] = { 'a', 'r', 'a', 'z', 'i' }; +static const symbol s_0_75[6] = { 't', 'a', 'r', 'a', 'z', 'i' }; +static const symbol s_0_76[2] = { 'a', 'n' }; +static const symbol s_0_77[3] = { 'e', 'a', 'n' }; +static const symbol s_0_78[4] = { 'r', 'e', 'a', 'n' }; +static const symbol s_0_79[3] = { 'k', 'a', 'n' }; +static const symbol s_0_80[4] = { 'e', 't', 'a', 'n' }; +static const symbol s_0_81[7] = { 'a', 't', 's', 'e', 'd', 'e', 'n' }; +static const symbol s_0_82[3] = { 'm', 'e', 'n' }; +static const symbol s_0_83[3] = { 'p', 'e', 'n' }; +static const symbol s_0_84[3] = { 'k', 'i', 'n' }; +static const symbol s_0_85[5] = { 'r', 'e', 'k', 'i', 'n' }; +static const symbol s_0_86[4] = { 'e', 'z', 'i', 'n' }; +static const symbol s_0_87[5] = { 't', 'e', 'z', 'i', 'n' }; +static const symbol s_0_88[3] = { 't', 'u', 'n' }; +static const symbol s_0_89[5] = { 'k', 'i', 'z', 'u', 'n' }; +static const symbol s_0_90[2] = { 'g', 'o' }; +static const symbol s_0_91[3] = { 'a', 'g', 'o' }; +static const symbol s_0_92[3] = { 't', 'i', 'o' }; +static const symbol s_0_93[4] = { 'd', 'a', 'k', 'o' }; +static const symbol s_0_94[2] = { 'o', 'r' }; +static const symbol s_0_95[3] = { 'k', 'o', 'r' }; +static const symbol s_0_96[4] = { 't', 'z', 'a', 't' }; +static const symbol s_0_97[2] = { 'd', 'u' }; +static const symbol s_0_98[5] = { 'g', 'a', 'i', 'l', 'u' }; +static const symbol s_0_99[2] = { 't', 'u' }; +static const symbol s_0_100[3] = { 'a', 't', 'u' }; +static const symbol s_0_101[6] = { 'a', 'l', 'd', 'a', 't', 'u' }; +static const symbol s_0_102[4] = { 't', 'a', 't', 'u' }; +static const symbol s_0_103[6] = { 'b', 'a', 'd', 'i', 't', 'u' }; +static const symbol s_0_104[2] = { 'e', 'z' }; +static const symbol s_0_105[5] = { 'e', 'r', 'r', 'e', 'z' }; +static const symbol s_0_106[4] = { 't', 'z', 'e', 'z' }; +static const symbol s_0_107[5] = { 'g', 'a', 'i', 't', 'z' }; +static const symbol s_0_108[5] = { 'k', 'a', 'i', 't', 'z' }; + +static const struct among a_0[109] = +{ +/* 0 */ { 4, s_0_0, -1, 1, 0}, +/* 1 */ { 5, s_0_1, 0, 1, 0}, +/* 2 */ { 5, s_0_2, 0, 1, 0}, +/* 3 */ { 5, s_0_3, 0, 1, 0}, +/* 4 */ { 6, s_0_4, -1, 1, 0}, +/* 5 */ { 5, s_0_5, -1, 1, 0}, +/* 6 */ { 6, s_0_6, -1, 1, 0}, +/* 7 */ { 7, s_0_7, -1, 1, 0}, +/* 8 */ { 5, s_0_8, -1, 1, 0}, +/* 9 */ { 5, s_0_9, -1, 1, 0}, +/* 10 */ { 5, s_0_10, -1, 1, 0}, +/* 11 */ { 4, s_0_11, -1, 1, 0}, +/* 12 */ { 5, s_0_12, -1, 1, 0}, +/* 13 */ { 6, s_0_13, 12, 1, 0}, +/* 14 */ { 5, s_0_14, -1, 1, 0}, +/* 15 */ { 6, s_0_15, -1, 2, 0}, +/* 16 */ { 6, s_0_16, -1, 1, 0}, +/* 17 */ { 2, s_0_17, -1, 1, 0}, +/* 18 */ { 5, s_0_18, 17, 1, 0}, +/* 19 */ { 2, s_0_19, -1, 1, 0}, +/* 20 */ { 4, s_0_20, -1, 1, 0}, +/* 21 */ { 4, s_0_21, -1, 1, 0}, +/* 22 */ { 4, s_0_22, -1, 1, 0}, +/* 23 */ { 5, s_0_23, -1, 1, 0}, +/* 24 */ { 6, s_0_24, 23, 1, 0}, +/* 25 */ { 4, s_0_25, -1, 1, 0}, +/* 26 */ { 4, s_0_26, -1, 1, 0}, +/* 27 */ { 6, s_0_27, -1, 1, 0}, +/* 28 */ { 3, s_0_28, -1, 1, 0}, +/* 29 */ { 4, s_0_29, 28, 1, 0}, +/* 30 */ { 7, s_0_30, 29, 4, 0}, +/* 31 */ { 4, s_0_31, 28, 1, 0}, +/* 32 */ { 4, s_0_32, 28, 1, 0}, +/* 33 */ { 4, s_0_33, -1, 1, 0}, +/* 34 */ { 5, s_0_34, 33, 1, 0}, +/* 35 */ { 4, s_0_35, -1, 1, 0}, +/* 36 */ { 4, s_0_36, -1, 1, 0}, +/* 37 */ { 4, s_0_37, -1, 1, 0}, +/* 38 */ { 4, s_0_38, -1, 1, 0}, +/* 39 */ { 3, s_0_39, -1, 1, 0}, +/* 40 */ { 4, s_0_40, 39, 1, 0}, +/* 41 */ { 6, s_0_41, -1, 1, 0}, +/* 42 */ { 3, s_0_42, -1, 1, 0}, +/* 43 */ { 6, s_0_43, 42, 1, 0}, +/* 44 */ { 3, s_0_44, -1, 2, 0}, +/* 45 */ { 6, s_0_45, 44, 1, 0}, +/* 46 */ { 6, s_0_46, 44, 1, 0}, +/* 47 */ { 6, s_0_47, 44, 1, 0}, +/* 48 */ { 3, s_0_48, -1, 1, 0}, +/* 49 */ { 4, s_0_49, 48, 1, 0}, +/* 50 */ { 4, s_0_50, 48, 1, 0}, +/* 51 */ { 4, s_0_51, 48, 1, 0}, +/* 52 */ { 5, s_0_52, -1, 1, 0}, +/* 53 */ { 5, s_0_53, -1, 1, 0}, +/* 54 */ { 5, s_0_54, -1, 1, 0}, +/* 55 */ { 2, s_0_55, -1, 1, 0}, +/* 56 */ { 4, s_0_56, 55, 1, 0}, +/* 57 */ { 5, s_0_57, 55, 1, 0}, +/* 58 */ { 6, s_0_58, 55, 1, 0}, +/* 59 */ { 4, s_0_59, -1, 1, 0}, +/* 60 */ { 4, s_0_60, -1, 1, 0}, +/* 61 */ { 3, s_0_61, -1, 1, 0}, +/* 62 */ { 4, s_0_62, 61, 1, 0}, +/* 63 */ { 3, s_0_63, -1, 1, 0}, +/* 64 */ { 4, s_0_64, -1, 1, 0}, +/* 65 */ { 5, s_0_65, 64, 1, 0}, +/* 66 */ { 2, s_0_66, -1, 1, 0}, +/* 67 */ { 3, s_0_67, -1, 1, 0}, +/* 68 */ { 4, s_0_68, 67, 1, 0}, +/* 69 */ { 4, s_0_69, 67, 1, 0}, +/* 70 */ { 4, s_0_70, 67, 1, 0}, +/* 71 */ { 5, s_0_71, 70, 1, 0}, +/* 72 */ { 5, s_0_72, -1, 2, 0}, +/* 73 */ { 5, s_0_73, -1, 1, 0}, +/* 74 */ { 5, s_0_74, -1, 1, 0}, +/* 75 */ { 6, s_0_75, 74, 1, 0}, +/* 76 */ { 2, s_0_76, -1, 1, 0}, +/* 77 */ { 3, s_0_77, 76, 1, 0}, +/* 78 */ { 4, s_0_78, 77, 1, 0}, +/* 79 */ { 3, s_0_79, 76, 1, 0}, +/* 80 */ { 4, s_0_80, 76, 1, 0}, +/* 81 */ { 7, s_0_81, -1, 3, 0}, +/* 82 */ { 3, s_0_82, -1, 1, 0}, +/* 83 */ { 3, s_0_83, -1, 1, 0}, +/* 84 */ { 3, s_0_84, -1, 1, 0}, +/* 85 */ { 5, s_0_85, 84, 1, 0}, +/* 86 */ { 4, s_0_86, -1, 1, 0}, +/* 87 */ { 5, s_0_87, 86, 1, 0}, +/* 88 */ { 3, s_0_88, -1, 1, 0}, +/* 89 */ { 5, s_0_89, -1, 1, 0}, +/* 90 */ { 2, s_0_90, -1, 1, 0}, +/* 91 */ { 3, s_0_91, 90, 1, 0}, +/* 92 */ { 3, s_0_92, -1, 1, 0}, +/* 93 */ { 4, s_0_93, -1, 1, 0}, +/* 94 */ { 2, s_0_94, -1, 1, 0}, +/* 95 */ { 3, s_0_95, 94, 1, 0}, +/* 96 */ { 4, s_0_96, -1, 1, 0}, +/* 97 */ { 2, s_0_97, -1, 1, 0}, +/* 98 */ { 5, s_0_98, -1, 1, 0}, +/* 99 */ { 2, s_0_99, -1, 1, 0}, +/*100 */ { 3, s_0_100, 99, 1, 0}, +/*101 */ { 6, s_0_101, 100, 1, 0}, +/*102 */ { 4, s_0_102, 100, 1, 0}, +/*103 */ { 6, s_0_103, 99, 5, 0}, +/*104 */ { 2, s_0_104, -1, 1, 0}, +/*105 */ { 5, s_0_105, 104, 1, 0}, +/*106 */ { 4, s_0_106, 104, 1, 0}, +/*107 */ { 5, s_0_107, -1, 1, 0}, +/*108 */ { 5, s_0_108, -1, 1, 0} +}; + +static const symbol s_1_0[3] = { 'a', 'd', 'a' }; +static const symbol s_1_1[4] = { 'k', 'a', 'd', 'a' }; +static const symbol s_1_2[4] = { 'a', 'n', 'd', 'a' }; +static const symbol s_1_3[5] = { 'd', 'e', 'n', 'd', 'a' }; +static const symbol s_1_4[5] = { 'g', 'a', 'b', 'e', 'a' }; +static const symbol s_1_5[5] = { 'k', 'a', 'b', 'e', 'a' }; +static const symbol s_1_6[5] = { 'a', 'l', 'd', 'e', 'a' }; +static const symbol s_1_7[6] = { 'k', 'a', 'l', 'd', 'e', 'a' }; +static const symbol s_1_8[6] = { 't', 'a', 'l', 'd', 'e', 'a' }; +static const symbol s_1_9[5] = { 'o', 'r', 'd', 'e', 'a' }; +static const symbol s_1_10[5] = { 'z', 'a', 'l', 'e', 'a' }; +static const symbol s_1_11[6] = { 't', 'z', 'a', 'l', 'e', 'a' }; +static const symbol s_1_12[5] = { 'g', 'i', 'l', 'e', 'a' }; +static const symbol s_1_13[4] = { 'e', 'm', 'e', 'a' }; +static const symbol s_1_14[5] = { 'k', 'u', 'm', 'e', 'a' }; +static const symbol s_1_15[3] = { 'n', 'e', 'a' }; +static const symbol s_1_16[4] = { 'e', 'n', 'e', 'a' }; +static const symbol s_1_17[6] = { 'z', 'i', 'o', 'n', 'e', 'a' }; +static const symbol s_1_18[4] = { 'u', 'n', 'e', 'a' }; +static const symbol s_1_19[5] = { 'g', 'u', 'n', 'e', 'a' }; +static const symbol s_1_20[3] = { 'p', 'e', 'a' }; +static const symbol s_1_21[6] = { 'a', 'u', 'r', 'r', 'e', 'a' }; +static const symbol s_1_22[3] = { 't', 'e', 'a' }; +static const symbol s_1_23[5] = { 'k', 'o', 't', 'e', 'a' }; +static const symbol s_1_24[5] = { 'a', 'r', 't', 'e', 'a' }; +static const symbol s_1_25[5] = { 'o', 's', 't', 'e', 'a' }; +static const symbol s_1_26[5] = { 'e', 't', 'x', 'e', 'a' }; +static const symbol s_1_27[2] = { 'g', 'a' }; +static const symbol s_1_28[4] = { 'a', 'n', 'g', 'a' }; +static const symbol s_1_29[4] = { 'g', 'a', 'i', 'a' }; +static const symbol s_1_30[5] = { 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_1_31[6] = { 't', 'a', 'l', 'd', 'i', 'a' }; +static const symbol s_1_32[6] = { 'h', 'a', 'n', 'd', 'i', 'a' }; +static const symbol s_1_33[6] = { 'm', 'e', 'n', 'd', 'i', 'a' }; +static const symbol s_1_34[4] = { 'g', 'e', 'i', 'a' }; +static const symbol s_1_35[4] = { 'e', 'g', 'i', 'a' }; +static const symbol s_1_36[5] = { 'd', 'e', 'g', 'i', 'a' }; +static const symbol s_1_37[5] = { 't', 'e', 'g', 'i', 'a' }; +static const symbol s_1_38[5] = { 'n', 'a', 'h', 'i', 'a' }; +static const symbol s_1_39[4] = { 'o', 'h', 'i', 'a' }; +static const symbol s_1_40[3] = { 'k', 'i', 'a' }; +static const symbol s_1_41[5] = { 't', 'o', 'k', 'i', 'a' }; +static const symbol s_1_42[3] = { 'o', 'i', 'a' }; +static const symbol s_1_43[4] = { 'k', 'o', 'i', 'a' }; +static const symbol s_1_44[4] = { 'a', 'r', 'i', 'a' }; +static const symbol s_1_45[5] = { 'k', 'a', 'r', 'i', 'a' }; +static const symbol s_1_46[5] = { 'l', 'a', 'r', 'i', 'a' }; +static const symbol s_1_47[5] = { 't', 'a', 'r', 'i', 'a' }; +static const symbol s_1_48[4] = { 'e', 'r', 'i', 'a' }; +static const symbol s_1_49[5] = { 'k', 'e', 'r', 'i', 'a' }; +static const symbol s_1_50[5] = { 't', 'e', 'r', 'i', 'a' }; +static const symbol s_1_51[6] = { 'g', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_1_52[6] = { 'l', 'a', 'r', 'r', 'i', 'a' }; +static const symbol s_1_53[6] = { 'k', 'i', 'r', 'r', 'i', 'a' }; +static const symbol s_1_54[5] = { 'd', 'u', 'r', 'i', 'a' }; +static const symbol s_1_55[4] = { 'a', 's', 'i', 'a' }; +static const symbol s_1_56[3] = { 't', 'i', 'a' }; +static const symbol s_1_57[4] = { 'e', 'z', 'i', 'a' }; +static const symbol s_1_58[5] = { 'b', 'i', 'z', 'i', 'a' }; +static const symbol s_1_59[6] = { 'o', 'n', 't', 'z', 'i', 'a' }; +static const symbol s_1_60[2] = { 'k', 'a' }; +static const symbol s_1_61[4] = { 'j', 'o', 'k', 'a' }; +static const symbol s_1_62[5] = { 'a', 'u', 'r', 'k', 'a' }; +static const symbol s_1_63[3] = { 's', 'k', 'a' }; +static const symbol s_1_64[3] = { 'x', 'k', 'a' }; +static const symbol s_1_65[3] = { 'z', 'k', 'a' }; +static const symbol s_1_66[6] = { 'g', 'i', 'b', 'e', 'l', 'a' }; +static const symbol s_1_67[4] = { 'g', 'e', 'l', 'a' }; +static const symbol s_1_68[5] = { 'k', 'a', 'i', 'l', 'a' }; +static const symbol s_1_69[5] = { 's', 'k', 'i', 'l', 'a' }; +static const symbol s_1_70[4] = { 't', 'i', 'l', 'a' }; +static const symbol s_1_71[3] = { 'o', 'l', 'a' }; +static const symbol s_1_72[2] = { 'n', 'a' }; +static const symbol s_1_73[4] = { 'k', 'a', 'n', 'a' }; +static const symbol s_1_74[3] = { 'e', 'n', 'a' }; +static const symbol s_1_75[7] = { 'g', 'a', 'r', 'r', 'e', 'n', 'a' }; +static const symbol s_1_76[7] = { 'g', 'e', 'r', 'r', 'e', 'n', 'a' }; +static const symbol s_1_77[6] = { 'u', 'r', 'r', 'e', 'n', 'a' }; +static const symbol s_1_78[5] = { 'z', 'a', 'i', 'n', 'a' }; +static const symbol s_1_79[6] = { 't', 'z', 'a', 'i', 'n', 'a' }; +static const symbol s_1_80[4] = { 'k', 'i', 'n', 'a' }; +static const symbol s_1_81[4] = { 'm', 'i', 'n', 'a' }; +static const symbol s_1_82[5] = { 'g', 'a', 'r', 'n', 'a' }; +static const symbol s_1_83[3] = { 'u', 'n', 'a' }; +static const symbol s_1_84[4] = { 'd', 'u', 'n', 'a' }; +static const symbol s_1_85[5] = { 'a', 's', 'u', 'n', 'a' }; +static const symbol s_1_86[6] = { 't', 'a', 's', 'u', 'n', 'a' }; +static const symbol s_1_87[5] = { 'o', 'n', 'd', 'o', 'a' }; +static const symbol s_1_88[6] = { 'k', 'o', 'n', 'd', 'o', 'a' }; +static const symbol s_1_89[4] = { 'n', 'g', 'o', 'a' }; +static const symbol s_1_90[4] = { 'z', 'i', 'o', 'a' }; +static const symbol s_1_91[3] = { 'k', 'o', 'a' }; +static const symbol s_1_92[5] = { 't', 'a', 'k', 'o', 'a' }; +static const symbol s_1_93[4] = { 'z', 'k', 'o', 'a' }; +static const symbol s_1_94[3] = { 'n', 'o', 'a' }; +static const symbol s_1_95[5] = { 'z', 'i', 'n', 'o', 'a' }; +static const symbol s_1_96[4] = { 'a', 'r', 'o', 'a' }; +static const symbol s_1_97[5] = { 't', 'a', 'r', 'o', 'a' }; +static const symbol s_1_98[5] = { 'z', 'a', 'r', 'o', 'a' }; +static const symbol s_1_99[4] = { 'e', 'r', 'o', 'a' }; +static const symbol s_1_100[4] = { 'o', 'r', 'o', 'a' }; +static const symbol s_1_101[4] = { 'o', 's', 'o', 'a' }; +static const symbol s_1_102[3] = { 't', 'o', 'a' }; +static const symbol s_1_103[4] = { 't', 't', 'o', 'a' }; +static const symbol s_1_104[4] = { 'z', 't', 'o', 'a' }; +static const symbol s_1_105[4] = { 't', 'x', 'o', 'a' }; +static const symbol s_1_106[4] = { 't', 'z', 'o', 'a' }; +static const symbol s_1_107[4] = { 0xC3, 0xB1, 'o', 'a' }; +static const symbol s_1_108[2] = { 'r', 'a' }; +static const symbol s_1_109[3] = { 'a', 'r', 'a' }; +static const symbol s_1_110[4] = { 'd', 'a', 'r', 'a' }; +static const symbol s_1_111[5] = { 'l', 'i', 'a', 'r', 'a' }; +static const symbol s_1_112[5] = { 't', 'i', 'a', 'r', 'a' }; +static const symbol s_1_113[4] = { 't', 'a', 'r', 'a' }; +static const symbol s_1_114[5] = { 'e', 't', 'a', 'r', 'a' }; +static const symbol s_1_115[5] = { 't', 'z', 'a', 'r', 'a' }; +static const symbol s_1_116[4] = { 'b', 'e', 'r', 'a' }; +static const symbol s_1_117[4] = { 'k', 'e', 'r', 'a' }; +static const symbol s_1_118[4] = { 'p', 'e', 'r', 'a' }; +static const symbol s_1_119[3] = { 'o', 'r', 'a' }; +static const symbol s_1_120[6] = { 't', 'z', 'a', 'r', 'r', 'a' }; +static const symbol s_1_121[5] = { 'k', 'o', 'r', 'r', 'a' }; +static const symbol s_1_122[3] = { 't', 'r', 'a' }; +static const symbol s_1_123[2] = { 's', 'a' }; +static const symbol s_1_124[3] = { 'o', 's', 'a' }; +static const symbol s_1_125[2] = { 't', 'a' }; +static const symbol s_1_126[3] = { 'e', 't', 'a' }; +static const symbol s_1_127[4] = { 'k', 'e', 't', 'a' }; +static const symbol s_1_128[3] = { 's', 't', 'a' }; +static const symbol s_1_129[3] = { 'd', 'u', 'a' }; +static const symbol s_1_130[6] = { 'm', 'e', 'n', 'd', 'u', 'a' }; +static const symbol s_1_131[5] = { 'o', 'r', 'd', 'u', 'a' }; +static const symbol s_1_132[5] = { 'l', 'e', 'k', 'u', 'a' }; +static const symbol s_1_133[5] = { 'b', 'u', 'r', 'u', 'a' }; +static const symbol s_1_134[5] = { 'd', 'u', 'r', 'u', 'a' }; +static const symbol s_1_135[4] = { 't', 's', 'u', 'a' }; +static const symbol s_1_136[3] = { 't', 'u', 'a' }; +static const symbol s_1_137[6] = { 'm', 'e', 'n', 't', 'u', 'a' }; +static const symbol s_1_138[5] = { 'e', 's', 't', 'u', 'a' }; +static const symbol s_1_139[4] = { 't', 'x', 'u', 'a' }; +static const symbol s_1_140[3] = { 'z', 'u', 'a' }; +static const symbol s_1_141[4] = { 't', 'z', 'u', 'a' }; +static const symbol s_1_142[2] = { 'z', 'a' }; +static const symbol s_1_143[3] = { 'e', 'z', 'a' }; +static const symbol s_1_144[5] = { 'e', 'r', 'o', 'z', 'a' }; +static const symbol s_1_145[3] = { 't', 'z', 'a' }; +static const symbol s_1_146[6] = { 'k', 'o', 'i', 't', 'z', 'a' }; +static const symbol s_1_147[5] = { 'a', 'n', 't', 'z', 'a' }; +static const symbol s_1_148[6] = { 'g', 'i', 'n', 't', 'z', 'a' }; +static const symbol s_1_149[6] = { 'k', 'i', 'n', 't', 'z', 'a' }; +static const symbol s_1_150[6] = { 'k', 'u', 'n', 't', 'z', 'a' }; +static const symbol s_1_151[4] = { 'g', 'a', 'b', 'e' }; +static const symbol s_1_152[4] = { 'k', 'a', 'b', 'e' }; +static const symbol s_1_153[4] = { 'k', 'i', 'd', 'e' }; +static const symbol s_1_154[4] = { 'a', 'l', 'd', 'e' }; +static const symbol s_1_155[5] = { 'k', 'a', 'l', 'd', 'e' }; +static const symbol s_1_156[5] = { 't', 'a', 'l', 'd', 'e' }; +static const symbol s_1_157[4] = { 'o', 'r', 'd', 'e' }; +static const symbol s_1_158[2] = { 'g', 'e' }; +static const symbol s_1_159[4] = { 'z', 'a', 'l', 'e' }; +static const symbol s_1_160[5] = { 't', 'z', 'a', 'l', 'e' }; +static const symbol s_1_161[4] = { 'g', 'i', 'l', 'e' }; +static const symbol s_1_162[3] = { 'e', 'm', 'e' }; +static const symbol s_1_163[4] = { 'k', 'u', 'm', 'e' }; +static const symbol s_1_164[2] = { 'n', 'e' }; +static const symbol s_1_165[5] = { 'z', 'i', 'o', 'n', 'e' }; +static const symbol s_1_166[3] = { 'u', 'n', 'e' }; +static const symbol s_1_167[4] = { 'g', 'u', 'n', 'e' }; +static const symbol s_1_168[2] = { 'p', 'e' }; +static const symbol s_1_169[5] = { 'a', 'u', 'r', 'r', 'e' }; +static const symbol s_1_170[2] = { 't', 'e' }; +static const symbol s_1_171[4] = { 'k', 'o', 't', 'e' }; +static const symbol s_1_172[4] = { 'a', 'r', 't', 'e' }; +static const symbol s_1_173[4] = { 'o', 's', 't', 'e' }; +static const symbol s_1_174[4] = { 'e', 't', 'x', 'e' }; +static const symbol s_1_175[3] = { 'g', 'a', 'i' }; +static const symbol s_1_176[2] = { 'd', 'i' }; +static const symbol s_1_177[4] = { 'a', 'l', 'd', 'i' }; +static const symbol s_1_178[5] = { 't', 'a', 'l', 'd', 'i' }; +static const symbol s_1_179[5] = { 'g', 'e', 'l', 'd', 'i' }; +static const symbol s_1_180[5] = { 'h', 'a', 'n', 'd', 'i' }; +static const symbol s_1_181[5] = { 'm', 'e', 'n', 'd', 'i' }; +static const symbol s_1_182[3] = { 'g', 'e', 'i' }; +static const symbol s_1_183[3] = { 'e', 'g', 'i' }; +static const symbol s_1_184[4] = { 'd', 'e', 'g', 'i' }; +static const symbol s_1_185[4] = { 't', 'e', 'g', 'i' }; +static const symbol s_1_186[4] = { 'n', 'a', 'h', 'i' }; +static const symbol s_1_187[3] = { 'o', 'h', 'i' }; +static const symbol s_1_188[2] = { 'k', 'i' }; +static const symbol s_1_189[4] = { 't', 'o', 'k', 'i' }; +static const symbol s_1_190[2] = { 'o', 'i' }; +static const symbol s_1_191[3] = { 'g', 'o', 'i' }; +static const symbol s_1_192[3] = { 'k', 'o', 'i' }; +static const symbol s_1_193[3] = { 'a', 'r', 'i' }; +static const symbol s_1_194[4] = { 'k', 'a', 'r', 'i' }; +static const symbol s_1_195[4] = { 'l', 'a', 'r', 'i' }; +static const symbol s_1_196[4] = { 't', 'a', 'r', 'i' }; +static const symbol s_1_197[5] = { 'g', 'a', 'r', 'r', 'i' }; +static const symbol s_1_198[5] = { 'l', 'a', 'r', 'r', 'i' }; +static const symbol s_1_199[5] = { 'k', 'i', 'r', 'r', 'i' }; +static const symbol s_1_200[4] = { 'd', 'u', 'r', 'i' }; +static const symbol s_1_201[3] = { 'a', 's', 'i' }; +static const symbol s_1_202[2] = { 't', 'i' }; +static const symbol s_1_203[5] = { 'o', 'n', 't', 'z', 'i' }; +static const symbol s_1_204[3] = { 0xC3, 0xB1, 'i' }; +static const symbol s_1_205[2] = { 'a', 'k' }; +static const symbol s_1_206[2] = { 'e', 'k' }; +static const symbol s_1_207[5] = { 't', 'a', 'r', 'i', 'k' }; +static const symbol s_1_208[5] = { 'g', 'i', 'b', 'e', 'l' }; +static const symbol s_1_209[3] = { 'a', 'i', 'l' }; +static const symbol s_1_210[4] = { 'k', 'a', 'i', 'l' }; +static const symbol s_1_211[3] = { 'k', 'a', 'n' }; +static const symbol s_1_212[3] = { 't', 'a', 'n' }; +static const symbol s_1_213[4] = { 'e', 't', 'a', 'n' }; +static const symbol s_1_214[2] = { 'e', 'n' }; +static const symbol s_1_215[3] = { 'r', 'e', 'n' }; +static const symbol s_1_216[6] = { 'g', 'a', 'r', 'r', 'e', 'n' }; +static const symbol s_1_217[6] = { 'g', 'e', 'r', 'r', 'e', 'n' }; +static const symbol s_1_218[5] = { 'u', 'r', 'r', 'e', 'n' }; +static const symbol s_1_219[3] = { 't', 'e', 'n' }; +static const symbol s_1_220[4] = { 't', 'z', 'e', 'n' }; +static const symbol s_1_221[4] = { 'z', 'a', 'i', 'n' }; +static const symbol s_1_222[5] = { 't', 'z', 'a', 'i', 'n' }; +static const symbol s_1_223[3] = { 'k', 'i', 'n' }; +static const symbol s_1_224[3] = { 'm', 'i', 'n' }; +static const symbol s_1_225[3] = { 'd', 'u', 'n' }; +static const symbol s_1_226[4] = { 'a', 's', 'u', 'n' }; +static const symbol s_1_227[5] = { 't', 'a', 's', 'u', 'n' }; +static const symbol s_1_228[5] = { 'a', 'i', 'z', 'u', 'n' }; +static const symbol s_1_229[4] = { 'o', 'n', 'd', 'o' }; +static const symbol s_1_230[5] = { 'k', 'o', 'n', 'd', 'o' }; +static const symbol s_1_231[2] = { 'g', 'o' }; +static const symbol s_1_232[3] = { 'n', 'g', 'o' }; +static const symbol s_1_233[3] = { 'z', 'i', 'o' }; +static const symbol s_1_234[2] = { 'k', 'o' }; +static const symbol s_1_235[5] = { 't', 'r', 'a', 'k', 'o' }; +static const symbol s_1_236[4] = { 't', 'a', 'k', 'o' }; +static const symbol s_1_237[5] = { 'e', 't', 'a', 'k', 'o' }; +static const symbol s_1_238[3] = { 'e', 'k', 'o' }; +static const symbol s_1_239[6] = { 't', 'a', 'r', 'i', 'k', 'o' }; +static const symbol s_1_240[3] = { 's', 'k', 'o' }; +static const symbol s_1_241[4] = { 't', 'u', 'k', 'o' }; +static const symbol s_1_242[8] = { 'm', 'i', 'n', 'u', 't', 'u', 'k', 'o' }; +static const symbol s_1_243[3] = { 'z', 'k', 'o' }; +static const symbol s_1_244[2] = { 'n', 'o' }; +static const symbol s_1_245[4] = { 'z', 'i', 'n', 'o' }; +static const symbol s_1_246[2] = { 'r', 'o' }; +static const symbol s_1_247[3] = { 'a', 'r', 'o' }; +static const symbol s_1_248[5] = { 'i', 'g', 'a', 'r', 'o' }; +static const symbol s_1_249[4] = { 't', 'a', 'r', 'o' }; +static const symbol s_1_250[4] = { 'z', 'a', 'r', 'o' }; +static const symbol s_1_251[3] = { 'e', 'r', 'o' }; +static const symbol s_1_252[4] = { 'g', 'i', 'r', 'o' }; +static const symbol s_1_253[3] = { 'o', 'r', 'o' }; +static const symbol s_1_254[3] = { 'o', 's', 'o' }; +static const symbol s_1_255[2] = { 't', 'o' }; +static const symbol s_1_256[3] = { 't', 't', 'o' }; +static const symbol s_1_257[3] = { 'z', 't', 'o' }; +static const symbol s_1_258[3] = { 't', 'x', 'o' }; +static const symbol s_1_259[3] = { 't', 'z', 'o' }; +static const symbol s_1_260[6] = { 'g', 'i', 'n', 't', 'z', 'o' }; +static const symbol s_1_261[3] = { 0xC3, 0xB1, 'o' }; +static const symbol s_1_262[2] = { 'z', 'p' }; +static const symbol s_1_263[2] = { 'a', 'r' }; +static const symbol s_1_264[3] = { 'd', 'a', 'r' }; +static const symbol s_1_265[5] = { 'b', 'e', 'h', 'a', 'r' }; +static const symbol s_1_266[5] = { 'z', 'e', 'h', 'a', 'r' }; +static const symbol s_1_267[4] = { 'l', 'i', 'a', 'r' }; +static const symbol s_1_268[4] = { 't', 'i', 'a', 'r' }; +static const symbol s_1_269[3] = { 't', 'a', 'r' }; +static const symbol s_1_270[4] = { 't', 'z', 'a', 'r' }; +static const symbol s_1_271[2] = { 'o', 'r' }; +static const symbol s_1_272[3] = { 'k', 'o', 'r' }; +static const symbol s_1_273[2] = { 'o', 's' }; +static const symbol s_1_274[3] = { 'k', 'e', 't' }; +static const symbol s_1_275[2] = { 'd', 'u' }; +static const symbol s_1_276[5] = { 'm', 'e', 'n', 'd', 'u' }; +static const symbol s_1_277[4] = { 'o', 'r', 'd', 'u' }; +static const symbol s_1_278[4] = { 'l', 'e', 'k', 'u' }; +static const symbol s_1_279[4] = { 'b', 'u', 'r', 'u' }; +static const symbol s_1_280[4] = { 'd', 'u', 'r', 'u' }; +static const symbol s_1_281[3] = { 't', 's', 'u' }; +static const symbol s_1_282[2] = { 't', 'u' }; +static const symbol s_1_283[4] = { 't', 'a', 't', 'u' }; +static const symbol s_1_284[5] = { 'm', 'e', 'n', 't', 'u' }; +static const symbol s_1_285[4] = { 'e', 's', 't', 'u' }; +static const symbol s_1_286[3] = { 't', 'x', 'u' }; +static const symbol s_1_287[2] = { 'z', 'u' }; +static const symbol s_1_288[3] = { 't', 'z', 'u' }; +static const symbol s_1_289[6] = { 'g', 'i', 'n', 't', 'z', 'u' }; +static const symbol s_1_290[1] = { 'z' }; +static const symbol s_1_291[2] = { 'e', 'z' }; +static const symbol s_1_292[4] = { 'e', 'r', 'o', 'z' }; +static const symbol s_1_293[2] = { 't', 'z' }; +static const symbol s_1_294[5] = { 'k', 'o', 'i', 't', 'z' }; + +static const struct among a_1[295] = +{ +/* 0 */ { 3, s_1_0, -1, 1, 0}, +/* 1 */ { 4, s_1_1, 0, 1, 0}, +/* 2 */ { 4, s_1_2, -1, 1, 0}, +/* 3 */ { 5, s_1_3, -1, 1, 0}, +/* 4 */ { 5, s_1_4, -1, 1, 0}, +/* 5 */ { 5, s_1_5, -1, 1, 0}, +/* 6 */ { 5, s_1_6, -1, 1, 0}, +/* 7 */ { 6, s_1_7, 6, 1, 0}, +/* 8 */ { 6, s_1_8, 6, 1, 0}, +/* 9 */ { 5, s_1_9, -1, 1, 0}, +/* 10 */ { 5, s_1_10, -1, 1, 0}, +/* 11 */ { 6, s_1_11, 10, 1, 0}, +/* 12 */ { 5, s_1_12, -1, 1, 0}, +/* 13 */ { 4, s_1_13, -1, 1, 0}, +/* 14 */ { 5, s_1_14, -1, 1, 0}, +/* 15 */ { 3, s_1_15, -1, 1, 0}, +/* 16 */ { 4, s_1_16, 15, 1, 0}, +/* 17 */ { 6, s_1_17, 15, 1, 0}, +/* 18 */ { 4, s_1_18, 15, 1, 0}, +/* 19 */ { 5, s_1_19, 18, 1, 0}, +/* 20 */ { 3, s_1_20, -1, 1, 0}, +/* 21 */ { 6, s_1_21, -1, 1, 0}, +/* 22 */ { 3, s_1_22, -1, 1, 0}, +/* 23 */ { 5, s_1_23, 22, 1, 0}, +/* 24 */ { 5, s_1_24, 22, 1, 0}, +/* 25 */ { 5, s_1_25, 22, 1, 0}, +/* 26 */ { 5, s_1_26, -1, 1, 0}, +/* 27 */ { 2, s_1_27, -1, 1, 0}, +/* 28 */ { 4, s_1_28, 27, 1, 0}, +/* 29 */ { 4, s_1_29, -1, 1, 0}, +/* 30 */ { 5, s_1_30, -1, 1, 0}, +/* 31 */ { 6, s_1_31, 30, 1, 0}, +/* 32 */ { 6, s_1_32, -1, 1, 0}, +/* 33 */ { 6, s_1_33, -1, 1, 0}, +/* 34 */ { 4, s_1_34, -1, 1, 0}, +/* 35 */ { 4, s_1_35, -1, 1, 0}, +/* 36 */ { 5, s_1_36, 35, 1, 0}, +/* 37 */ { 5, s_1_37, 35, 1, 0}, +/* 38 */ { 5, s_1_38, -1, 1, 0}, +/* 39 */ { 4, s_1_39, -1, 1, 0}, +/* 40 */ { 3, s_1_40, -1, 1, 0}, +/* 41 */ { 5, s_1_41, 40, 1, 0}, +/* 42 */ { 3, s_1_42, -1, 1, 0}, +/* 43 */ { 4, s_1_43, 42, 1, 0}, +/* 44 */ { 4, s_1_44, -1, 1, 0}, +/* 45 */ { 5, s_1_45, 44, 1, 0}, +/* 46 */ { 5, s_1_46, 44, 1, 0}, +/* 47 */ { 5, s_1_47, 44, 1, 0}, +/* 48 */ { 4, s_1_48, -1, 1, 0}, +/* 49 */ { 5, s_1_49, 48, 1, 0}, +/* 50 */ { 5, s_1_50, 48, 1, 0}, +/* 51 */ { 6, s_1_51, -1, 2, 0}, +/* 52 */ { 6, s_1_52, -1, 1, 0}, +/* 53 */ { 6, s_1_53, -1, 1, 0}, +/* 54 */ { 5, s_1_54, -1, 1, 0}, +/* 55 */ { 4, s_1_55, -1, 1, 0}, +/* 56 */ { 3, s_1_56, -1, 1, 0}, +/* 57 */ { 4, s_1_57, -1, 1, 0}, +/* 58 */ { 5, s_1_58, -1, 1, 0}, +/* 59 */ { 6, s_1_59, -1, 1, 0}, +/* 60 */ { 2, s_1_60, -1, 1, 0}, +/* 61 */ { 4, s_1_61, 60, 3, 0}, +/* 62 */ { 5, s_1_62, 60, 10, 0}, +/* 63 */ { 3, s_1_63, 60, 1, 0}, +/* 64 */ { 3, s_1_64, 60, 1, 0}, +/* 65 */ { 3, s_1_65, 60, 1, 0}, +/* 66 */ { 6, s_1_66, -1, 1, 0}, +/* 67 */ { 4, s_1_67, -1, 1, 0}, +/* 68 */ { 5, s_1_68, -1, 1, 0}, +/* 69 */ { 5, s_1_69, -1, 1, 0}, +/* 70 */ { 4, s_1_70, -1, 1, 0}, +/* 71 */ { 3, s_1_71, -1, 1, 0}, +/* 72 */ { 2, s_1_72, -1, 1, 0}, +/* 73 */ { 4, s_1_73, 72, 1, 0}, +/* 74 */ { 3, s_1_74, 72, 1, 0}, +/* 75 */ { 7, s_1_75, 74, 1, 0}, +/* 76 */ { 7, s_1_76, 74, 1, 0}, +/* 77 */ { 6, s_1_77, 74, 1, 0}, +/* 78 */ { 5, s_1_78, 72, 1, 0}, +/* 79 */ { 6, s_1_79, 78, 1, 0}, +/* 80 */ { 4, s_1_80, 72, 1, 0}, +/* 81 */ { 4, s_1_81, 72, 1, 0}, +/* 82 */ { 5, s_1_82, 72, 1, 0}, +/* 83 */ { 3, s_1_83, 72, 1, 0}, +/* 84 */ { 4, s_1_84, 83, 1, 0}, +/* 85 */ { 5, s_1_85, 83, 1, 0}, +/* 86 */ { 6, s_1_86, 85, 1, 0}, +/* 87 */ { 5, s_1_87, -1, 1, 0}, +/* 88 */ { 6, s_1_88, 87, 1, 0}, +/* 89 */ { 4, s_1_89, -1, 1, 0}, +/* 90 */ { 4, s_1_90, -1, 1, 0}, +/* 91 */ { 3, s_1_91, -1, 1, 0}, +/* 92 */ { 5, s_1_92, 91, 1, 0}, +/* 93 */ { 4, s_1_93, 91, 1, 0}, +/* 94 */ { 3, s_1_94, -1, 1, 0}, +/* 95 */ { 5, s_1_95, 94, 1, 0}, +/* 96 */ { 4, s_1_96, -1, 1, 0}, +/* 97 */ { 5, s_1_97, 96, 1, 0}, +/* 98 */ { 5, s_1_98, 96, 1, 0}, +/* 99 */ { 4, s_1_99, -1, 1, 0}, +/*100 */ { 4, s_1_100, -1, 1, 0}, +/*101 */ { 4, s_1_101, -1, 1, 0}, +/*102 */ { 3, s_1_102, -1, 1, 0}, +/*103 */ { 4, s_1_103, 102, 1, 0}, +/*104 */ { 4, s_1_104, 102, 1, 0}, +/*105 */ { 4, s_1_105, -1, 1, 0}, +/*106 */ { 4, s_1_106, -1, 1, 0}, +/*107 */ { 4, s_1_107, -1, 1, 0}, +/*108 */ { 2, s_1_108, -1, 1, 0}, +/*109 */ { 3, s_1_109, 108, 1, 0}, +/*110 */ { 4, s_1_110, 109, 1, 0}, +/*111 */ { 5, s_1_111, 109, 1, 0}, +/*112 */ { 5, s_1_112, 109, 1, 0}, +/*113 */ { 4, s_1_113, 109, 1, 0}, +/*114 */ { 5, s_1_114, 113, 1, 0}, +/*115 */ { 5, s_1_115, 109, 1, 0}, +/*116 */ { 4, s_1_116, 108, 1, 0}, +/*117 */ { 4, s_1_117, 108, 1, 0}, +/*118 */ { 4, s_1_118, 108, 1, 0}, +/*119 */ { 3, s_1_119, 108, 2, 0}, +/*120 */ { 6, s_1_120, 108, 1, 0}, +/*121 */ { 5, s_1_121, 108, 1, 0}, +/*122 */ { 3, s_1_122, 108, 1, 0}, +/*123 */ { 2, s_1_123, -1, 1, 0}, +/*124 */ { 3, s_1_124, 123, 1, 0}, +/*125 */ { 2, s_1_125, -1, 1, 0}, +/*126 */ { 3, s_1_126, 125, 1, 0}, +/*127 */ { 4, s_1_127, 126, 1, 0}, +/*128 */ { 3, s_1_128, 125, 1, 0}, +/*129 */ { 3, s_1_129, -1, 1, 0}, +/*130 */ { 6, s_1_130, 129, 1, 0}, +/*131 */ { 5, s_1_131, 129, 1, 0}, +/*132 */ { 5, s_1_132, -1, 1, 0}, +/*133 */ { 5, s_1_133, -1, 1, 0}, +/*134 */ { 5, s_1_134, -1, 1, 0}, +/*135 */ { 4, s_1_135, -1, 1, 0}, +/*136 */ { 3, s_1_136, -1, 1, 0}, +/*137 */ { 6, s_1_137, 136, 1, 0}, +/*138 */ { 5, s_1_138, 136, 1, 0}, +/*139 */ { 4, s_1_139, -1, 1, 0}, +/*140 */ { 3, s_1_140, -1, 1, 0}, +/*141 */ { 4, s_1_141, 140, 1, 0}, +/*142 */ { 2, s_1_142, -1, 1, 0}, +/*143 */ { 3, s_1_143, 142, 1, 0}, +/*144 */ { 5, s_1_144, 142, 1, 0}, +/*145 */ { 3, s_1_145, 142, 2, 0}, +/*146 */ { 6, s_1_146, 145, 1, 0}, +/*147 */ { 5, s_1_147, 145, 1, 0}, +/*148 */ { 6, s_1_148, 145, 1, 0}, +/*149 */ { 6, s_1_149, 145, 1, 0}, +/*150 */ { 6, s_1_150, 145, 1, 0}, +/*151 */ { 4, s_1_151, -1, 1, 0}, +/*152 */ { 4, s_1_152, -1, 1, 0}, +/*153 */ { 4, s_1_153, -1, 1, 0}, +/*154 */ { 4, s_1_154, -1, 1, 0}, +/*155 */ { 5, s_1_155, 154, 1, 0}, +/*156 */ { 5, s_1_156, 154, 1, 0}, +/*157 */ { 4, s_1_157, -1, 1, 0}, +/*158 */ { 2, s_1_158, -1, 1, 0}, +/*159 */ { 4, s_1_159, -1, 1, 0}, +/*160 */ { 5, s_1_160, 159, 1, 0}, +/*161 */ { 4, s_1_161, -1, 1, 0}, +/*162 */ { 3, s_1_162, -1, 1, 0}, +/*163 */ { 4, s_1_163, -1, 1, 0}, +/*164 */ { 2, s_1_164, -1, 1, 0}, +/*165 */ { 5, s_1_165, 164, 1, 0}, +/*166 */ { 3, s_1_166, 164, 1, 0}, +/*167 */ { 4, s_1_167, 166, 1, 0}, +/*168 */ { 2, s_1_168, -1, 1, 0}, +/*169 */ { 5, s_1_169, -1, 1, 0}, +/*170 */ { 2, s_1_170, -1, 1, 0}, +/*171 */ { 4, s_1_171, 170, 1, 0}, +/*172 */ { 4, s_1_172, 170, 1, 0}, +/*173 */ { 4, s_1_173, 170, 1, 0}, +/*174 */ { 4, s_1_174, -1, 1, 0}, +/*175 */ { 3, s_1_175, -1, 1, 0}, +/*176 */ { 2, s_1_176, -1, 1, 0}, +/*177 */ { 4, s_1_177, 176, 1, 0}, +/*178 */ { 5, s_1_178, 177, 1, 0}, +/*179 */ { 5, s_1_179, 176, 8, 0}, +/*180 */ { 5, s_1_180, 176, 1, 0}, +/*181 */ { 5, s_1_181, 176, 1, 0}, +/*182 */ { 3, s_1_182, -1, 1, 0}, +/*183 */ { 3, s_1_183, -1, 1, 0}, +/*184 */ { 4, s_1_184, 183, 1, 0}, +/*185 */ { 4, s_1_185, 183, 1, 0}, +/*186 */ { 4, s_1_186, -1, 1, 0}, +/*187 */ { 3, s_1_187, -1, 1, 0}, +/*188 */ { 2, s_1_188, -1, 1, 0}, +/*189 */ { 4, s_1_189, 188, 1, 0}, +/*190 */ { 2, s_1_190, -1, 1, 0}, +/*191 */ { 3, s_1_191, 190, 1, 0}, +/*192 */ { 3, s_1_192, 190, 1, 0}, +/*193 */ { 3, s_1_193, -1, 1, 0}, +/*194 */ { 4, s_1_194, 193, 1, 0}, +/*195 */ { 4, s_1_195, 193, 1, 0}, +/*196 */ { 4, s_1_196, 193, 1, 0}, +/*197 */ { 5, s_1_197, -1, 2, 0}, +/*198 */ { 5, s_1_198, -1, 1, 0}, +/*199 */ { 5, s_1_199, -1, 1, 0}, +/*200 */ { 4, s_1_200, -1, 1, 0}, +/*201 */ { 3, s_1_201, -1, 1, 0}, +/*202 */ { 2, s_1_202, -1, 1, 0}, +/*203 */ { 5, s_1_203, -1, 1, 0}, +/*204 */ { 3, s_1_204, -1, 1, 0}, +/*205 */ { 2, s_1_205, -1, 1, 0}, +/*206 */ { 2, s_1_206, -1, 1, 0}, +/*207 */ { 5, s_1_207, -1, 1, 0}, +/*208 */ { 5, s_1_208, -1, 1, 0}, +/*209 */ { 3, s_1_209, -1, 1, 0}, +/*210 */ { 4, s_1_210, 209, 1, 0}, +/*211 */ { 3, s_1_211, -1, 1, 0}, +/*212 */ { 3, s_1_212, -1, 1, 0}, +/*213 */ { 4, s_1_213, 212, 1, 0}, +/*214 */ { 2, s_1_214, -1, 4, 0}, +/*215 */ { 3, s_1_215, 214, 2, 0}, +/*216 */ { 6, s_1_216, 215, 1, 0}, +/*217 */ { 6, s_1_217, 215, 1, 0}, +/*218 */ { 5, s_1_218, 215, 1, 0}, +/*219 */ { 3, s_1_219, 214, 4, 0}, +/*220 */ { 4, s_1_220, 214, 4, 0}, +/*221 */ { 4, s_1_221, -1, 1, 0}, +/*222 */ { 5, s_1_222, 221, 1, 0}, +/*223 */ { 3, s_1_223, -1, 1, 0}, +/*224 */ { 3, s_1_224, -1, 1, 0}, +/*225 */ { 3, s_1_225, -1, 1, 0}, +/*226 */ { 4, s_1_226, -1, 1, 0}, +/*227 */ { 5, s_1_227, 226, 1, 0}, +/*228 */ { 5, s_1_228, -1, 1, 0}, +/*229 */ { 4, s_1_229, -1, 1, 0}, +/*230 */ { 5, s_1_230, 229, 1, 0}, +/*231 */ { 2, s_1_231, -1, 1, 0}, +/*232 */ { 3, s_1_232, 231, 1, 0}, +/*233 */ { 3, s_1_233, -1, 1, 0}, +/*234 */ { 2, s_1_234, -1, 1, 0}, +/*235 */ { 5, s_1_235, 234, 5, 0}, +/*236 */ { 4, s_1_236, 234, 1, 0}, +/*237 */ { 5, s_1_237, 236, 1, 0}, +/*238 */ { 3, s_1_238, 234, 1, 0}, +/*239 */ { 6, s_1_239, 234, 1, 0}, +/*240 */ { 3, s_1_240, 234, 1, 0}, +/*241 */ { 4, s_1_241, 234, 1, 0}, +/*242 */ { 8, s_1_242, 241, 6, 0}, +/*243 */ { 3, s_1_243, 234, 1, 0}, +/*244 */ { 2, s_1_244, -1, 1, 0}, +/*245 */ { 4, s_1_245, 244, 1, 0}, +/*246 */ { 2, s_1_246, -1, 1, 0}, +/*247 */ { 3, s_1_247, 246, 1, 0}, +/*248 */ { 5, s_1_248, 247, 9, 0}, +/*249 */ { 4, s_1_249, 247, 1, 0}, +/*250 */ { 4, s_1_250, 247, 1, 0}, +/*251 */ { 3, s_1_251, 246, 1, 0}, +/*252 */ { 4, s_1_252, 246, 1, 0}, +/*253 */ { 3, s_1_253, 246, 1, 0}, +/*254 */ { 3, s_1_254, -1, 1, 0}, +/*255 */ { 2, s_1_255, -1, 1, 0}, +/*256 */ { 3, s_1_256, 255, 1, 0}, +/*257 */ { 3, s_1_257, 255, 1, 0}, +/*258 */ { 3, s_1_258, -1, 1, 0}, +/*259 */ { 3, s_1_259, -1, 1, 0}, +/*260 */ { 6, s_1_260, 259, 1, 0}, +/*261 */ { 3, s_1_261, -1, 1, 0}, +/*262 */ { 2, s_1_262, -1, 1, 0}, +/*263 */ { 2, s_1_263, -1, 1, 0}, +/*264 */ { 3, s_1_264, 263, 1, 0}, +/*265 */ { 5, s_1_265, 263, 1, 0}, +/*266 */ { 5, s_1_266, 263, 7, 0}, +/*267 */ { 4, s_1_267, 263, 1, 0}, +/*268 */ { 4, s_1_268, 263, 1, 0}, +/*269 */ { 3, s_1_269, 263, 1, 0}, +/*270 */ { 4, s_1_270, 263, 1, 0}, +/*271 */ { 2, s_1_271, -1, 2, 0}, +/*272 */ { 3, s_1_272, 271, 1, 0}, +/*273 */ { 2, s_1_273, -1, 1, 0}, +/*274 */ { 3, s_1_274, -1, 1, 0}, +/*275 */ { 2, s_1_275, -1, 1, 0}, +/*276 */ { 5, s_1_276, 275, 1, 0}, +/*277 */ { 4, s_1_277, 275, 1, 0}, +/*278 */ { 4, s_1_278, -1, 1, 0}, +/*279 */ { 4, s_1_279, -1, 2, 0}, +/*280 */ { 4, s_1_280, -1, 1, 0}, +/*281 */ { 3, s_1_281, -1, 1, 0}, +/*282 */ { 2, s_1_282, -1, 1, 0}, +/*283 */ { 4, s_1_283, 282, 4, 0}, +/*284 */ { 5, s_1_284, 282, 1, 0}, +/*285 */ { 4, s_1_285, 282, 1, 0}, +/*286 */ { 3, s_1_286, -1, 1, 0}, +/*287 */ { 2, s_1_287, -1, 1, 0}, +/*288 */ { 3, s_1_288, 287, 1, 0}, +/*289 */ { 6, s_1_289, 288, 1, 0}, +/*290 */ { 1, s_1_290, -1, 1, 0}, +/*291 */ { 2, s_1_291, 290, 1, 0}, +/*292 */ { 4, s_1_292, 290, 1, 0}, +/*293 */ { 2, s_1_293, 290, 1, 0}, +/*294 */ { 5, s_1_294, 293, 1, 0} +}; + +static const symbol s_2_0[4] = { 'z', 'l', 'e', 'a' }; +static const symbol s_2_1[5] = { 'k', 'e', 'r', 'i', 'a' }; +static const symbol s_2_2[2] = { 'l', 'a' }; +static const symbol s_2_3[3] = { 'e', 'r', 'a' }; +static const symbol s_2_4[4] = { 'd', 'a', 'd', 'e' }; +static const symbol s_2_5[4] = { 't', 'a', 'd', 'e' }; +static const symbol s_2_6[4] = { 'd', 'a', 't', 'e' }; +static const symbol s_2_7[4] = { 't', 'a', 't', 'e' }; +static const symbol s_2_8[2] = { 'g', 'i' }; +static const symbol s_2_9[2] = { 'k', 'i' }; +static const symbol s_2_10[2] = { 'i', 'k' }; +static const symbol s_2_11[5] = { 'l', 'a', 'n', 'i', 'k' }; +static const symbol s_2_12[3] = { 'r', 'i', 'k' }; +static const symbol s_2_13[5] = { 'l', 'a', 'r', 'i', 'k' }; +static const symbol s_2_14[4] = { 'z', 't', 'i', 'k' }; +static const symbol s_2_15[2] = { 'g', 'o' }; +static const symbol s_2_16[2] = { 'r', 'o' }; +static const symbol s_2_17[3] = { 'e', 'r', 'o' }; +static const symbol s_2_18[2] = { 't', 'o' }; + +static const struct among a_2[19] = +{ +/* 0 */ { 4, s_2_0, -1, 2, 0}, +/* 1 */ { 5, s_2_1, -1, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, -1, 1, 0}, +/* 4 */ { 4, s_2_4, -1, 1, 0}, +/* 5 */ { 4, s_2_5, -1, 1, 0}, +/* 6 */ { 4, s_2_6, -1, 1, 0}, +/* 7 */ { 4, s_2_7, -1, 1, 0}, +/* 8 */ { 2, s_2_8, -1, 1, 0}, +/* 9 */ { 2, s_2_9, -1, 1, 0}, +/* 10 */ { 2, s_2_10, -1, 1, 0}, +/* 11 */ { 5, s_2_11, 10, 1, 0}, +/* 12 */ { 3, s_2_12, 10, 1, 0}, +/* 13 */ { 5, s_2_13, 12, 1, 0}, +/* 14 */ { 4, s_2_14, 10, 1, 0}, +/* 15 */ { 2, s_2_15, -1, 1, 0}, +/* 16 */ { 2, s_2_16, -1, 1, 0}, +/* 17 */ { 3, s_2_17, 16, 1, 0}, +/* 18 */ { 2, s_2_18, -1, 1, 0} +}; + +static const unsigned char g_v[] = { 17, 65, 16 }; + +static const symbol s_0[] = { 'a', 't', 's', 'e', 'd', 'e', 'n' }; +static const symbol s_1[] = { 'a', 'r', 'a', 'b', 'e', 'r', 'a' }; +static const symbol s_2[] = { 'b', 'a', 'd', 'i', 't', 'u' }; +static const symbol s_3[] = { 'j', 'o', 'k' }; +static const symbol s_4[] = { 't', 'r', 'a' }; +static const symbol s_5[] = { 'm', 'i', 'n', 'u', 't', 'u' }; +static const symbol s_6[] = { 'z', 'e', 'h', 'a', 'r' }; +static const symbol s_7[] = { 'g', 'e', 'l', 'd', 'i' }; +static const symbol s_8[] = { 'i', 'g', 'a', 'r', 'o' }; +static const symbol s_9[] = { 'a', 'u', 'r', 'k', 'a' }; +static const symbol s_10[] = { 'z' }; + +static int r_mark_regions(struct SN_env * z) { /* forwardmode */ + z->I[0] = z->l; /* $pV = , line 25 */ + z->I[1] = z->l; /* $p1 = , line 26 */ + z->I[2] = z->l; /* $p2 = , line 27 */ + { int c1 = z->c; /* do, line 29 */ + { int c2 = z->c; /* or, line 31 */ + if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab2; /* grouping v, line 30 */ + { int c3 = z->c; /* or, line 30 */ + if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab4; /* non v, line 30 */ + { /* gopast */ /* grouping v, line 30 */ + int ret = out_grouping_U(z, g_v, 97, 117, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab2; /* grouping v, line 30 */ + { /* gopast */ /* non v, line 30 */ + int ret = in_grouping_U(z, g_v, 97, 117, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab0; /* non v, line 32 */ + { int c4 = z->c; /* or, line 32 */ + if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab6; /* non v, line 32 */ + { /* gopast */ /* grouping v, line 32 */ + int ret = out_grouping_U(z, g_v, 97, 117, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab0; /* grouping v, line 32 */ + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 32 */ + } + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 33 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 35 */ + { /* gopast */ /* grouping v, line 36 */ + int ret = out_grouping_U(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 36 */ + int ret = in_grouping_U(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 36 */ + { /* gopast */ /* grouping v, line 37 */ + int ret = out_grouping_U(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 37 */ + int ret = in_grouping_U(z, g_v, 97, 117, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 37 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_RV(struct SN_env * z) { /* backwardmode */ + if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 43 */ + return 1; +} + +static int r_R2(struct SN_env * z) { /* backwardmode */ + if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 44 */ + return 1; +} + +static int r_R1(struct SN_env * z) { /* backwardmode */ + if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 45 */ + return 1; +} + +static int r_aditzak(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 48 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((70566434 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 48 */ + among_var = find_among_b(z, a_0, 109); + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 48 */ + switch (among_var) { /* among, line 48 */ + case 1: + { int ret = r_RV(z); /* call RV, line 59 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 59 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 61 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 61 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 7, s_0); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 7, s_1); /* <-, line 65 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 6, s_2); /* <-, line 67 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_izenak(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 73 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((71162402 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 73 */ + among_var = find_among_b(z, a_1, 295); + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 73 */ + switch (among_var) { /* among, line 73 */ + case 1: + { int ret = r_RV(z); /* call RV, line 103 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 103 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 105 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 105 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 3, s_3); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R1(z); /* call R1, line 109 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 109 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_4); /* <-, line 111 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 6, s_5); /* <-, line 113 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 5, s_6); /* <-, line 115 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 5, s_7); /* <-, line 117 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 5, s_8); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 5, s_9); /* <-, line 121 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_adjetiboak(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 126 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((35362 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 126 */ + among_var = find_among_b(z, a_2, 19); + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 126 */ + switch (among_var) { /* among, line 126 */ + case 1: + { int ret = r_RV(z); /* call RV, line 129 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 129 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 131 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int basque_UTF_8_stem(struct SN_env * z) { /* forwardmode */ + /* do, line 138 */ + { int ret = r_mark_regions(z); /* call mark_regions, line 138 */ + if (ret < 0) return ret; + } + z->lb = z->c; z->c = z->l; /* backwards, line 139 */ + +/* repeat, line 140 */ + + while(1) { int m1 = z->l - z->c; (void)m1; + { int ret = r_aditzak(z); /* call aditzak, line 140 */ + if (ret == 0) goto lab0; + if (ret < 0) return ret; + } + continue; + lab0: + z->c = z->l - m1; + break; + } +/* repeat, line 141 */ + + while(1) { int m2 = z->l - z->c; (void)m2; + { int ret = r_izenak(z); /* call izenak, line 141 */ + if (ret == 0) goto lab1; + if (ret < 0) return ret; + } + continue; + lab1: + z->c = z->l - m2; + break; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 142 */ + { int ret = r_adjetiboak(z); /* call adjetiboak, line 142 */ + if (ret < 0) return ret; + } + z->c = z->l - m3; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * basque_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void basque_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_catalan.c b/src/backend/snowball/libstemmer/stem_UTF_8_catalan.c new file mode 100644 index 0000000000000..23cf4e534bd1c --- /dev/null +++ b/src/backend/snowball/libstemmer/stem_UTF_8_catalan.c @@ -0,0 +1,1450 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#include "header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int catalan_UTF_8_stem(struct SN_env * z); +#ifdef __cplusplus +} +#endif +static int r_residual_suffix(struct SN_env * z); +static int r_verb_suffix(struct SN_env * z); +static int r_standard_suffix(struct SN_env * z); +static int r_attached_pronoun(struct SN_env * z); +static int r_R2(struct SN_env * z); +static int r_R1(struct SN_env * z); +static int r_mark_regions(struct SN_env * z); +static int r_cleaning(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * catalan_UTF_8_create_env(void); +extern void catalan_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[2] = { 0xC2, 0xB7 }; +static const symbol s_0_2[2] = { 0xC3, 0xA0 }; +static const symbol s_0_3[2] = { 0xC3, 0xA1 }; +static const symbol s_0_4[2] = { 0xC3, 0xA8 }; +static const symbol s_0_5[2] = { 0xC3, 0xA9 }; +static const symbol s_0_6[2] = { 0xC3, 0xAC }; +static const symbol s_0_7[2] = { 0xC3, 0xAD }; +static const symbol s_0_8[2] = { 0xC3, 0xAF }; +static const symbol s_0_9[2] = { 0xC3, 0xB2 }; +static const symbol s_0_10[2] = { 0xC3, 0xB3 }; +static const symbol s_0_11[2] = { 0xC3, 0xBA }; +static const symbol s_0_12[2] = { 0xC3, 0xBC }; + +static const struct among a_0[13] = +{ +/* 0 */ { 0, 0, -1, 7, 0}, +/* 1 */ { 2, s_0_1, 0, 6, 0}, +/* 2 */ { 2, s_0_2, 0, 1, 0}, +/* 3 */ { 2, s_0_3, 0, 1, 0}, +/* 4 */ { 2, s_0_4, 0, 2, 0}, +/* 5 */ { 2, s_0_5, 0, 2, 0}, +/* 6 */ { 2, s_0_6, 0, 3, 0}, +/* 7 */ { 2, s_0_7, 0, 3, 0}, +/* 8 */ { 2, s_0_8, 0, 3, 0}, +/* 9 */ { 2, s_0_9, 0, 4, 0}, +/* 10 */ { 2, s_0_10, 0, 4, 0}, +/* 11 */ { 2, s_0_11, 0, 5, 0}, +/* 12 */ { 2, s_0_12, 0, 5, 0} +}; + +static const symbol s_1_0[2] = { 'l', 'a' }; +static const symbol s_1_1[3] = { '-', 'l', 'a' }; +static const symbol s_1_2[4] = { 's', 'e', 'l', 'a' }; +static const symbol s_1_3[2] = { 'l', 'e' }; +static const symbol s_1_4[2] = { 'm', 'e' }; +static const symbol s_1_5[3] = { '-', 'm', 'e' }; +static const symbol s_1_6[2] = { 's', 'e' }; +static const symbol s_1_7[3] = { '-', 't', 'e' }; +static const symbol s_1_8[2] = { 'h', 'i' }; +static const symbol s_1_9[3] = { '\'', 'h', 'i' }; +static const symbol s_1_10[2] = { 'l', 'i' }; +static const symbol s_1_11[3] = { '-', 'l', 'i' }; +static const symbol s_1_12[2] = { '\'', 'l' }; +static const symbol s_1_13[2] = { '\'', 'm' }; +static const symbol s_1_14[2] = { '-', 'm' }; +static const symbol s_1_15[2] = { '\'', 'n' }; +static const symbol s_1_16[2] = { '-', 'n' }; +static const symbol s_1_17[2] = { 'h', 'o' }; +static const symbol s_1_18[3] = { '\'', 'h', 'o' }; +static const symbol s_1_19[2] = { 'l', 'o' }; +static const symbol s_1_20[4] = { 's', 'e', 'l', 'o' }; +static const symbol s_1_21[2] = { '\'', 's' }; +static const symbol s_1_22[3] = { 'l', 'a', 's' }; +static const symbol s_1_23[5] = { 's', 'e', 'l', 'a', 's' }; +static const symbol s_1_24[3] = { 'l', 'e', 's' }; +static const symbol s_1_25[4] = { '-', 'l', 'e', 's' }; +static const symbol s_1_26[3] = { '\'', 'l', 's' }; +static const symbol s_1_27[3] = { '-', 'l', 's' }; +static const symbol s_1_28[3] = { '\'', 'n', 's' }; +static const symbol s_1_29[3] = { '-', 'n', 's' }; +static const symbol s_1_30[3] = { 'e', 'n', 's' }; +static const symbol s_1_31[3] = { 'l', 'o', 's' }; +static const symbol s_1_32[5] = { 's', 'e', 'l', 'o', 's' }; +static const symbol s_1_33[3] = { 'n', 'o', 's' }; +static const symbol s_1_34[4] = { '-', 'n', 'o', 's' }; +static const symbol s_1_35[3] = { 'v', 'o', 's' }; +static const symbol s_1_36[2] = { 'u', 's' }; +static const symbol s_1_37[3] = { '-', 'u', 's' }; +static const symbol s_1_38[2] = { '\'', 't' }; + +static const struct among a_1[39] = +{ +/* 0 */ { 2, s_1_0, -1, 1, 0}, +/* 1 */ { 3, s_1_1, 0, 1, 0}, +/* 2 */ { 4, s_1_2, 0, 1, 0}, +/* 3 */ { 2, s_1_3, -1, 1, 0}, +/* 4 */ { 2, s_1_4, -1, 1, 0}, +/* 5 */ { 3, s_1_5, 4, 1, 0}, +/* 6 */ { 2, s_1_6, -1, 1, 0}, +/* 7 */ { 3, s_1_7, -1, 1, 0}, +/* 8 */ { 2, s_1_8, -1, 1, 0}, +/* 9 */ { 3, s_1_9, 8, 1, 0}, +/* 10 */ { 2, s_1_10, -1, 1, 0}, +/* 11 */ { 3, s_1_11, 10, 1, 0}, +/* 12 */ { 2, s_1_12, -1, 1, 0}, +/* 13 */ { 2, s_1_13, -1, 1, 0}, +/* 14 */ { 2, s_1_14, -1, 1, 0}, +/* 15 */ { 2, s_1_15, -1, 1, 0}, +/* 16 */ { 2, s_1_16, -1, 1, 0}, +/* 17 */ { 2, s_1_17, -1, 1, 0}, +/* 18 */ { 3, s_1_18, 17, 1, 0}, +/* 19 */ { 2, s_1_19, -1, 1, 0}, +/* 20 */ { 4, s_1_20, 19, 1, 0}, +/* 21 */ { 2, s_1_21, -1, 1, 0}, +/* 22 */ { 3, s_1_22, -1, 1, 0}, +/* 23 */ { 5, s_1_23, 22, 1, 0}, +/* 24 */ { 3, s_1_24, -1, 1, 0}, +/* 25 */ { 4, s_1_25, 24, 1, 0}, +/* 26 */ { 3, s_1_26, -1, 1, 0}, +/* 27 */ { 3, s_1_27, -1, 1, 0}, +/* 28 */ { 3, s_1_28, -1, 1, 0}, +/* 29 */ { 3, s_1_29, -1, 1, 0}, +/* 30 */ { 3, s_1_30, -1, 1, 0}, +/* 31 */ { 3, s_1_31, -1, 1, 0}, +/* 32 */ { 5, s_1_32, 31, 1, 0}, +/* 33 */ { 3, s_1_33, -1, 1, 0}, +/* 34 */ { 4, s_1_34, 33, 1, 0}, +/* 35 */ { 3, s_1_35, -1, 1, 0}, +/* 36 */ { 2, s_1_36, -1, 1, 0}, +/* 37 */ { 3, s_1_37, 36, 1, 0}, +/* 38 */ { 2, s_1_38, -1, 1, 0} +}; + +static const symbol s_2_0[3] = { 'i', 'c', 'a' }; +static const symbol s_2_1[7] = { 'l', 0xC3, 0xB3, 'g', 'i', 'c', 'a' }; +static const symbol s_2_2[4] = { 'e', 'n', 'c', 'a' }; +static const symbol s_2_3[3] = { 'a', 'd', 'a' }; +static const symbol s_2_4[5] = { 'a', 'n', 'c', 'i', 'a' }; +static const symbol s_2_5[5] = { 'e', 'n', 'c', 'i', 'a' }; +static const symbol s_2_6[6] = { 0xC3, 0xA8, 'n', 'c', 'i', 'a' }; +static const symbol s_2_7[5] = { 0xC3, 0xAD, 'c', 'i', 'a' }; +static const symbol s_2_8[5] = { 'l', 'o', 'g', 'i', 'a' }; +static const symbol s_2_9[4] = { 'i', 'n', 'i', 'a' }; +static const symbol s_2_10[6] = { 0xC3, 0xAD, 'i', 'n', 'i', 'a' }; +static const symbol s_2_11[4] = { 'e', 'r', 'i', 'a' }; +static const symbol s_2_12[5] = { 0xC3, 0xA0, 'r', 'i', 'a' }; +static const symbol s_2_13[7] = { 'a', 't', 0xC3, 0xB2, 'r', 'i', 'a' }; +static const symbol s_2_14[4] = { 'a', 'l', 'l', 'a' }; +static const symbol s_2_15[4] = { 'e', 'l', 'l', 'a' }; +static const symbol s_2_16[6] = { 0xC3, 0xAD, 'v', 'o', 'l', 'a' }; +static const symbol s_2_17[3] = { 'i', 'm', 'a' }; +static const symbol s_2_18[7] = { 0xC3, 0xAD, 's', 's', 'i', 'm', 'a' }; +static const symbol s_2_19[9] = { 'q', 'u', 0xC3, 0xAD, 's', 's', 'i', 'm', 'a' }; +static const symbol s_2_20[3] = { 'a', 'n', 'a' }; +static const symbol s_2_21[3] = { 'i', 'n', 'a' }; +static const symbol s_2_22[3] = { 'e', 'r', 'a' }; +static const symbol s_2_23[5] = { 's', 'f', 'e', 'r', 'a' }; +static const symbol s_2_24[3] = { 'o', 'r', 'a' }; +static const symbol s_2_25[4] = { 'd', 'o', 'r', 'a' }; +static const symbol s_2_26[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_2_27[5] = { 'a', 'd', 'u', 'r', 'a' }; +static const symbol s_2_28[3] = { 'e', 's', 'a' }; +static const symbol s_2_29[3] = { 'o', 's', 'a' }; +static const symbol s_2_30[4] = { 'a', 's', 's', 'a' }; +static const symbol s_2_31[4] = { 'e', 's', 's', 'a' }; +static const symbol s_2_32[4] = { 'i', 's', 's', 'a' }; +static const symbol s_2_33[3] = { 'e', 't', 'a' }; +static const symbol s_2_34[3] = { 'i', 't', 'a' }; +static const symbol s_2_35[3] = { 'o', 't', 'a' }; +static const symbol s_2_36[4] = { 'i', 's', 't', 'a' }; +static const symbol s_2_37[7] = { 'i', 'a', 'l', 'i', 's', 't', 'a' }; +static const symbol s_2_38[7] = { 'i', 'o', 'n', 'i', 's', 't', 'a' }; +static const symbol s_2_39[3] = { 'i', 'v', 'a' }; +static const symbol s_2_40[5] = { 'a', 't', 'i', 'v', 'a' }; +static const symbol s_2_41[4] = { 'n', 0xC3, 0xA7, 'a' }; +static const symbol s_2_42[6] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a' }; +static const symbol s_2_43[2] = { 'i', 'c' }; +static const symbol s_2_44[6] = { 0xC3, 0xAD, 's', 't', 'i', 'c' }; +static const symbol s_2_45[3] = { 'e', 'n', 'c' }; +static const symbol s_2_46[3] = { 'e', 's', 'c' }; +static const symbol s_2_47[2] = { 'u', 'd' }; +static const symbol s_2_48[4] = { 'a', 't', 'g', 'e' }; +static const symbol s_2_49[3] = { 'b', 'l', 'e' }; +static const symbol s_2_50[4] = { 'a', 'b', 'l', 'e' }; +static const symbol s_2_51[4] = { 'i', 'b', 'l', 'e' }; +static const symbol s_2_52[4] = { 'i', 's', 'm', 'e' }; +static const symbol s_2_53[7] = { 'i', 'a', 'l', 'i', 's', 'm', 'e' }; +static const symbol s_2_54[7] = { 'i', 'o', 'n', 'i', 's', 'm', 'e' }; +static const symbol s_2_55[6] = { 'i', 'v', 'i', 's', 'm', 'e' }; +static const symbol s_2_56[4] = { 'a', 'i', 'r', 'e' }; +static const symbol s_2_57[4] = { 'i', 'c', 't', 'e' }; +static const symbol s_2_58[4] = { 'i', 's', 't', 'e' }; +static const symbol s_2_59[3] = { 'i', 'c', 'i' }; +static const symbol s_2_60[4] = { 0xC3, 0xAD, 'c', 'i' }; +static const symbol s_2_61[4] = { 'l', 'o', 'g', 'i' }; +static const symbol s_2_62[3] = { 'a', 'r', 'i' }; +static const symbol s_2_63[4] = { 't', 'o', 'r', 'i' }; +static const symbol s_2_64[2] = { 'a', 'l' }; +static const symbol s_2_65[2] = { 'i', 'l' }; +static const symbol s_2_66[3] = { 'a', 'l', 'l' }; +static const symbol s_2_67[3] = { 'e', 'l', 'l' }; +static const symbol s_2_68[5] = { 0xC3, 0xAD, 'v', 'o', 'l' }; +static const symbol s_2_69[4] = { 'i', 's', 'a', 'm' }; +static const symbol s_2_70[5] = { 'i', 's', 's', 'e', 'm' }; +static const symbol s_2_71[6] = { 0xC3, 0xAC, 's', 's', 'e', 'm' }; +static const symbol s_2_72[6] = { 0xC3, 0xAD, 's', 's', 'e', 'm' }; +static const symbol s_2_73[6] = { 0xC3, 0xAD, 's', 's', 'i', 'm' }; +static const symbol s_2_74[8] = { 'q', 'u', 0xC3, 0xAD, 's', 's', 'i', 'm' }; +static const symbol s_2_75[4] = { 'a', 'm', 'e', 'n' }; +static const symbol s_2_76[6] = { 0xC3, 0xAC, 's', 's', 'i', 'n' }; +static const symbol s_2_77[2] = { 'a', 'r' }; +static const symbol s_2_78[6] = { 'i', 'f', 'i', 'c', 'a', 'r' }; +static const symbol s_2_79[4] = { 'e', 'g', 'a', 'r' }; +static const symbol s_2_80[4] = { 'e', 'j', 'a', 'r' }; +static const symbol s_2_81[4] = { 'i', 't', 'a', 'r' }; +static const symbol s_2_82[5] = { 'i', 't', 'z', 'a', 'r' }; +static const symbol s_2_83[3] = { 'f', 'e', 'r' }; +static const symbol s_2_84[2] = { 'o', 'r' }; +static const symbol s_2_85[3] = { 'd', 'o', 'r' }; +static const symbol s_2_86[3] = { 'd', 'u', 'r' }; +static const symbol s_2_87[5] = { 'd', 'o', 'r', 'a', 's' }; +static const symbol s_2_88[3] = { 'i', 'c', 's' }; +static const symbol s_2_89[7] = { 'l', 0xC3, 0xB3, 'g', 'i', 'c', 's' }; +static const symbol s_2_90[3] = { 'u', 'd', 's' }; +static const symbol s_2_91[4] = { 'n', 'c', 'e', 's' }; +static const symbol s_2_92[4] = { 'a', 'd', 'e', 's' }; +static const symbol s_2_93[6] = { 'a', 'n', 'c', 'i', 'e', 's' }; +static const symbol s_2_94[6] = { 'e', 'n', 'c', 'i', 'e', 's' }; +static const symbol s_2_95[7] = { 0xC3, 0xA8, 'n', 'c', 'i', 'e', 's' }; +static const symbol s_2_96[6] = { 0xC3, 0xAD, 'c', 'i', 'e', 's' }; +static const symbol s_2_97[6] = { 'l', 'o', 'g', 'i', 'e', 's' }; +static const symbol s_2_98[5] = { 'i', 'n', 'i', 'e', 's' }; +static const symbol s_2_99[6] = { 0xC3, 0xAD, 'n', 'i', 'e', 's' }; +static const symbol s_2_100[5] = { 'e', 'r', 'i', 'e', 's' }; +static const symbol s_2_101[6] = { 0xC3, 0xA0, 'r', 'i', 'e', 's' }; +static const symbol s_2_102[8] = { 'a', 't', 0xC3, 0xB2, 'r', 'i', 'e', 's' }; +static const symbol s_2_103[4] = { 'b', 'l', 'e', 's' }; +static const symbol s_2_104[5] = { 'a', 'b', 'l', 'e', 's' }; +static const symbol s_2_105[5] = { 'i', 'b', 'l', 'e', 's' }; +static const symbol s_2_106[4] = { 'i', 'm', 'e', 's' }; +static const symbol s_2_107[8] = { 0xC3, 0xAD, 's', 's', 'i', 'm', 'e', 's' }; +static const symbol s_2_108[10] = { 'q', 'u', 0xC3, 0xAD, 's', 's', 'i', 'm', 'e', 's' }; +static const symbol s_2_109[6] = { 'f', 'o', 'r', 'm', 'e', 's' }; +static const symbol s_2_110[5] = { 'i', 's', 'm', 'e', 's' }; +static const symbol s_2_111[8] = { 'i', 'a', 'l', 'i', 's', 'm', 'e', 's' }; +static const symbol s_2_112[4] = { 'i', 'n', 'e', 's' }; +static const symbol s_2_113[4] = { 'e', 'r', 'e', 's' }; +static const symbol s_2_114[4] = { 'o', 'r', 'e', 's' }; +static const symbol s_2_115[5] = { 'd', 'o', 'r', 'e', 's' }; +static const symbol s_2_116[6] = { 'i', 'd', 'o', 'r', 'e', 's' }; +static const symbol s_2_117[5] = { 'd', 'u', 'r', 'e', 's' }; +static const symbol s_2_118[4] = { 'e', 's', 'e', 's' }; +static const symbol s_2_119[4] = { 'o', 's', 'e', 's' }; +static const symbol s_2_120[5] = { 'a', 's', 's', 'e', 's' }; +static const symbol s_2_121[5] = { 'i', 'c', 't', 'e', 's' }; +static const symbol s_2_122[4] = { 'i', 't', 'e', 's' }; +static const symbol s_2_123[4] = { 'o', 't', 'e', 's' }; +static const symbol s_2_124[5] = { 'i', 's', 't', 'e', 's' }; +static const symbol s_2_125[8] = { 'i', 'a', 'l', 'i', 's', 't', 'e', 's' }; +static const symbol s_2_126[8] = { 'i', 'o', 'n', 'i', 's', 't', 'e', 's' }; +static const symbol s_2_127[5] = { 'i', 'q', 'u', 'e', 's' }; +static const symbol s_2_128[9] = { 'l', 0xC3, 0xB3, 'g', 'i', 'q', 'u', 'e', 's' }; +static const symbol s_2_129[4] = { 'i', 'v', 'e', 's' }; +static const symbol s_2_130[6] = { 'a', 't', 'i', 'v', 'e', 's' }; +static const symbol s_2_131[7] = { 'l', 'o', 'g', 0xC3, 0xAD, 'e', 's' }; +static const symbol s_2_132[10] = { 'a', 'l', 'l', 'e', 'n', 'g', 0xC3, 0xBC, 'e', 's' }; +static const symbol s_2_133[4] = { 'i', 'c', 'i', 's' }; +static const symbol s_2_134[5] = { 0xC3, 0xAD, 'c', 'i', 's' }; +static const symbol s_2_135[5] = { 'l', 'o', 'g', 'i', 's' }; +static const symbol s_2_136[4] = { 'a', 'r', 'i', 's' }; +static const symbol s_2_137[5] = { 't', 'o', 'r', 'i', 's' }; +static const symbol s_2_138[2] = { 'l', 's' }; +static const symbol s_2_139[3] = { 'a', 'l', 's' }; +static const symbol s_2_140[4] = { 'e', 'l', 'l', 's' }; +static const symbol s_2_141[3] = { 'i', 'm', 's' }; +static const symbol s_2_142[7] = { 0xC3, 0xAD, 's', 's', 'i', 'm', 's' }; +static const symbol s_2_143[9] = { 'q', 'u', 0xC3, 0xAD, 's', 's', 'i', 'm', 's' }; +static const symbol s_2_144[4] = { 'i', 'o', 'n', 's' }; +static const symbol s_2_145[5] = { 'c', 'i', 'o', 'n', 's' }; +static const symbol s_2_146[6] = { 'a', 'c', 'i', 'o', 'n', 's' }; +static const symbol s_2_147[4] = { 'e', 's', 'o', 's' }; +static const symbol s_2_148[4] = { 'o', 's', 'o', 's' }; +static const symbol s_2_149[5] = { 'a', 's', 's', 'o', 's' }; +static const symbol s_2_150[5] = { 'i', 's', 's', 'o', 's' }; +static const symbol s_2_151[3] = { 'e', 'r', 's' }; +static const symbol s_2_152[3] = { 'o', 'r', 's' }; +static const symbol s_2_153[4] = { 'd', 'o', 'r', 's' }; +static const symbol s_2_154[5] = { 'a', 'd', 'o', 'r', 's' }; +static const symbol s_2_155[5] = { 'i', 'd', 'o', 'r', 's' }; +static const symbol s_2_156[3] = { 'a', 't', 's' }; +static const symbol s_2_157[5] = { 'i', 't', 'a', 't', 's' }; +static const symbol s_2_158[8] = { 'b', 'i', 'l', 'i', 't', 'a', 't', 's' }; +static const symbol s_2_159[7] = { 'i', 'v', 'i', 't', 'a', 't', 's' }; +static const symbol s_2_160[9] = { 'a', 't', 'i', 'v', 'i', 't', 'a', 't', 's' }; +static const symbol s_2_161[6] = { 0xC3, 0xAF, 't', 'a', 't', 's' }; +static const symbol s_2_162[3] = { 'e', 't', 's' }; +static const symbol s_2_163[4] = { 'a', 'n', 't', 's' }; +static const symbol s_2_164[4] = { 'e', 'n', 't', 's' }; +static const symbol s_2_165[5] = { 'm', 'e', 'n', 't', 's' }; +static const symbol s_2_166[6] = { 'a', 'm', 'e', 'n', 't', 's' }; +static const symbol s_2_167[3] = { 'o', 't', 's' }; +static const symbol s_2_168[3] = { 'u', 't', 's' }; +static const symbol s_2_169[3] = { 'i', 'u', 's' }; +static const symbol s_2_170[5] = { 't', 'r', 'i', 'u', 's' }; +static const symbol s_2_171[5] = { 'a', 't', 'i', 'u', 's' }; +static const symbol s_2_172[3] = { 0xC3, 0xA8, 's' }; +static const symbol s_2_173[3] = { 0xC3, 0xA9, 's' }; +static const symbol s_2_174[3] = { 0xC3, 0xAD, 's' }; +static const symbol s_2_175[4] = { 'd', 0xC3, 0xAD, 's' }; +static const symbol s_2_176[3] = { 0xC3, 0xB3, 's' }; +static const symbol s_2_177[4] = { 'i', 't', 'a', 't' }; +static const symbol s_2_178[7] = { 'b', 'i', 'l', 'i', 't', 'a', 't' }; +static const symbol s_2_179[6] = { 'i', 'v', 'i', 't', 'a', 't' }; +static const symbol s_2_180[8] = { 'a', 't', 'i', 'v', 'i', 't', 'a', 't' }; +static const symbol s_2_181[5] = { 0xC3, 0xAF, 't', 'a', 't' }; +static const symbol s_2_182[2] = { 'e', 't' }; +static const symbol s_2_183[3] = { 'a', 'n', 't' }; +static const symbol s_2_184[3] = { 'e', 'n', 't' }; +static const symbol s_2_185[4] = { 'i', 'e', 'n', 't' }; +static const symbol s_2_186[4] = { 'm', 'e', 'n', 't' }; +static const symbol s_2_187[5] = { 'a', 'm', 'e', 'n', 't' }; +static const symbol s_2_188[7] = { 'i', 's', 'a', 'm', 'e', 'n', 't' }; +static const symbol s_2_189[2] = { 'o', 't' }; +static const symbol s_2_190[5] = { 'i', 's', 's', 'e', 'u' }; +static const symbol s_2_191[6] = { 0xC3, 0xAC, 's', 's', 'e', 'u' }; +static const symbol s_2_192[6] = { 0xC3, 0xAD, 's', 's', 'e', 'u' }; +static const symbol s_2_193[4] = { 't', 'r', 'i', 'u' }; +static const symbol s_2_194[6] = { 0xC3, 0xAD, 's', 's', 'i', 'u' }; +static const symbol s_2_195[4] = { 'a', 't', 'i', 'u' }; +static const symbol s_2_196[2] = { 0xC3, 0xB3 }; +static const symbol s_2_197[3] = { 'i', 0xC3, 0xB3 }; +static const symbol s_2_198[4] = { 'c', 'i', 0xC3, 0xB3 }; +static const symbol s_2_199[5] = { 'a', 'c', 'i', 0xC3, 0xB3 }; + +static const struct among a_2[200] = +{ +/* 0 */ { 3, s_2_0, -1, 4, 0}, +/* 1 */ { 7, s_2_1, 0, 3, 0}, +/* 2 */ { 4, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, -1, 2, 0}, +/* 4 */ { 5, s_2_4, -1, 1, 0}, +/* 5 */ { 5, s_2_5, -1, 1, 0}, +/* 6 */ { 6, s_2_6, -1, 1, 0}, +/* 7 */ { 5, s_2_7, -1, 1, 0}, +/* 8 */ { 5, s_2_8, -1, 3, 0}, +/* 9 */ { 4, s_2_9, -1, 1, 0}, +/* 10 */ { 6, s_2_10, 9, 1, 0}, +/* 11 */ { 4, s_2_11, -1, 1, 0}, +/* 12 */ { 5, s_2_12, -1, 1, 0}, +/* 13 */ { 7, s_2_13, -1, 1, 0}, +/* 14 */ { 4, s_2_14, -1, 1, 0}, +/* 15 */ { 4, s_2_15, -1, 1, 0}, +/* 16 */ { 6, s_2_16, -1, 1, 0}, +/* 17 */ { 3, s_2_17, -1, 1, 0}, +/* 18 */ { 7, s_2_18, 17, 1, 0}, +/* 19 */ { 9, s_2_19, 18, 5, 0}, +/* 20 */ { 3, s_2_20, -1, 1, 0}, +/* 21 */ { 3, s_2_21, -1, 1, 0}, +/* 22 */ { 3, s_2_22, -1, 1, 0}, +/* 23 */ { 5, s_2_23, 22, 1, 0}, +/* 24 */ { 3, s_2_24, -1, 1, 0}, +/* 25 */ { 4, s_2_25, 24, 1, 0}, +/* 26 */ { 5, s_2_26, 25, 1, 0}, +/* 27 */ { 5, s_2_27, -1, 1, 0}, +/* 28 */ { 3, s_2_28, -1, 1, 0}, +/* 29 */ { 3, s_2_29, -1, 1, 0}, +/* 30 */ { 4, s_2_30, -1, 1, 0}, +/* 31 */ { 4, s_2_31, -1, 1, 0}, +/* 32 */ { 4, s_2_32, -1, 1, 0}, +/* 33 */ { 3, s_2_33, -1, 1, 0}, +/* 34 */ { 3, s_2_34, -1, 1, 0}, +/* 35 */ { 3, s_2_35, -1, 1, 0}, +/* 36 */ { 4, s_2_36, -1, 1, 0}, +/* 37 */ { 7, s_2_37, 36, 1, 0}, +/* 38 */ { 7, s_2_38, 36, 1, 0}, +/* 39 */ { 3, s_2_39, -1, 1, 0}, +/* 40 */ { 5, s_2_40, 39, 1, 0}, +/* 41 */ { 4, s_2_41, -1, 1, 0}, +/* 42 */ { 6, s_2_42, -1, 3, 0}, +/* 43 */ { 2, s_2_43, -1, 4, 0}, +/* 44 */ { 6, s_2_44, 43, 1, 0}, +/* 45 */ { 3, s_2_45, -1, 1, 0}, +/* 46 */ { 3, s_2_46, -1, 1, 0}, +/* 47 */ { 2, s_2_47, -1, 1, 0}, +/* 48 */ { 4, s_2_48, -1, 1, 0}, +/* 49 */ { 3, s_2_49, -1, 1, 0}, +/* 50 */ { 4, s_2_50, 49, 1, 0}, +/* 51 */ { 4, s_2_51, 49, 1, 0}, +/* 52 */ { 4, s_2_52, -1, 1, 0}, +/* 53 */ { 7, s_2_53, 52, 1, 0}, +/* 54 */ { 7, s_2_54, 52, 1, 0}, +/* 55 */ { 6, s_2_55, 52, 1, 0}, +/* 56 */ { 4, s_2_56, -1, 1, 0}, +/* 57 */ { 4, s_2_57, -1, 1, 0}, +/* 58 */ { 4, s_2_58, -1, 1, 0}, +/* 59 */ { 3, s_2_59, -1, 1, 0}, +/* 60 */ { 4, s_2_60, -1, 1, 0}, +/* 61 */ { 4, s_2_61, -1, 3, 0}, +/* 62 */ { 3, s_2_62, -1, 1, 0}, +/* 63 */ { 4, s_2_63, -1, 1, 0}, +/* 64 */ { 2, s_2_64, -1, 1, 0}, +/* 65 */ { 2, s_2_65, -1, 1, 0}, +/* 66 */ { 3, s_2_66, -1, 1, 0}, +/* 67 */ { 3, s_2_67, -1, 1, 0}, +/* 68 */ { 5, s_2_68, -1, 1, 0}, +/* 69 */ { 4, s_2_69, -1, 1, 0}, +/* 70 */ { 5, s_2_70, -1, 1, 0}, +/* 71 */ { 6, s_2_71, -1, 1, 0}, +/* 72 */ { 6, s_2_72, -1, 1, 0}, +/* 73 */ { 6, s_2_73, -1, 1, 0}, +/* 74 */ { 8, s_2_74, 73, 5, 0}, +/* 75 */ { 4, s_2_75, -1, 1, 0}, +/* 76 */ { 6, s_2_76, -1, 1, 0}, +/* 77 */ { 2, s_2_77, -1, 1, 0}, +/* 78 */ { 6, s_2_78, 77, 1, 0}, +/* 79 */ { 4, s_2_79, 77, 1, 0}, +/* 80 */ { 4, s_2_80, 77, 1, 0}, +/* 81 */ { 4, s_2_81, 77, 1, 0}, +/* 82 */ { 5, s_2_82, 77, 1, 0}, +/* 83 */ { 3, s_2_83, -1, 1, 0}, +/* 84 */ { 2, s_2_84, -1, 1, 0}, +/* 85 */ { 3, s_2_85, 84, 1, 0}, +/* 86 */ { 3, s_2_86, -1, 1, 0}, +/* 87 */ { 5, s_2_87, -1, 1, 0}, +/* 88 */ { 3, s_2_88, -1, 4, 0}, +/* 89 */ { 7, s_2_89, 88, 3, 0}, +/* 90 */ { 3, s_2_90, -1, 1, 0}, +/* 91 */ { 4, s_2_91, -1, 1, 0}, +/* 92 */ { 4, s_2_92, -1, 2, 0}, +/* 93 */ { 6, s_2_93, -1, 1, 0}, +/* 94 */ { 6, s_2_94, -1, 1, 0}, +/* 95 */ { 7, s_2_95, -1, 1, 0}, +/* 96 */ { 6, s_2_96, -1, 1, 0}, +/* 97 */ { 6, s_2_97, -1, 3, 0}, +/* 98 */ { 5, s_2_98, -1, 1, 0}, +/* 99 */ { 6, s_2_99, -1, 1, 0}, +/*100 */ { 5, s_2_100, -1, 1, 0}, +/*101 */ { 6, s_2_101, -1, 1, 0}, +/*102 */ { 8, s_2_102, -1, 1, 0}, +/*103 */ { 4, s_2_103, -1, 1, 0}, +/*104 */ { 5, s_2_104, 103, 1, 0}, +/*105 */ { 5, s_2_105, 103, 1, 0}, +/*106 */ { 4, s_2_106, -1, 1, 0}, +/*107 */ { 8, s_2_107, 106, 1, 0}, +/*108 */ { 10, s_2_108, 107, 5, 0}, +/*109 */ { 6, s_2_109, -1, 1, 0}, +/*110 */ { 5, s_2_110, -1, 1, 0}, +/*111 */ { 8, s_2_111, 110, 1, 0}, +/*112 */ { 4, s_2_112, -1, 1, 0}, +/*113 */ { 4, s_2_113, -1, 1, 0}, +/*114 */ { 4, s_2_114, -1, 1, 0}, +/*115 */ { 5, s_2_115, 114, 1, 0}, +/*116 */ { 6, s_2_116, 115, 1, 0}, +/*117 */ { 5, s_2_117, -1, 1, 0}, +/*118 */ { 4, s_2_118, -1, 1, 0}, +/*119 */ { 4, s_2_119, -1, 1, 0}, +/*120 */ { 5, s_2_120, -1, 1, 0}, +/*121 */ { 5, s_2_121, -1, 1, 0}, +/*122 */ { 4, s_2_122, -1, 1, 0}, +/*123 */ { 4, s_2_123, -1, 1, 0}, +/*124 */ { 5, s_2_124, -1, 1, 0}, +/*125 */ { 8, s_2_125, 124, 1, 0}, +/*126 */ { 8, s_2_126, 124, 1, 0}, +/*127 */ { 5, s_2_127, -1, 4, 0}, +/*128 */ { 9, s_2_128, 127, 3, 0}, +/*129 */ { 4, s_2_129, -1, 1, 0}, +/*130 */ { 6, s_2_130, 129, 1, 0}, +/*131 */ { 7, s_2_131, -1, 3, 0}, +/*132 */ { 10, s_2_132, -1, 1, 0}, +/*133 */ { 4, s_2_133, -1, 1, 0}, +/*134 */ { 5, s_2_134, -1, 1, 0}, +/*135 */ { 5, s_2_135, -1, 3, 0}, +/*136 */ { 4, s_2_136, -1, 1, 0}, +/*137 */ { 5, s_2_137, -1, 1, 0}, +/*138 */ { 2, s_2_138, -1, 1, 0}, +/*139 */ { 3, s_2_139, 138, 1, 0}, +/*140 */ { 4, s_2_140, 138, 1, 0}, +/*141 */ { 3, s_2_141, -1, 1, 0}, +/*142 */ { 7, s_2_142, 141, 1, 0}, +/*143 */ { 9, s_2_143, 142, 5, 0}, +/*144 */ { 4, s_2_144, -1, 1, 0}, +/*145 */ { 5, s_2_145, 144, 1, 0}, +/*146 */ { 6, s_2_146, 145, 2, 0}, +/*147 */ { 4, s_2_147, -1, 1, 0}, +/*148 */ { 4, s_2_148, -1, 1, 0}, +/*149 */ { 5, s_2_149, -1, 1, 0}, +/*150 */ { 5, s_2_150, -1, 1, 0}, +/*151 */ { 3, s_2_151, -1, 1, 0}, +/*152 */ { 3, s_2_152, -1, 1, 0}, +/*153 */ { 4, s_2_153, 152, 1, 0}, +/*154 */ { 5, s_2_154, 153, 1, 0}, +/*155 */ { 5, s_2_155, 153, 1, 0}, +/*156 */ { 3, s_2_156, -1, 1, 0}, +/*157 */ { 5, s_2_157, 156, 1, 0}, +/*158 */ { 8, s_2_158, 157, 1, 0}, +/*159 */ { 7, s_2_159, 157, 1, 0}, +/*160 */ { 9, s_2_160, 159, 1, 0}, +/*161 */ { 6, s_2_161, 156, 1, 0}, +/*162 */ { 3, s_2_162, -1, 1, 0}, +/*163 */ { 4, s_2_163, -1, 1, 0}, +/*164 */ { 4, s_2_164, -1, 1, 0}, +/*165 */ { 5, s_2_165, 164, 1, 0}, +/*166 */ { 6, s_2_166, 165, 1, 0}, +/*167 */ { 3, s_2_167, -1, 1, 0}, +/*168 */ { 3, s_2_168, -1, 1, 0}, +/*169 */ { 3, s_2_169, -1, 1, 0}, +/*170 */ { 5, s_2_170, 169, 1, 0}, +/*171 */ { 5, s_2_171, 169, 1, 0}, +/*172 */ { 3, s_2_172, -1, 1, 0}, +/*173 */ { 3, s_2_173, -1, 1, 0}, +/*174 */ { 3, s_2_174, -1, 1, 0}, +/*175 */ { 4, s_2_175, 174, 1, 0}, +/*176 */ { 3, s_2_176, -1, 1, 0}, +/*177 */ { 4, s_2_177, -1, 1, 0}, +/*178 */ { 7, s_2_178, 177, 1, 0}, +/*179 */ { 6, s_2_179, 177, 1, 0}, +/*180 */ { 8, s_2_180, 179, 1, 0}, +/*181 */ { 5, s_2_181, -1, 1, 0}, +/*182 */ { 2, s_2_182, -1, 1, 0}, +/*183 */ { 3, s_2_183, -1, 1, 0}, +/*184 */ { 3, s_2_184, -1, 1, 0}, +/*185 */ { 4, s_2_185, 184, 1, 0}, +/*186 */ { 4, s_2_186, 184, 1, 0}, +/*187 */ { 5, s_2_187, 186, 1, 0}, +/*188 */ { 7, s_2_188, 187, 1, 0}, +/*189 */ { 2, s_2_189, -1, 1, 0}, +/*190 */ { 5, s_2_190, -1, 1, 0}, +/*191 */ { 6, s_2_191, -1, 1, 0}, +/*192 */ { 6, s_2_192, -1, 1, 0}, +/*193 */ { 4, s_2_193, -1, 1, 0}, +/*194 */ { 6, s_2_194, -1, 1, 0}, +/*195 */ { 4, s_2_195, -1, 1, 0}, +/*196 */ { 2, s_2_196, -1, 1, 0}, +/*197 */ { 3, s_2_197, 196, 1, 0}, +/*198 */ { 4, s_2_198, 197, 1, 0}, +/*199 */ { 5, s_2_199, 198, 1, 0} +}; + +static const symbol s_3_0[3] = { 'a', 'b', 'a' }; +static const symbol s_3_1[4] = { 'e', 's', 'c', 'a' }; +static const symbol s_3_2[4] = { 'i', 's', 'c', 'a' }; +static const symbol s_3_3[5] = { 0xC3, 0xAF, 's', 'c', 'a' }; +static const symbol s_3_4[3] = { 'a', 'd', 'a' }; +static const symbol s_3_5[3] = { 'i', 'd', 'a' }; +static const symbol s_3_6[3] = { 'u', 'd', 'a' }; +static const symbol s_3_7[4] = { 0xC3, 0xAF, 'd', 'a' }; +static const symbol s_3_8[2] = { 'i', 'a' }; +static const symbol s_3_9[4] = { 'a', 'r', 'i', 'a' }; +static const symbol s_3_10[4] = { 'i', 'r', 'i', 'a' }; +static const symbol s_3_11[3] = { 'a', 'r', 'a' }; +static const symbol s_3_12[4] = { 'i', 'e', 'r', 'a' }; +static const symbol s_3_13[3] = { 'i', 'r', 'a' }; +static const symbol s_3_14[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_3_15[4] = { 0xC3, 0xAF, 'r', 'a' }; +static const symbol s_3_16[3] = { 'a', 'v', 'a' }; +static const symbol s_3_17[3] = { 'i', 'x', 'a' }; +static const symbol s_3_18[4] = { 'i', 't', 'z', 'a' }; +static const symbol s_3_19[3] = { 0xC3, 0xAD, 'a' }; +static const symbol s_3_20[5] = { 'a', 'r', 0xC3, 0xAD, 'a' }; +static const symbol s_3_21[5] = { 'e', 'r', 0xC3, 0xAD, 'a' }; +static const symbol s_3_22[5] = { 'i', 'r', 0xC3, 0xAD, 'a' }; +static const symbol s_3_23[3] = { 0xC3, 0xAF, 'a' }; +static const symbol s_3_24[3] = { 'i', 's', 'c' }; +static const symbol s_3_25[4] = { 0xC3, 0xAF, 's', 'c' }; +static const symbol s_3_26[2] = { 'a', 'd' }; +static const symbol s_3_27[2] = { 'e', 'd' }; +static const symbol s_3_28[2] = { 'i', 'd' }; +static const symbol s_3_29[2] = { 'i', 'e' }; +static const symbol s_3_30[2] = { 'r', 'e' }; +static const symbol s_3_31[3] = { 'd', 'r', 'e' }; +static const symbol s_3_32[3] = { 'a', 's', 'e' }; +static const symbol s_3_33[4] = { 'i', 'e', 's', 'e' }; +static const symbol s_3_34[4] = { 'a', 's', 't', 'e' }; +static const symbol s_3_35[4] = { 'i', 's', 't', 'e' }; +static const symbol s_3_36[2] = { 'i', 'i' }; +static const symbol s_3_37[3] = { 'i', 'n', 'i' }; +static const symbol s_3_38[5] = { 'e', 's', 'q', 'u', 'i' }; +static const symbol s_3_39[4] = { 'e', 'i', 'x', 'i' }; +static const symbol s_3_40[4] = { 'i', 't', 'z', 'i' }; +static const symbol s_3_41[2] = { 'a', 'm' }; +static const symbol s_3_42[2] = { 'e', 'm' }; +static const symbol s_3_43[4] = { 'a', 'r', 'e', 'm' }; +static const symbol s_3_44[4] = { 'i', 'r', 'e', 'm' }; +static const symbol s_3_45[5] = { 0xC3, 0xA0, 'r', 'e', 'm' }; +static const symbol s_3_46[5] = { 0xC3, 0xAD, 'r', 'e', 'm' }; +static const symbol s_3_47[6] = { 0xC3, 0xA0, 's', 's', 'e', 'm' }; +static const symbol s_3_48[6] = { 0xC3, 0xA9, 's', 's', 'e', 'm' }; +static const symbol s_3_49[5] = { 'i', 'g', 'u', 'e', 'm' }; +static const symbol s_3_50[6] = { 0xC3, 0xAF, 'g', 'u', 'e', 'm' }; +static const symbol s_3_51[4] = { 'a', 'v', 'e', 'm' }; +static const symbol s_3_52[5] = { 0xC3, 0xA0, 'v', 'e', 'm' }; +static const symbol s_3_53[5] = { 0xC3, 0xA1, 'v', 'e', 'm' }; +static const symbol s_3_54[6] = { 'i', 'r', 0xC3, 0xAC, 'e', 'm' }; +static const symbol s_3_55[4] = { 0xC3, 0xAD, 'e', 'm' }; +static const symbol s_3_56[6] = { 'a', 'r', 0xC3, 0xAD, 'e', 'm' }; +static const symbol s_3_57[6] = { 'i', 'r', 0xC3, 0xAD, 'e', 'm' }; +static const symbol s_3_58[5] = { 'a', 's', 's', 'i', 'm' }; +static const symbol s_3_59[5] = { 'e', 's', 's', 'i', 'm' }; +static const symbol s_3_60[5] = { 'i', 's', 's', 'i', 'm' }; +static const symbol s_3_61[6] = { 0xC3, 0xA0, 's', 's', 'i', 'm' }; +static const symbol s_3_62[6] = { 0xC3, 0xA8, 's', 's', 'i', 'm' }; +static const symbol s_3_63[6] = { 0xC3, 0xA9, 's', 's', 'i', 'm' }; +static const symbol s_3_64[6] = { 0xC3, 0xAD, 's', 's', 'i', 'm' }; +static const symbol s_3_65[3] = { 0xC3, 0xAF, 'm' }; +static const symbol s_3_66[2] = { 'a', 'n' }; +static const symbol s_3_67[4] = { 'a', 'b', 'a', 'n' }; +static const symbol s_3_68[5] = { 'a', 'r', 'i', 'a', 'n' }; +static const symbol s_3_69[4] = { 'a', 'r', 'a', 'n' }; +static const symbol s_3_70[5] = { 'i', 'e', 'r', 'a', 'n' }; +static const symbol s_3_71[4] = { 'i', 'r', 'a', 'n' }; +static const symbol s_3_72[4] = { 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_3_73[6] = { 'a', 'r', 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_3_74[6] = { 'e', 'r', 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_3_75[6] = { 'i', 'r', 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_3_76[2] = { 'e', 'n' }; +static const symbol s_3_77[3] = { 'i', 'e', 'n' }; +static const symbol s_3_78[5] = { 'a', 'r', 'i', 'e', 'n' }; +static const symbol s_3_79[5] = { 'i', 'r', 'i', 'e', 'n' }; +static const symbol s_3_80[4] = { 'a', 'r', 'e', 'n' }; +static const symbol s_3_81[4] = { 'e', 'r', 'e', 'n' }; +static const symbol s_3_82[4] = { 'i', 'r', 'e', 'n' }; +static const symbol s_3_83[5] = { 0xC3, 0xA0, 'r', 'e', 'n' }; +static const symbol s_3_84[5] = { 0xC3, 0xAF, 'r', 'e', 'n' }; +static const symbol s_3_85[4] = { 'a', 's', 'e', 'n' }; +static const symbol s_3_86[5] = { 'i', 'e', 's', 'e', 'n' }; +static const symbol s_3_87[5] = { 'a', 's', 's', 'e', 'n' }; +static const symbol s_3_88[5] = { 'e', 's', 's', 'e', 'n' }; +static const symbol s_3_89[5] = { 'i', 's', 's', 'e', 'n' }; +static const symbol s_3_90[6] = { 0xC3, 0xA9, 's', 's', 'e', 'n' }; +static const symbol s_3_91[6] = { 0xC3, 0xAF, 's', 's', 'e', 'n' }; +static const symbol s_3_92[6] = { 'e', 's', 'q', 'u', 'e', 'n' }; +static const symbol s_3_93[6] = { 'i', 's', 'q', 'u', 'e', 'n' }; +static const symbol s_3_94[7] = { 0xC3, 0xAF, 's', 'q', 'u', 'e', 'n' }; +static const symbol s_3_95[4] = { 'a', 'v', 'e', 'n' }; +static const symbol s_3_96[4] = { 'i', 'x', 'e', 'n' }; +static const symbol s_3_97[5] = { 'e', 'i', 'x', 'e', 'n' }; +static const symbol s_3_98[5] = { 0xC3, 0xAF, 'x', 'e', 'n' }; +static const symbol s_3_99[4] = { 0xC3, 0xAF, 'e', 'n' }; +static const symbol s_3_100[2] = { 'i', 'n' }; +static const symbol s_3_101[4] = { 'i', 'n', 'i', 'n' }; +static const symbol s_3_102[3] = { 's', 'i', 'n' }; +static const symbol s_3_103[4] = { 'i', 's', 'i', 'n' }; +static const symbol s_3_104[5] = { 'a', 's', 's', 'i', 'n' }; +static const symbol s_3_105[5] = { 'e', 's', 's', 'i', 'n' }; +static const symbol s_3_106[5] = { 'i', 's', 's', 'i', 'n' }; +static const symbol s_3_107[6] = { 0xC3, 0xAF, 's', 's', 'i', 'n' }; +static const symbol s_3_108[6] = { 'e', 's', 'q', 'u', 'i', 'n' }; +static const symbol s_3_109[5] = { 'e', 'i', 'x', 'i', 'n' }; +static const symbol s_3_110[4] = { 'a', 'r', 'o', 'n' }; +static const symbol s_3_111[5] = { 'i', 'e', 'r', 'o', 'n' }; +static const symbol s_3_112[5] = { 'a', 'r', 0xC3, 0xA1, 'n' }; +static const symbol s_3_113[5] = { 'e', 'r', 0xC3, 0xA1, 'n' }; +static const symbol s_3_114[5] = { 'i', 'r', 0xC3, 0xA1, 'n' }; +static const symbol s_3_115[4] = { 'i', 0xC3, 0xAF, 'n' }; +static const symbol s_3_116[3] = { 'a', 'd', 'o' }; +static const symbol s_3_117[3] = { 'i', 'd', 'o' }; +static const symbol s_3_118[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_3_119[5] = { 'i', 'e', 'n', 'd', 'o' }; +static const symbol s_3_120[2] = { 'i', 'o' }; +static const symbol s_3_121[3] = { 'i', 'x', 'o' }; +static const symbol s_3_122[4] = { 'e', 'i', 'x', 'o' }; +static const symbol s_3_123[4] = { 0xC3, 0xAF, 'x', 'o' }; +static const symbol s_3_124[4] = { 'i', 't', 'z', 'o' }; +static const symbol s_3_125[2] = { 'a', 'r' }; +static const symbol s_3_126[4] = { 't', 'z', 'a', 'r' }; +static const symbol s_3_127[2] = { 'e', 'r' }; +static const symbol s_3_128[5] = { 'e', 'i', 'x', 'e', 'r' }; +static const symbol s_3_129[2] = { 'i', 'r' }; +static const symbol s_3_130[4] = { 'a', 'd', 'o', 'r' }; +static const symbol s_3_131[2] = { 'a', 's' }; +static const symbol s_3_132[4] = { 'a', 'b', 'a', 's' }; +static const symbol s_3_133[4] = { 'a', 'd', 'a', 's' }; +static const symbol s_3_134[4] = { 'i', 'd', 'a', 's' }; +static const symbol s_3_135[4] = { 'a', 'r', 'a', 's' }; +static const symbol s_3_136[5] = { 'i', 'e', 'r', 'a', 's' }; +static const symbol s_3_137[4] = { 0xC3, 0xAD, 'a', 's' }; +static const symbol s_3_138[6] = { 'a', 'r', 0xC3, 0xAD, 'a', 's' }; +static const symbol s_3_139[6] = { 'e', 'r', 0xC3, 0xAD, 'a', 's' }; +static const symbol s_3_140[6] = { 'i', 'r', 0xC3, 0xAD, 'a', 's' }; +static const symbol s_3_141[3] = { 'i', 'd', 's' }; +static const symbol s_3_142[2] = { 'e', 's' }; +static const symbol s_3_143[4] = { 'a', 'd', 'e', 's' }; +static const symbol s_3_144[4] = { 'i', 'd', 'e', 's' }; +static const symbol s_3_145[4] = { 'u', 'd', 'e', 's' }; +static const symbol s_3_146[5] = { 0xC3, 0xAF, 'd', 'e', 's' }; +static const symbol s_3_147[5] = { 'a', 't', 'g', 'e', 's' }; +static const symbol s_3_148[3] = { 'i', 'e', 's' }; +static const symbol s_3_149[5] = { 'a', 'r', 'i', 'e', 's' }; +static const symbol s_3_150[5] = { 'i', 'r', 'i', 'e', 's' }; +static const symbol s_3_151[4] = { 'a', 'r', 'e', 's' }; +static const symbol s_3_152[4] = { 'i', 'r', 'e', 's' }; +static const symbol s_3_153[6] = { 'a', 'd', 'o', 'r', 'e', 's' }; +static const symbol s_3_154[5] = { 0xC3, 0xAF, 'r', 'e', 's' }; +static const symbol s_3_155[4] = { 'a', 's', 'e', 's' }; +static const symbol s_3_156[5] = { 'i', 'e', 's', 'e', 's' }; +static const symbol s_3_157[5] = { 'a', 's', 's', 'e', 's' }; +static const symbol s_3_158[5] = { 'e', 's', 's', 'e', 's' }; +static const symbol s_3_159[5] = { 'i', 's', 's', 'e', 's' }; +static const symbol s_3_160[6] = { 0xC3, 0xAF, 's', 's', 'e', 's' }; +static const symbol s_3_161[4] = { 'q', 'u', 'e', 's' }; +static const symbol s_3_162[6] = { 'e', 's', 'q', 'u', 'e', 's' }; +static const symbol s_3_163[7] = { 0xC3, 0xAF, 's', 'q', 'u', 'e', 's' }; +static const symbol s_3_164[4] = { 'a', 'v', 'e', 's' }; +static const symbol s_3_165[4] = { 'i', 'x', 'e', 's' }; +static const symbol s_3_166[5] = { 'e', 'i', 'x', 'e', 's' }; +static const symbol s_3_167[5] = { 0xC3, 0xAF, 'x', 'e', 's' }; +static const symbol s_3_168[4] = { 0xC3, 0xAF, 'e', 's' }; +static const symbol s_3_169[5] = { 'a', 'b', 'a', 'i', 's' }; +static const symbol s_3_170[5] = { 'a', 'r', 'a', 'i', 's' }; +static const symbol s_3_171[6] = { 'i', 'e', 'r', 'a', 'i', 's' }; +static const symbol s_3_172[5] = { 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_3_173[7] = { 'a', 'r', 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_3_174[7] = { 'e', 'r', 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_3_175[7] = { 'i', 'r', 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_3_176[5] = { 'a', 's', 'e', 'i', 's' }; +static const symbol s_3_177[6] = { 'i', 'e', 's', 'e', 'i', 's' }; +static const symbol s_3_178[6] = { 'a', 's', 't', 'e', 'i', 's' }; +static const symbol s_3_179[6] = { 'i', 's', 't', 'e', 'i', 's' }; +static const symbol s_3_180[4] = { 'i', 'n', 'i', 's' }; +static const symbol s_3_181[3] = { 's', 'i', 's' }; +static const symbol s_3_182[4] = { 'i', 's', 'i', 's' }; +static const symbol s_3_183[5] = { 'a', 's', 's', 'i', 's' }; +static const symbol s_3_184[5] = { 'e', 's', 's', 'i', 's' }; +static const symbol s_3_185[5] = { 'i', 's', 's', 'i', 's' }; +static const symbol s_3_186[6] = { 0xC3, 0xAF, 's', 's', 'i', 's' }; +static const symbol s_3_187[6] = { 'e', 's', 'q', 'u', 'i', 's' }; +static const symbol s_3_188[5] = { 'e', 'i', 'x', 'i', 's' }; +static const symbol s_3_189[5] = { 'i', 't', 'z', 'i', 's' }; +static const symbol s_3_190[4] = { 0xC3, 0xA1, 'i', 's' }; +static const symbol s_3_191[6] = { 'a', 'r', 0xC3, 0xA9, 'i', 's' }; +static const symbol s_3_192[6] = { 'e', 'r', 0xC3, 0xA9, 'i', 's' }; +static const symbol s_3_193[6] = { 'i', 'r', 0xC3, 0xA9, 'i', 's' }; +static const symbol s_3_194[3] = { 'a', 'm', 's' }; +static const symbol s_3_195[4] = { 'a', 'd', 'o', 's' }; +static const symbol s_3_196[4] = { 'i', 'd', 'o', 's' }; +static const symbol s_3_197[4] = { 'a', 'm', 'o', 's' }; +static const symbol s_3_198[7] = { 0xC3, 0xA1, 'b', 'a', 'm', 'o', 's' }; +static const symbol s_3_199[7] = { 0xC3, 0xA1, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_3_200[8] = { 'i', 0xC3, 0xA9, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_3_201[6] = { 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_3_202[8] = { 'a', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_3_203[8] = { 'e', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_3_204[8] = { 'i', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_3_205[6] = { 'a', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_3_206[6] = { 'e', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_3_207[6] = { 'i', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_3_208[7] = { 0xC3, 0xA1, 's', 'e', 'm', 'o', 's' }; +static const symbol s_3_209[8] = { 'i', 0xC3, 0xA9, 's', 'e', 'm', 'o', 's' }; +static const symbol s_3_210[4] = { 'i', 'm', 'o', 's' }; +static const symbol s_3_211[5] = { 'a', 'd', 'o', 'r', 's' }; +static const symbol s_3_212[3] = { 'a', 's', 's' }; +static const symbol s_3_213[5] = { 'e', 'r', 'a', 's', 's' }; +static const symbol s_3_214[3] = { 'e', 's', 's' }; +static const symbol s_3_215[3] = { 'a', 't', 's' }; +static const symbol s_3_216[3] = { 'i', 't', 's' }; +static const symbol s_3_217[4] = { 'e', 'n', 't', 's' }; +static const symbol s_3_218[3] = { 0xC3, 0xA0, 's' }; +static const symbol s_3_219[5] = { 'a', 'r', 0xC3, 0xA0, 's' }; +static const symbol s_3_220[5] = { 'i', 'r', 0xC3, 0xA0, 's' }; +static const symbol s_3_221[5] = { 'a', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_3_222[5] = { 'e', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_3_223[5] = { 'i', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_3_224[3] = { 0xC3, 0xA9, 's' }; +static const symbol s_3_225[5] = { 'a', 'r', 0xC3, 0xA9, 's' }; +static const symbol s_3_226[3] = { 0xC3, 0xAD, 's' }; +static const symbol s_3_227[4] = { 'i', 0xC3, 0xAF, 's' }; +static const symbol s_3_228[2] = { 'a', 't' }; +static const symbol s_3_229[2] = { 'i', 't' }; +static const symbol s_3_230[3] = { 'a', 'n', 't' }; +static const symbol s_3_231[3] = { 'e', 'n', 't' }; +static const symbol s_3_232[3] = { 'i', 'n', 't' }; +static const symbol s_3_233[2] = { 'u', 't' }; +static const symbol s_3_234[3] = { 0xC3, 0xAF, 't' }; +static const symbol s_3_235[2] = { 'a', 'u' }; +static const symbol s_3_236[4] = { 'e', 'r', 'a', 'u' }; +static const symbol s_3_237[3] = { 'i', 'e', 'u' }; +static const symbol s_3_238[4] = { 'i', 'n', 'e', 'u' }; +static const symbol s_3_239[4] = { 'a', 'r', 'e', 'u' }; +static const symbol s_3_240[4] = { 'i', 'r', 'e', 'u' }; +static const symbol s_3_241[5] = { 0xC3, 0xA0, 'r', 'e', 'u' }; +static const symbol s_3_242[5] = { 0xC3, 0xAD, 'r', 'e', 'u' }; +static const symbol s_3_243[5] = { 'a', 's', 's', 'e', 'u' }; +static const symbol s_3_244[5] = { 'e', 's', 's', 'e', 'u' }; +static const symbol s_3_245[7] = { 'e', 'r', 'e', 's', 's', 'e', 'u' }; +static const symbol s_3_246[6] = { 0xC3, 0xA0, 's', 's', 'e', 'u' }; +static const symbol s_3_247[6] = { 0xC3, 0xA9, 's', 's', 'e', 'u' }; +static const symbol s_3_248[5] = { 'i', 'g', 'u', 'e', 'u' }; +static const symbol s_3_249[6] = { 0xC3, 0xAF, 'g', 'u', 'e', 'u' }; +static const symbol s_3_250[5] = { 0xC3, 0xA0, 'v', 'e', 'u' }; +static const symbol s_3_251[5] = { 0xC3, 0xA1, 'v', 'e', 'u' }; +static const symbol s_3_252[5] = { 'i', 't', 'z', 'e', 'u' }; +static const symbol s_3_253[4] = { 0xC3, 0xAC, 'e', 'u' }; +static const symbol s_3_254[6] = { 'i', 'r', 0xC3, 0xAC, 'e', 'u' }; +static const symbol s_3_255[4] = { 0xC3, 0xAD, 'e', 'u' }; +static const symbol s_3_256[6] = { 'a', 'r', 0xC3, 0xAD, 'e', 'u' }; +static const symbol s_3_257[6] = { 'i', 'r', 0xC3, 0xAD, 'e', 'u' }; +static const symbol s_3_258[5] = { 'a', 's', 's', 'i', 'u' }; +static const symbol s_3_259[5] = { 'i', 's', 's', 'i', 'u' }; +static const symbol s_3_260[6] = { 0xC3, 0xA0, 's', 's', 'i', 'u' }; +static const symbol s_3_261[6] = { 0xC3, 0xA8, 's', 's', 'i', 'u' }; +static const symbol s_3_262[6] = { 0xC3, 0xA9, 's', 's', 'i', 'u' }; +static const symbol s_3_263[6] = { 0xC3, 0xAD, 's', 's', 'i', 'u' }; +static const symbol s_3_264[3] = { 0xC3, 0xAF, 'u' }; +static const symbol s_3_265[2] = { 'i', 'x' }; +static const symbol s_3_266[3] = { 'e', 'i', 'x' }; +static const symbol s_3_267[3] = { 0xC3, 0xAF, 'x' }; +static const symbol s_3_268[3] = { 'i', 't', 'z' }; +static const symbol s_3_269[3] = { 'i', 0xC3, 0xA0 }; +static const symbol s_3_270[4] = { 'a', 'r', 0xC3, 0xA0 }; +static const symbol s_3_271[4] = { 'i', 'r', 0xC3, 0xA0 }; +static const symbol s_3_272[5] = { 'i', 't', 'z', 0xC3, 0xA0 }; +static const symbol s_3_273[4] = { 'a', 'r', 0xC3, 0xA1 }; +static const symbol s_3_274[4] = { 'e', 'r', 0xC3, 0xA1 }; +static const symbol s_3_275[4] = { 'i', 'r', 0xC3, 0xA1 }; +static const symbol s_3_276[4] = { 'i', 'r', 0xC3, 0xA8 }; +static const symbol s_3_277[4] = { 'a', 'r', 0xC3, 0xA9 }; +static const symbol s_3_278[4] = { 'e', 'r', 0xC3, 0xA9 }; +static const symbol s_3_279[4] = { 'i', 'r', 0xC3, 0xA9 }; +static const symbol s_3_280[2] = { 0xC3, 0xAD }; +static const symbol s_3_281[3] = { 'i', 0xC3, 0xAF }; +static const symbol s_3_282[3] = { 'i', 0xC3, 0xB3 }; + +static const struct among a_3[283] = +{ +/* 0 */ { 3, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 4, s_3_2, -1, 1, 0}, +/* 3 */ { 5, s_3_3, -1, 1, 0}, +/* 4 */ { 3, s_3_4, -1, 1, 0}, +/* 5 */ { 3, s_3_5, -1, 1, 0}, +/* 6 */ { 3, s_3_6, -1, 1, 0}, +/* 7 */ { 4, s_3_7, -1, 1, 0}, +/* 8 */ { 2, s_3_8, -1, 1, 0}, +/* 9 */ { 4, s_3_9, 8, 1, 0}, +/* 10 */ { 4, s_3_10, 8, 1, 0}, +/* 11 */ { 3, s_3_11, -1, 1, 0}, +/* 12 */ { 4, s_3_12, -1, 1, 0}, +/* 13 */ { 3, s_3_13, -1, 1, 0}, +/* 14 */ { 5, s_3_14, -1, 1, 0}, +/* 15 */ { 4, s_3_15, -1, 1, 0}, +/* 16 */ { 3, s_3_16, -1, 1, 0}, +/* 17 */ { 3, s_3_17, -1, 1, 0}, +/* 18 */ { 4, s_3_18, -1, 1, 0}, +/* 19 */ { 3, s_3_19, -1, 1, 0}, +/* 20 */ { 5, s_3_20, 19, 1, 0}, +/* 21 */ { 5, s_3_21, 19, 1, 0}, +/* 22 */ { 5, s_3_22, 19, 1, 0}, +/* 23 */ { 3, s_3_23, -1, 1, 0}, +/* 24 */ { 3, s_3_24, -1, 1, 0}, +/* 25 */ { 4, s_3_25, -1, 1, 0}, +/* 26 */ { 2, s_3_26, -1, 1, 0}, +/* 27 */ { 2, s_3_27, -1, 1, 0}, +/* 28 */ { 2, s_3_28, -1, 1, 0}, +/* 29 */ { 2, s_3_29, -1, 1, 0}, +/* 30 */ { 2, s_3_30, -1, 1, 0}, +/* 31 */ { 3, s_3_31, 30, 1, 0}, +/* 32 */ { 3, s_3_32, -1, 1, 0}, +/* 33 */ { 4, s_3_33, -1, 1, 0}, +/* 34 */ { 4, s_3_34, -1, 1, 0}, +/* 35 */ { 4, s_3_35, -1, 1, 0}, +/* 36 */ { 2, s_3_36, -1, 1, 0}, +/* 37 */ { 3, s_3_37, -1, 1, 0}, +/* 38 */ { 5, s_3_38, -1, 1, 0}, +/* 39 */ { 4, s_3_39, -1, 1, 0}, +/* 40 */ { 4, s_3_40, -1, 1, 0}, +/* 41 */ { 2, s_3_41, -1, 1, 0}, +/* 42 */ { 2, s_3_42, -1, 1, 0}, +/* 43 */ { 4, s_3_43, 42, 1, 0}, +/* 44 */ { 4, s_3_44, 42, 1, 0}, +/* 45 */ { 5, s_3_45, 42, 1, 0}, +/* 46 */ { 5, s_3_46, 42, 1, 0}, +/* 47 */ { 6, s_3_47, 42, 1, 0}, +/* 48 */ { 6, s_3_48, 42, 1, 0}, +/* 49 */ { 5, s_3_49, 42, 1, 0}, +/* 50 */ { 6, s_3_50, 42, 1, 0}, +/* 51 */ { 4, s_3_51, 42, 1, 0}, +/* 52 */ { 5, s_3_52, 42, 1, 0}, +/* 53 */ { 5, s_3_53, 42, 1, 0}, +/* 54 */ { 6, s_3_54, 42, 1, 0}, +/* 55 */ { 4, s_3_55, 42, 1, 0}, +/* 56 */ { 6, s_3_56, 55, 1, 0}, +/* 57 */ { 6, s_3_57, 55, 1, 0}, +/* 58 */ { 5, s_3_58, -1, 1, 0}, +/* 59 */ { 5, s_3_59, -1, 1, 0}, +/* 60 */ { 5, s_3_60, -1, 1, 0}, +/* 61 */ { 6, s_3_61, -1, 1, 0}, +/* 62 */ { 6, s_3_62, -1, 1, 0}, +/* 63 */ { 6, s_3_63, -1, 1, 0}, +/* 64 */ { 6, s_3_64, -1, 1, 0}, +/* 65 */ { 3, s_3_65, -1, 1, 0}, +/* 66 */ { 2, s_3_66, -1, 1, 0}, +/* 67 */ { 4, s_3_67, 66, 1, 0}, +/* 68 */ { 5, s_3_68, 66, 1, 0}, +/* 69 */ { 4, s_3_69, 66, 1, 0}, +/* 70 */ { 5, s_3_70, 66, 1, 0}, +/* 71 */ { 4, s_3_71, 66, 1, 0}, +/* 72 */ { 4, s_3_72, 66, 1, 0}, +/* 73 */ { 6, s_3_73, 72, 1, 0}, +/* 74 */ { 6, s_3_74, 72, 1, 0}, +/* 75 */ { 6, s_3_75, 72, 1, 0}, +/* 76 */ { 2, s_3_76, -1, 1, 0}, +/* 77 */ { 3, s_3_77, 76, 1, 0}, +/* 78 */ { 5, s_3_78, 77, 1, 0}, +/* 79 */ { 5, s_3_79, 77, 1, 0}, +/* 80 */ { 4, s_3_80, 76, 1, 0}, +/* 81 */ { 4, s_3_81, 76, 1, 0}, +/* 82 */ { 4, s_3_82, 76, 1, 0}, +/* 83 */ { 5, s_3_83, 76, 1, 0}, +/* 84 */ { 5, s_3_84, 76, 1, 0}, +/* 85 */ { 4, s_3_85, 76, 1, 0}, +/* 86 */ { 5, s_3_86, 76, 1, 0}, +/* 87 */ { 5, s_3_87, 76, 1, 0}, +/* 88 */ { 5, s_3_88, 76, 1, 0}, +/* 89 */ { 5, s_3_89, 76, 1, 0}, +/* 90 */ { 6, s_3_90, 76, 1, 0}, +/* 91 */ { 6, s_3_91, 76, 1, 0}, +/* 92 */ { 6, s_3_92, 76, 1, 0}, +/* 93 */ { 6, s_3_93, 76, 1, 0}, +/* 94 */ { 7, s_3_94, 76, 1, 0}, +/* 95 */ { 4, s_3_95, 76, 1, 0}, +/* 96 */ { 4, s_3_96, 76, 1, 0}, +/* 97 */ { 5, s_3_97, 96, 1, 0}, +/* 98 */ { 5, s_3_98, 76, 1, 0}, +/* 99 */ { 4, s_3_99, 76, 1, 0}, +/*100 */ { 2, s_3_100, -1, 1, 0}, +/*101 */ { 4, s_3_101, 100, 1, 0}, +/*102 */ { 3, s_3_102, 100, 1, 0}, +/*103 */ { 4, s_3_103, 102, 1, 0}, +/*104 */ { 5, s_3_104, 102, 1, 0}, +/*105 */ { 5, s_3_105, 102, 1, 0}, +/*106 */ { 5, s_3_106, 102, 1, 0}, +/*107 */ { 6, s_3_107, 102, 1, 0}, +/*108 */ { 6, s_3_108, 100, 1, 0}, +/*109 */ { 5, s_3_109, 100, 1, 0}, +/*110 */ { 4, s_3_110, -1, 1, 0}, +/*111 */ { 5, s_3_111, -1, 1, 0}, +/*112 */ { 5, s_3_112, -1, 1, 0}, +/*113 */ { 5, s_3_113, -1, 1, 0}, +/*114 */ { 5, s_3_114, -1, 1, 0}, +/*115 */ { 4, s_3_115, -1, 1, 0}, +/*116 */ { 3, s_3_116, -1, 1, 0}, +/*117 */ { 3, s_3_117, -1, 1, 0}, +/*118 */ { 4, s_3_118, -1, 2, 0}, +/*119 */ { 5, s_3_119, -1, 1, 0}, +/*120 */ { 2, s_3_120, -1, 1, 0}, +/*121 */ { 3, s_3_121, -1, 1, 0}, +/*122 */ { 4, s_3_122, 121, 1, 0}, +/*123 */ { 4, s_3_123, -1, 1, 0}, +/*124 */ { 4, s_3_124, -1, 1, 0}, +/*125 */ { 2, s_3_125, -1, 1, 0}, +/*126 */ { 4, s_3_126, 125, 1, 0}, +/*127 */ { 2, s_3_127, -1, 1, 0}, +/*128 */ { 5, s_3_128, 127, 1, 0}, +/*129 */ { 2, s_3_129, -1, 1, 0}, +/*130 */ { 4, s_3_130, -1, 1, 0}, +/*131 */ { 2, s_3_131, -1, 1, 0}, +/*132 */ { 4, s_3_132, 131, 1, 0}, +/*133 */ { 4, s_3_133, 131, 1, 0}, +/*134 */ { 4, s_3_134, 131, 1, 0}, +/*135 */ { 4, s_3_135, 131, 1, 0}, +/*136 */ { 5, s_3_136, 131, 1, 0}, +/*137 */ { 4, s_3_137, 131, 1, 0}, +/*138 */ { 6, s_3_138, 137, 1, 0}, +/*139 */ { 6, s_3_139, 137, 1, 0}, +/*140 */ { 6, s_3_140, 137, 1, 0}, +/*141 */ { 3, s_3_141, -1, 1, 0}, +/*142 */ { 2, s_3_142, -1, 1, 0}, +/*143 */ { 4, s_3_143, 142, 1, 0}, +/*144 */ { 4, s_3_144, 142, 1, 0}, +/*145 */ { 4, s_3_145, 142, 1, 0}, +/*146 */ { 5, s_3_146, 142, 1, 0}, +/*147 */ { 5, s_3_147, 142, 1, 0}, +/*148 */ { 3, s_3_148, 142, 1, 0}, +/*149 */ { 5, s_3_149, 148, 1, 0}, +/*150 */ { 5, s_3_150, 148, 1, 0}, +/*151 */ { 4, s_3_151, 142, 1, 0}, +/*152 */ { 4, s_3_152, 142, 1, 0}, +/*153 */ { 6, s_3_153, 142, 1, 0}, +/*154 */ { 5, s_3_154, 142, 1, 0}, +/*155 */ { 4, s_3_155, 142, 1, 0}, +/*156 */ { 5, s_3_156, 142, 1, 0}, +/*157 */ { 5, s_3_157, 142, 1, 0}, +/*158 */ { 5, s_3_158, 142, 1, 0}, +/*159 */ { 5, s_3_159, 142, 1, 0}, +/*160 */ { 6, s_3_160, 142, 1, 0}, +/*161 */ { 4, s_3_161, 142, 1, 0}, +/*162 */ { 6, s_3_162, 161, 1, 0}, +/*163 */ { 7, s_3_163, 161, 1, 0}, +/*164 */ { 4, s_3_164, 142, 1, 0}, +/*165 */ { 4, s_3_165, 142, 1, 0}, +/*166 */ { 5, s_3_166, 165, 1, 0}, +/*167 */ { 5, s_3_167, 142, 1, 0}, +/*168 */ { 4, s_3_168, 142, 1, 0}, +/*169 */ { 5, s_3_169, -1, 1, 0}, +/*170 */ { 5, s_3_170, -1, 1, 0}, +/*171 */ { 6, s_3_171, -1, 1, 0}, +/*172 */ { 5, s_3_172, -1, 1, 0}, +/*173 */ { 7, s_3_173, 172, 1, 0}, +/*174 */ { 7, s_3_174, 172, 1, 0}, +/*175 */ { 7, s_3_175, 172, 1, 0}, +/*176 */ { 5, s_3_176, -1, 1, 0}, +/*177 */ { 6, s_3_177, -1, 1, 0}, +/*178 */ { 6, s_3_178, -1, 1, 0}, +/*179 */ { 6, s_3_179, -1, 1, 0}, +/*180 */ { 4, s_3_180, -1, 1, 0}, +/*181 */ { 3, s_3_181, -1, 1, 0}, +/*182 */ { 4, s_3_182, 181, 1, 0}, +/*183 */ { 5, s_3_183, 181, 1, 0}, +/*184 */ { 5, s_3_184, 181, 1, 0}, +/*185 */ { 5, s_3_185, 181, 1, 0}, +/*186 */ { 6, s_3_186, 181, 1, 0}, +/*187 */ { 6, s_3_187, -1, 1, 0}, +/*188 */ { 5, s_3_188, -1, 1, 0}, +/*189 */ { 5, s_3_189, -1, 1, 0}, +/*190 */ { 4, s_3_190, -1, 1, 0}, +/*191 */ { 6, s_3_191, -1, 1, 0}, +/*192 */ { 6, s_3_192, -1, 1, 0}, +/*193 */ { 6, s_3_193, -1, 1, 0}, +/*194 */ { 3, s_3_194, -1, 1, 0}, +/*195 */ { 4, s_3_195, -1, 1, 0}, +/*196 */ { 4, s_3_196, -1, 1, 0}, +/*197 */ { 4, s_3_197, -1, 1, 0}, +/*198 */ { 7, s_3_198, 197, 1, 0}, +/*199 */ { 7, s_3_199, 197, 1, 0}, +/*200 */ { 8, s_3_200, 197, 1, 0}, +/*201 */ { 6, s_3_201, 197, 1, 0}, +/*202 */ { 8, s_3_202, 201, 1, 0}, +/*203 */ { 8, s_3_203, 201, 1, 0}, +/*204 */ { 8, s_3_204, 201, 1, 0}, +/*205 */ { 6, s_3_205, -1, 1, 0}, +/*206 */ { 6, s_3_206, -1, 1, 0}, +/*207 */ { 6, s_3_207, -1, 1, 0}, +/*208 */ { 7, s_3_208, -1, 1, 0}, +/*209 */ { 8, s_3_209, -1, 1, 0}, +/*210 */ { 4, s_3_210, -1, 1, 0}, +/*211 */ { 5, s_3_211, -1, 1, 0}, +/*212 */ { 3, s_3_212, -1, 1, 0}, +/*213 */ { 5, s_3_213, 212, 1, 0}, +/*214 */ { 3, s_3_214, -1, 1, 0}, +/*215 */ { 3, s_3_215, -1, 1, 0}, +/*216 */ { 3, s_3_216, -1, 1, 0}, +/*217 */ { 4, s_3_217, -1, 1, 0}, +/*218 */ { 3, s_3_218, -1, 1, 0}, +/*219 */ { 5, s_3_219, 218, 1, 0}, +/*220 */ { 5, s_3_220, 218, 1, 0}, +/*221 */ { 5, s_3_221, -1, 1, 0}, +/*222 */ { 5, s_3_222, -1, 1, 0}, +/*223 */ { 5, s_3_223, -1, 1, 0}, +/*224 */ { 3, s_3_224, -1, 1, 0}, +/*225 */ { 5, s_3_225, 224, 1, 0}, +/*226 */ { 3, s_3_226, -1, 1, 0}, +/*227 */ { 4, s_3_227, -1, 1, 0}, +/*228 */ { 2, s_3_228, -1, 1, 0}, +/*229 */ { 2, s_3_229, -1, 1, 0}, +/*230 */ { 3, s_3_230, -1, 1, 0}, +/*231 */ { 3, s_3_231, -1, 1, 0}, +/*232 */ { 3, s_3_232, -1, 1, 0}, +/*233 */ { 2, s_3_233, -1, 1, 0}, +/*234 */ { 3, s_3_234, -1, 1, 0}, +/*235 */ { 2, s_3_235, -1, 1, 0}, +/*236 */ { 4, s_3_236, 235, 1, 0}, +/*237 */ { 3, s_3_237, -1, 1, 0}, +/*238 */ { 4, s_3_238, -1, 1, 0}, +/*239 */ { 4, s_3_239, -1, 1, 0}, +/*240 */ { 4, s_3_240, -1, 1, 0}, +/*241 */ { 5, s_3_241, -1, 1, 0}, +/*242 */ { 5, s_3_242, -1, 1, 0}, +/*243 */ { 5, s_3_243, -1, 1, 0}, +/*244 */ { 5, s_3_244, -1, 1, 0}, +/*245 */ { 7, s_3_245, 244, 1, 0}, +/*246 */ { 6, s_3_246, -1, 1, 0}, +/*247 */ { 6, s_3_247, -1, 1, 0}, +/*248 */ { 5, s_3_248, -1, 1, 0}, +/*249 */ { 6, s_3_249, -1, 1, 0}, +/*250 */ { 5, s_3_250, -1, 1, 0}, +/*251 */ { 5, s_3_251, -1, 1, 0}, +/*252 */ { 5, s_3_252, -1, 1, 0}, +/*253 */ { 4, s_3_253, -1, 1, 0}, +/*254 */ { 6, s_3_254, 253, 1, 0}, +/*255 */ { 4, s_3_255, -1, 1, 0}, +/*256 */ { 6, s_3_256, 255, 1, 0}, +/*257 */ { 6, s_3_257, 255, 1, 0}, +/*258 */ { 5, s_3_258, -1, 1, 0}, +/*259 */ { 5, s_3_259, -1, 1, 0}, +/*260 */ { 6, s_3_260, -1, 1, 0}, +/*261 */ { 6, s_3_261, -1, 1, 0}, +/*262 */ { 6, s_3_262, -1, 1, 0}, +/*263 */ { 6, s_3_263, -1, 1, 0}, +/*264 */ { 3, s_3_264, -1, 1, 0}, +/*265 */ { 2, s_3_265, -1, 1, 0}, +/*266 */ { 3, s_3_266, 265, 1, 0}, +/*267 */ { 3, s_3_267, -1, 1, 0}, +/*268 */ { 3, s_3_268, -1, 1, 0}, +/*269 */ { 3, s_3_269, -1, 1, 0}, +/*270 */ { 4, s_3_270, -1, 1, 0}, +/*271 */ { 4, s_3_271, -1, 1, 0}, +/*272 */ { 5, s_3_272, -1, 1, 0}, +/*273 */ { 4, s_3_273, -1, 1, 0}, +/*274 */ { 4, s_3_274, -1, 1, 0}, +/*275 */ { 4, s_3_275, -1, 1, 0}, +/*276 */ { 4, s_3_276, -1, 1, 0}, +/*277 */ { 4, s_3_277, -1, 1, 0}, +/*278 */ { 4, s_3_278, -1, 1, 0}, +/*279 */ { 4, s_3_279, -1, 1, 0}, +/*280 */ { 2, s_3_280, -1, 1, 0}, +/*281 */ { 3, s_3_281, -1, 1, 0}, +/*282 */ { 3, s_3_282, -1, 1, 0} +}; + +static const symbol s_4_0[1] = { 'a' }; +static const symbol s_4_1[1] = { 'e' }; +static const symbol s_4_2[1] = { 'i' }; +static const symbol s_4_3[3] = { 0xC3, 0xAF, 'n' }; +static const symbol s_4_4[1] = { 'o' }; +static const symbol s_4_5[2] = { 'i', 'r' }; +static const symbol s_4_6[1] = { 's' }; +static const symbol s_4_7[2] = { 'i', 's' }; +static const symbol s_4_8[2] = { 'o', 's' }; +static const symbol s_4_9[3] = { 0xC3, 0xAF, 's' }; +static const symbol s_4_10[2] = { 'i', 't' }; +static const symbol s_4_11[2] = { 'e', 'u' }; +static const symbol s_4_12[2] = { 'i', 'u' }; +static const symbol s_4_13[3] = { 'i', 'q', 'u' }; +static const symbol s_4_14[3] = { 'i', 't', 'z' }; +static const symbol s_4_15[2] = { 0xC3, 0xA0 }; +static const symbol s_4_16[2] = { 0xC3, 0xA1 }; +static const symbol s_4_17[2] = { 0xC3, 0xA9 }; +static const symbol s_4_18[2] = { 0xC3, 0xAC }; +static const symbol s_4_19[2] = { 0xC3, 0xAD }; +static const symbol s_4_20[2] = { 0xC3, 0xAF }; +static const symbol s_4_21[2] = { 0xC3, 0xB3 }; + +static const struct among a_4[22] = +{ +/* 0 */ { 1, s_4_0, -1, 1, 0}, +/* 1 */ { 1, s_4_1, -1, 1, 0}, +/* 2 */ { 1, s_4_2, -1, 1, 0}, +/* 3 */ { 3, s_4_3, -1, 1, 0}, +/* 4 */ { 1, s_4_4, -1, 1, 0}, +/* 5 */ { 2, s_4_5, -1, 1, 0}, +/* 6 */ { 1, s_4_6, -1, 1, 0}, +/* 7 */ { 2, s_4_7, 6, 1, 0}, +/* 8 */ { 2, s_4_8, 6, 1, 0}, +/* 9 */ { 3, s_4_9, 6, 1, 0}, +/* 10 */ { 2, s_4_10, -1, 1, 0}, +/* 11 */ { 2, s_4_11, -1, 1, 0}, +/* 12 */ { 2, s_4_12, -1, 1, 0}, +/* 13 */ { 3, s_4_13, -1, 2, 0}, +/* 14 */ { 3, s_4_14, -1, 1, 0}, +/* 15 */ { 2, s_4_15, -1, 1, 0}, +/* 16 */ { 2, s_4_16, -1, 1, 0}, +/* 17 */ { 2, s_4_17, -1, 1, 0}, +/* 18 */ { 2, s_4_18, -1, 1, 0}, +/* 19 */ { 2, s_4_19, -1, 1, 0}, +/* 20 */ { 2, s_4_20, -1, 1, 0}, +/* 21 */ { 2, s_4_21, -1, 1, 0} +}; + +static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, 81, 6, 10 }; + +static const symbol s_0[] = { 'a' }; +static const symbol s_1[] = { 'e' }; +static const symbol s_2[] = { 'i' }; +static const symbol s_3[] = { 'o' }; +static const symbol s_4[] = { 'u' }; +static const symbol s_5[] = { '.' }; +static const symbol s_6[] = { 'l', 'o', 'g' }; +static const symbol s_7[] = { 'i', 'c' }; +static const symbol s_8[] = { 'c' }; +static const symbol s_9[] = { 'i', 'c' }; + +static int r_mark_regions(struct SN_env * z) { /* forwardmode */ + z->I[0] = z->l; /* $p1 = , line 38 */ + z->I[1] = z->l; /* $p2 = , line 39 */ + { int c1 = z->c; /* do, line 41 */ + { /* gopast */ /* grouping v, line 42 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 42 */ + int ret = in_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 42 */ + { /* gopast */ /* grouping v, line 43 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 43 */ + int ret = in_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 43 */ + lab0: + z->c = c1; + } + return 1; +} + +static int r_cleaning(struct SN_env * z) { /* forwardmode */ + int among_var; +/* repeat, line 47 */ + + while(1) { int c1 = z->c; + z->bra = z->c; /* [, line 48 */ + if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((344765187 >> (z->p[z->c + 1] & 0x1f)) & 1)) among_var = 7; else /* substring, line 48 */ + among_var = find_among(z, a_0, 13); + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 48 */ + switch (among_var) { /* among, line 48 */ + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 49 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 51 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 53 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 55 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 57 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_5); /* <-, line 60 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 61 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_R1(struct SN_env * z) { /* backwardmode */ + if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 67 */ + return 1; +} + +static int r_R2(struct SN_env * z) { /* backwardmode */ + if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 68 */ + return 1; +} + +static int r_attached_pronoun(struct SN_env * z) { /* backwardmode */ + z->ket = z->c; /* [, line 71 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1634850 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 71 */ + if (!(find_among_b(z, a_1, 39))) return 0; + z->bra = z->c; /* ], line 71 */ + { int ret = r_R1(z); /* call R1, line 81 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 81 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 86 */ + among_var = find_among_b(z, a_2, 200); /* substring, line 86 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 86 */ + switch (among_var) { /* among, line 86 */ + case 1: + { int ret = r_R1(z); /* call R1, line 110 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 110 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 112 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 112 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R2(z); /* call R2, line 114 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 3, s_6); /* <-, line 114 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); /* call R2, line 116 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 2, s_7); /* <-, line 116 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R1(z); /* call R1, line 118 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 1, s_8); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 123 */ + among_var = find_among_b(z, a_3, 283); /* substring, line 123 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 123 */ + switch (among_var) { /* among, line 123 */ + case 1: + { int ret = r_R1(z); /* call R1, line 168 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 168 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); /* call R2, line 170 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 170 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { /* backwardmode */ + int among_var; + z->ket = z->c; /* [, line 175 */ + among_var = find_among_b(z, a_4, 22); /* substring, line 175 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 175 */ + switch (among_var) { /* among, line 175 */ + case 1: + { int ret = r_R1(z); /* call R1, line 178 */ + if (ret <= 0) return ret; + } + { int ret = slice_del(z); /* delete, line 178 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R1(z); /* call R1, line 180 */ + if (ret <= 0) return ret; + } + { int ret = slice_from_s(z, 2, s_9); /* <-, line 180 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int catalan_UTF_8_stem(struct SN_env * z) { /* forwardmode */ + /* do, line 186 */ + { int ret = r_mark_regions(z); /* call mark_regions, line 186 */ + if (ret < 0) return ret; + } + z->lb = z->c; z->c = z->l; /* backwards, line 187 */ + + { int m1 = z->l - z->c; (void)m1; /* do, line 188 */ + { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 188 */ + if (ret < 0) return ret; + } + z->c = z->l - m1; + } + { int m2 = z->l - z->c; (void)m2; /* do, line 189 */ + { int m3 = z->l - z->c; (void)m3; /* or, line 189 */ + { int ret = r_standard_suffix(z); /* call standard_suffix, line 189 */ + if (ret == 0) goto lab2; + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m3; + { int ret = r_verb_suffix(z); /* call verb_suffix, line 190 */ + if (ret == 0) goto lab0; + if (ret < 0) return ret; + } + } + lab1: + lab0: + z->c = z->l - m2; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 192 */ + { int ret = r_residual_suffix(z); /* call residual_suffix, line 192 */ + if (ret < 0) return ret; + } + z->c = z->l - m4; + } + z->c = z->lb; + { int c5 = z->c; /* do, line 194 */ + { int ret = r_cleaning(z); /* call cleaning, line 194 */ + if (ret < 0) return ret; + } + z->c = c5; + } + return 1; +} + +extern struct SN_env * catalan_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void catalan_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_danish.c b/src/backend/snowball/libstemmer/stem_UTF_8_danish.c index 901491c7b6e30..9bc7e060b1d0b 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_danish.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_danish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -243,10 +242,8 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ } { int m3 = z->l - z->c; (void)m3; /* do, line 72 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 72 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m3; } break; @@ -281,44 +278,34 @@ static int r_undouble(struct SN_env * z) { /* backwardmode */ extern int danish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 86 */ { int ret = r_mark_regions(z); /* call mark_regions, line 86 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 87 */ { int m2 = z->l - z->c; (void)m2; /* do, line 88 */ { int ret = r_main_suffix(z); /* call main_suffix, line 88 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 89 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 89 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 90 */ { int ret = r_other_suffix(z); /* call other_suffix, line 90 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } { int m5 = z->l - z->c; (void)m5; /* do, line 91 */ { int ret = r_undouble(z); /* call undouble, line 91 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m5; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_dutch.c b/src/backend/snowball/libstemmer/stem_UTF_8_dutch.c index 0a61174502d2c..56028832f1f46 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_dutch.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_dutch.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -148,8 +147,9 @@ static const symbol s_14[] = { 'i', 'g' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ int among_var; { int c_test1 = z->c; /* test, line 42 */ - while(1) { /* repeat, line 42 */ - int c2 = z->c; +/* repeat, line 42 */ + + while(1) { int c2 = z->c; z->bra = z->c; /* [, line 43 */ if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((340306450 >> (z->p[z->c + 1] & 0x1f)) & 1)) among_var = 6; else /* substring, line 43 */ among_var = find_among(z, a_0, 11); @@ -206,8 +206,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ lab1: ; } - while(1) { /* repeat, line 58 */ - int c4 = z->c; +/* repeat, line 58 */ + + while(1) { int c4 = z->c; while(1) { /* goto, line 58 */ int c5 = z->c; if (in_grouping_U(z, g_v, 97, 232, 0)) goto lab3; /* grouping v, line 59 */ @@ -282,8 +283,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 75 */ - int c1 = z->c; +/* repeat, line 75 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 77 */ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 89)) among_var = 3; else /* substring, line 77 */ among_var = find_among(z, a_1, 3); @@ -429,50 +431,48 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ } { int m2 = z->l - z->c; (void)m2; /* do, line 120 */ { int ret = r_e_ending(z); /* call e_ending, line 120 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 122 */ z->ket = z->c; /* [, line 122 */ - if (!(eq_s_b(z, 4, s_12))) goto lab2; /* literal, line 122 */ + if (!(eq_s_b(z, 4, s_12))) goto lab1; /* literal, line 122 */ z->bra = z->c; /* ], line 122 */ { int ret = r_R2(z); /* call R2, line 122 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab1; if (ret < 0) return ret; } { int m4 = z->l - z->c; (void)m4; /* not, line 122 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab3; /* literal, line 122 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab2; /* literal, line 122 */ z->c--; - goto lab2; - lab3: + goto lab1; + lab2: z->c = z->l - m4; } { int ret = slice_del(z); /* delete, line 122 */ if (ret < 0) return ret; } z->ket = z->c; /* [, line 123 */ - if (!(eq_s_b(z, 2, s_13))) goto lab2; /* literal, line 123 */ + if (!(eq_s_b(z, 2, s_13))) goto lab1; /* literal, line 123 */ z->bra = z->c; /* ], line 123 */ { int ret = r_en_ending(z); /* call en_ending, line 123 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab2: + lab1: z->c = z->l - m3; } { int m5 = z->l - z->c; (void)m5; /* do, line 126 */ z->ket = z->c; /* [, line 127 */ - if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab4; /* substring, line 127 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3; /* substring, line 127 */ among_var = find_among_b(z, a_4, 6); - if (!(among_var)) goto lab4; + if (!(among_var)) goto lab3; z->bra = z->c; /* ], line 127 */ switch (among_var) { /* among, line 127 */ case 1: { int ret = r_R2(z); /* call R2, line 129 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 129 */ @@ -480,42 +480,42 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ } { int m6 = z->l - z->c; (void)m6; /* or, line 130 */ z->ket = z->c; /* [, line 130 */ - if (!(eq_s_b(z, 2, s_14))) goto lab6; /* literal, line 130 */ + if (!(eq_s_b(z, 2, s_14))) goto lab5; /* literal, line 130 */ z->bra = z->c; /* ], line 130 */ { int ret = r_R2(z); /* call R2, line 130 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab5; if (ret < 0) return ret; } { int m7 = z->l - z->c; (void)m7; /* not, line 130 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7; /* literal, line 130 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6; /* literal, line 130 */ z->c--; - goto lab6; - lab7: + goto lab5; + lab6: z->c = z->l - m7; } { int ret = slice_del(z); /* delete, line 130 */ if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab4; + lab5: z->c = z->l - m6; { int ret = r_undouble(z); /* call undouble, line 130 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } } - lab5: + lab4: break; case 2: { int ret = r_R2(z); /* call R2, line 133 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int m8 = z->l - z->c; (void)m8; /* not, line 133 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab8; /* literal, line 133 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7; /* literal, line 133 */ z->c--; - goto lab4; - lab8: + goto lab3; + lab7: z->c = z->l - m8; } { int ret = slice_del(z); /* delete, line 133 */ @@ -524,20 +524,20 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ break; case 3: { int ret = r_R2(z); /* call R2, line 136 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 136 */ if (ret < 0) return ret; } { int ret = r_e_ending(z); /* call e_ending, line 136 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } break; case 4: { int ret = r_R2(z); /* call R2, line 139 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 139 */ @@ -546,36 +546,36 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ break; case 5: { int ret = r_R2(z); /* call R2, line 142 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } - if (!(z->B[0])) goto lab4; /* Boolean test e_found, line 142 */ + if (!(z->B[0])) goto lab3; /* Boolean test e_found, line 142 */ { int ret = slice_del(z); /* delete, line 142 */ if (ret < 0) return ret; } break; } - lab4: + lab3: z->c = z->l - m5; } { int m9 = z->l - z->c; (void)m9; /* do, line 146 */ - if (out_grouping_b_U(z, g_v_I, 73, 232, 0)) goto lab9; /* non v_I, line 147 */ + if (out_grouping_b_U(z, g_v_I, 73, 232, 0)) goto lab8; /* non v_I, line 147 */ { int m_test10 = z->l - z->c; /* test, line 148 */ - if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab9; /* among, line 149 */ - if (!(find_among_b(z, a_5, 4))) goto lab9; - if (out_grouping_b_U(z, g_v, 97, 232, 0)) goto lab9; /* non v, line 150 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab8; /* among, line 149 */ + if (!(find_among_b(z, a_5, 4))) goto lab8; + if (out_grouping_b_U(z, g_v, 97, 232, 0)) goto lab8; /* non v, line 150 */ z->c = z->l - m_test10; } z->ket = z->c; /* [, line 152 */ { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); - if (ret < 0) goto lab9; + if (ret < 0) goto lab8; z->c = ret; /* next, line 152 */ } z->bra = z->c; /* ], line 152 */ { int ret = slice_del(z); /* delete, line 152 */ if (ret < 0) return ret; } - lab9: + lab8: z->c = z->l - m9; } return 1; @@ -584,35 +584,27 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ extern int dutch_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 159 */ { int ret = r_prelude(z); /* call prelude, line 159 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } { int c2 = z->c; /* do, line 160 */ { int ret = r_mark_regions(z); /* call mark_regions, line 160 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = c2; } z->lb = z->c; z->c = z->l; /* backwards, line 161 */ /* do, line 162 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 162 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } -lab2: z->c = z->lb; { int c3 = z->c; /* do, line 163 */ { int ret = r_postlude(z); /* call postlude, line 163 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = c3; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_english.c b/src/backend/snowball/libstemmer/stem_UTF_8_english.c index ae206f654f6e6..e03c37c98a3bd 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_english.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_english.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -383,8 +382,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ z->c = c2; } { int c3 = z->c; /* do, line 29 */ - while(1) { /* repeat, line 29 */ - int c4 = z->c; +/* repeat, line 29 */ + + while(1) { int c4 = z->c; while(1) { /* goto, line 29 */ int c5 = z->c; if (in_grouping_U(z, g_v, 97, 121, 0)) goto lab4; /* grouping v, line 29 */ @@ -946,8 +946,9 @@ static int r_exception1(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ if (!(z->B[0])) return 0; /* Boolean test Y_found, line 203 */ - while(1) { /* repeat, line 203 */ - int c1 = z->c; +/* repeat, line 203 */ + + while(1) { int c1 = z->c; while(1) { /* goto, line 203 */ int c2 = z->c; z->bra = z->c; /* [, line 203 */ @@ -997,91 +998,71 @@ extern int english_UTF_8_stem(struct SN_env * z) { /* forwardmode */ z->c = c1; /* do, line 209 */ { int ret = r_prelude(z); /* call prelude, line 209 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: /* do, line 210 */ { int ret = r_mark_regions(z); /* call mark_regions, line 210 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->lb = z->c; z->c = z->l; /* backwards, line 211 */ { int m3 = z->l - z->c; (void)m3; /* do, line 213 */ { int ret = r_Step_1a(z); /* call Step_1a, line 213 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* or, line 215 */ { int ret = r_exception2(z); /* call exception2, line 215 */ - if (ret == 0) goto lab8; + if (ret == 0) goto lab5; if (ret < 0) return ret; } - goto lab7; - lab8: + goto lab4; + lab5: z->c = z->l - m4; { int m5 = z->l - z->c; (void)m5; /* do, line 217 */ { int ret = r_Step_1b(z); /* call Step_1b, line 217 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m5; } { int m6 = z->l - z->c; (void)m6; /* do, line 218 */ { int ret = r_Step_1c(z); /* call Step_1c, line 218 */ - if (ret == 0) goto lab10; if (ret < 0) return ret; } - lab10: z->c = z->l - m6; } { int m7 = z->l - z->c; (void)m7; /* do, line 220 */ { int ret = r_Step_2(z); /* call Step_2, line 220 */ - if (ret == 0) goto lab11; if (ret < 0) return ret; } - lab11: z->c = z->l - m7; } { int m8 = z->l - z->c; (void)m8; /* do, line 221 */ { int ret = r_Step_3(z); /* call Step_3, line 221 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 222 */ { int ret = r_Step_4(z); /* call Step_4, line 222 */ - if (ret == 0) goto lab13; if (ret < 0) return ret; } - lab13: z->c = z->l - m9; } { int m10 = z->l - z->c; (void)m10; /* do, line 224 */ { int ret = r_Step_5(z); /* call Step_5, line 224 */ - if (ret == 0) goto lab14; if (ret < 0) return ret; } - lab14: z->c = z->l - m10; } } - lab7: + lab4: z->c = z->lb; { int c11 = z->c; /* do, line 227 */ { int ret = r_postlude(z); /* call postlude, line 227 */ - if (ret == 0) goto lab15; if (ret < 0) return ret; } - lab15: z->c = c11; } } diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_finnish.c b/src/backend/snowball/libstemmer/stem_UTF_8_finnish.c index 0cbb64d65bfe8..d99456f323923 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_finnish.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_finnish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -659,10 +658,8 @@ static int r_tidy(struct SN_env * z) { /* backwardmode */ extern int finnish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 186 */ { int ret = r_mark_regions(z); /* call mark_regions, line 186 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->B[0] = 0; /* unset ending_removed, line 187 */ @@ -670,63 +667,49 @@ extern int finnish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m2 = z->l - z->c; (void)m2; /* do, line 189 */ { int ret = r_particle_etc(z); /* call particle_etc, line 189 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 190 */ { int ret = r_possessive(z); /* call possessive, line 190 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 191 */ { int ret = r_case_ending(z); /* call case_ending, line 191 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } { int m5 = z->l - z->c; (void)m5; /* do, line 192 */ { int ret = r_other_endings(z); /* call other_endings, line 192 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m5; } /* or, line 193 */ - if (!(z->B[0])) goto lab6; /* Boolean test ending_removed, line 193 */ + if (!(z->B[0])) goto lab1; /* Boolean test ending_removed, line 193 */ { int m6 = z->l - z->c; (void)m6; /* do, line 193 */ { int ret = r_i_plural(z); /* call i_plural, line 193 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m6; } - goto lab5; -lab6: + goto lab0; +lab1: { int m7 = z->l - z->c; (void)m7; /* do, line 193 */ { int ret = r_t_plural(z); /* call t_plural, line 193 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m7; } -lab5: +lab0: { int m8 = z->l - z->c; (void)m8; /* do, line 194 */ { int ret = r_tidy(z); /* call tidy, line 194 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m8; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_french.c b/src/backend/snowball/libstemmer/stem_UTF_8_french.c index 9e12865c67892..fa4a1c8f30578 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_french.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_french.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -416,8 +415,9 @@ static const symbol s_38[] = { 0xC3, 0xA7 }; static const symbol s_39[] = { 'c' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ - while(1) { /* repeat, line 38 */ - int c1 = z->c; +/* repeat, line 38 */ + + while(1) { int c1 = z->c; while(1) { /* goto, line 38 */ int c2 = z->c; { int c3 = z->c; /* or, line 44 */ @@ -578,8 +578,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 79 */ - int c1 = z->c; +/* repeat, line 79 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 81 */ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652352 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 7; else /* substring, line 81 */ among_var = find_among(z, a_1, 7); @@ -1137,8 +1138,7 @@ static int r_un_double(struct SN_env * z) { /* backwardmode */ static int r_un_accent(struct SN_env * z) { /* backwardmode */ { int i = 1; - while(1) { /* atleast, line 222 */ - if (out_grouping_b_U(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 222 */ + while(1) { if (out_grouping_b_U(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 222 */ i--; continue; lab0: @@ -1165,18 +1165,14 @@ static int r_un_accent(struct SN_env * z) { /* backwardmode */ extern int french_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 229 */ { int ret = r_prelude(z); /* call prelude, line 229 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 230 */ { int ret = r_mark_regions(z); /* call mark_regions, line 230 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 231 */ { int m2 = z->l - z->c; (void)m2; /* do, line 233 */ @@ -1184,84 +1180,78 @@ extern int french_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m4 = z->l - z->c; (void)m4; /* and, line 239 */ { int m5 = z->l - z->c; (void)m5; /* or, line 235 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 235 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab3; + lab4: z->c = z->l - m5; { int ret = r_i_verb_suffix(z); /* call i_verb_suffix, line 236 */ - if (ret == 0) goto lab7; + if (ret == 0) goto lab5; if (ret < 0) return ret; } - goto lab5; - lab7: + goto lab3; + lab5: z->c = z->l - m5; { int ret = r_verb_suffix(z); /* call verb_suffix, line 237 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab2; if (ret < 0) return ret; } } - lab5: + lab3: z->c = z->l - m4; { int m6 = z->l - z->c; (void)m6; /* try, line 240 */ z->ket = z->c; /* [, line 240 */ { int m7 = z->l - z->c; (void)m7; /* or, line 240 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab10; /* literal, line 240 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab8; /* literal, line 240 */ z->c--; z->bra = z->c; /* ], line 240 */ { int ret = slice_from_s(z, 1, s_37); /* <-, line 240 */ if (ret < 0) return ret; } - goto lab9; - lab10: + goto lab7; + lab8: z->c = z->l - m7; - if (!(eq_s_b(z, 2, s_38))) { z->c = z->l - m6; goto lab8; } /* literal, line 241 */ + if (!(eq_s_b(z, 2, s_38))) { z->c = z->l - m6; goto lab6; } /* literal, line 241 */ z->bra = z->c; /* ], line 241 */ { int ret = slice_from_s(z, 1, s_39); /* <-, line 241 */ if (ret < 0) return ret; } } - lab9: - lab8: + lab7: + lab6: ; } } - goto lab3; - lab4: + goto lab1; + lab2: z->c = z->l - m3; { int ret = r_residual_suffix(z); /* call residual_suffix, line 244 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab3: - lab2: + lab1: + lab0: z->c = z->l - m2; } { int m8 = z->l - z->c; (void)m8; /* do, line 249 */ { int ret = r_un_double(z); /* call un_double, line 249 */ - if (ret == 0) goto lab11; if (ret < 0) return ret; } - lab11: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 250 */ { int ret = r_un_accent(z); /* call un_accent, line 250 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m9; } z->c = z->lb; { int c10 = z->c; /* do, line 252 */ { int ret = r_postlude(z); /* call postlude, line 252 */ - if (ret == 0) goto lab13; if (ret < 0) return ret; } - lab13: z->c = c10; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_german.c b/src/backend/snowball/libstemmer/stem_UTF_8_german.c index 1a8b5924b4198..41a3b4eec347b 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_german.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_german.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -127,8 +126,9 @@ static const symbol s_11[] = { 'e', 'n' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ { int c_test1 = z->c; /* test, line 35 */ - while(1) { /* repeat, line 35 */ - int c2 = z->c; +/* repeat, line 35 */ + + while(1) { int c2 = z->c; { int c3 = z->c; /* or, line 38 */ z->bra = z->c; /* [, line 37 */ if (!(eq_s(z, 2, s_0))) goto lab2; /* literal, line 37 */ @@ -152,8 +152,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ } z->c = c_test1; } - while(1) { /* repeat, line 41 */ - int c4 = z->c; +/* repeat, line 41 */ + + while(1) { int c4 = z->c; while(1) { /* goto, line 41 */ int c5 = z->c; if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab4; /* grouping v, line 42 */ @@ -237,8 +238,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 60 */ - int c1 = z->c; +/* repeat, line 60 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 62 */ among_var = find_among(z, a_0, 6); /* substring, line 62 */ if (!(among_var)) goto lab0; @@ -469,35 +471,27 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ extern int german_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 134 */ { int ret = r_prelude(z); /* call prelude, line 134 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } { int c2 = z->c; /* do, line 135 */ { int ret = r_mark_regions(z); /* call mark_regions, line 135 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = c2; } z->lb = z->c; z->c = z->l; /* backwards, line 136 */ /* do, line 137 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 137 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } -lab2: z->c = z->lb; { int c3 = z->c; /* do, line 138 */ { int ret = r_postlude(z); /* call postlude, line 138 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = c3; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_greek.c b/src/backend/snowball/libstemmer/stem_UTF_8_greek.c index 6566d9cafb99e..8810357358f87 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_greek.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_greek.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -2358,143 +2357,144 @@ static const symbol s_105[] = { 0xCE, 0xBF, 0xCF, 0x85, 0xCE, 0xBC }; static const symbol s_106[] = { 0xCE, 0xBC, 0xCE, 0xB1 }; static int r_has_min_length(struct SN_env * z) { /* backwardmode */ - if (!(len_utf8(z->p) >= 3)) return 0; /* $( >= ), line 111 */ + if (!(len_utf8(z->p) >= 3)) return 0; /* $( >= ), line 109 */ return 1; } static int r_tolower(struct SN_env * z) { /* backwardmode */ int among_var; - while(1) { /* repeat, line 115 */ - int m1 = z->l - z->c; (void)m1; - z->ket = z->c; /* [, line 116 */ - among_var = find_among_b(z, a_0, 46); /* substring, line 116 */ +/* repeat, line 113 */ + + while(1) { int m1 = z->l - z->c; (void)m1; + z->ket = z->c; /* [, line 114 */ + among_var = find_among_b(z, a_0, 46); /* substring, line 114 */ if (!(among_var)) goto lab0; - z->bra = z->c; /* ], line 116 */ - switch (among_var) { /* among, line 116 */ + z->bra = z->c; /* ], line 114 */ + switch (among_var) { /* among, line 114 */ case 1: - { int ret = slice_from_s(z, 2, s_0); /* <-, line 117 */ + { int ret = slice_from_s(z, 2, s_0); /* <-, line 115 */ if (ret < 0) return ret; } break; case 2: - { int ret = slice_from_s(z, 2, s_1); /* <-, line 118 */ + { int ret = slice_from_s(z, 2, s_1); /* <-, line 116 */ if (ret < 0) return ret; } break; case 3: - { int ret = slice_from_s(z, 2, s_2); /* <-, line 119 */ + { int ret = slice_from_s(z, 2, s_2); /* <-, line 117 */ if (ret < 0) return ret; } break; case 4: - { int ret = slice_from_s(z, 2, s_3); /* <-, line 120 */ + { int ret = slice_from_s(z, 2, s_3); /* <-, line 118 */ if (ret < 0) return ret; } break; case 5: - { int ret = slice_from_s(z, 2, s_4); /* <-, line 121 */ + { int ret = slice_from_s(z, 2, s_4); /* <-, line 119 */ if (ret < 0) return ret; } break; case 6: - { int ret = slice_from_s(z, 2, s_5); /* <-, line 122 */ + { int ret = slice_from_s(z, 2, s_5); /* <-, line 120 */ if (ret < 0) return ret; } break; case 7: - { int ret = slice_from_s(z, 2, s_6); /* <-, line 123 */ + { int ret = slice_from_s(z, 2, s_6); /* <-, line 121 */ if (ret < 0) return ret; } break; case 8: - { int ret = slice_from_s(z, 2, s_7); /* <-, line 124 */ + { int ret = slice_from_s(z, 2, s_7); /* <-, line 122 */ if (ret < 0) return ret; } break; case 9: - { int ret = slice_from_s(z, 2, s_8); /* <-, line 125 */ + { int ret = slice_from_s(z, 2, s_8); /* <-, line 123 */ if (ret < 0) return ret; } break; case 10: - { int ret = slice_from_s(z, 2, s_9); /* <-, line 126 */ + { int ret = slice_from_s(z, 2, s_9); /* <-, line 124 */ if (ret < 0) return ret; } break; case 11: - { int ret = slice_from_s(z, 2, s_10); /* <-, line 127 */ + { int ret = slice_from_s(z, 2, s_10); /* <-, line 125 */ if (ret < 0) return ret; } break; case 12: - { int ret = slice_from_s(z, 2, s_11); /* <-, line 128 */ + { int ret = slice_from_s(z, 2, s_11); /* <-, line 126 */ if (ret < 0) return ret; } break; case 13: - { int ret = slice_from_s(z, 2, s_12); /* <-, line 129 */ + { int ret = slice_from_s(z, 2, s_12); /* <-, line 127 */ if (ret < 0) return ret; } break; case 14: - { int ret = slice_from_s(z, 2, s_13); /* <-, line 130 */ + { int ret = slice_from_s(z, 2, s_13); /* <-, line 128 */ if (ret < 0) return ret; } break; case 15: - { int ret = slice_from_s(z, 2, s_14); /* <-, line 131 */ + { int ret = slice_from_s(z, 2, s_14); /* <-, line 129 */ if (ret < 0) return ret; } break; case 16: - { int ret = slice_from_s(z, 2, s_15); /* <-, line 132 */ + { int ret = slice_from_s(z, 2, s_15); /* <-, line 130 */ if (ret < 0) return ret; } break; case 17: - { int ret = slice_from_s(z, 2, s_16); /* <-, line 133 */ + { int ret = slice_from_s(z, 2, s_16); /* <-, line 131 */ if (ret < 0) return ret; } break; case 18: - { int ret = slice_from_s(z, 2, s_17); /* <-, line 134 */ + { int ret = slice_from_s(z, 2, s_17); /* <-, line 132 */ if (ret < 0) return ret; } break; case 19: - { int ret = slice_from_s(z, 2, s_18); /* <-, line 135 */ + { int ret = slice_from_s(z, 2, s_18); /* <-, line 133 */ if (ret < 0) return ret; } break; case 20: - { int ret = slice_from_s(z, 2, s_19); /* <-, line 136 */ + { int ret = slice_from_s(z, 2, s_19); /* <-, line 134 */ if (ret < 0) return ret; } break; case 21: - { int ret = slice_from_s(z, 2, s_20); /* <-, line 137 */ + { int ret = slice_from_s(z, 2, s_20); /* <-, line 135 */ if (ret < 0) return ret; } break; case 22: - { int ret = slice_from_s(z, 2, s_21); /* <-, line 138 */ + { int ret = slice_from_s(z, 2, s_21); /* <-, line 136 */ if (ret < 0) return ret; } break; case 23: - { int ret = slice_from_s(z, 2, s_22); /* <-, line 139 */ + { int ret = slice_from_s(z, 2, s_22); /* <-, line 137 */ if (ret < 0) return ret; } break; case 24: - { int ret = slice_from_s(z, 2, s_23); /* <-, line 140 */ + { int ret = slice_from_s(z, 2, s_23); /* <-, line 138 */ if (ret < 0) return ret; } break; case 25: { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); if (ret < 0) goto lab0; - z->c = ret; /* next, line 162 */ + z->c = ret; /* next, line 160 */ } break; } @@ -2508,114 +2508,96 @@ static int r_tolower(struct SN_env * z) { /* backwardmode */ static int r_step1(struct SN_env * z) { /* backwardmode */ int among_var; - z->ket = z->c; /* [, line 168 */ - among_var = find_among_b(z, a_1, 40); /* substring, line 168 */ + z->ket = z->c; /* [, line 166 */ + among_var = find_among_b(z, a_1, 40); /* substring, line 166 */ if (!(among_var)) return 0; - z->bra = z->c; /* ], line 168 */ - switch (among_var) { /* among, line 168 */ + z->bra = z->c; /* ], line 166 */ + switch (among_var) { /* among, line 166 */ case 1: - { int ret = slice_from_s(z, 4, s_24); /* <-, line 169 */ + { int ret = slice_from_s(z, 4, s_24); /* <-, line 167 */ if (ret < 0) return ret; } break; case 2: - { int ret = slice_from_s(z, 6, s_25); /* <-, line 170 */ + { int ret = slice_from_s(z, 6, s_25); /* <-, line 168 */ if (ret < 0) return ret; } break; case 3: - { int ret = slice_from_s(z, 6, s_26); /* <-, line 171 */ + { int ret = slice_from_s(z, 6, s_26); /* <-, line 169 */ if (ret < 0) return ret; } break; case 4: - { int ret = slice_from_s(z, 4, s_27); /* <-, line 172 */ + { int ret = slice_from_s(z, 4, s_27); /* <-, line 170 */ if (ret < 0) return ret; } break; case 5: - { int ret = slice_from_s(z, 8, s_28); /* <-, line 173 */ + { int ret = slice_from_s(z, 8, s_28); /* <-, line 171 */ if (ret < 0) return ret; } break; case 6: - { int ret = slice_from_s(z, 6, s_29); /* <-, line 174 */ + { int ret = slice_from_s(z, 6, s_29); /* <-, line 172 */ if (ret < 0) return ret; } break; case 7: - { int ret = slice_from_s(z, 6, s_30); /* <-, line 175 */ + { int ret = slice_from_s(z, 6, s_30); /* <-, line 173 */ if (ret < 0) return ret; } break; case 8: - { int ret = slice_from_s(z, 6, s_31); /* <-, line 176 */ + { int ret = slice_from_s(z, 6, s_31); /* <-, line 174 */ if (ret < 0) return ret; } break; case 9: - { int ret = slice_from_s(z, 4, s_32); /* <-, line 177 */ + { int ret = slice_from_s(z, 4, s_32); /* <-, line 175 */ if (ret < 0) return ret; } break; case 10: - { int ret = slice_from_s(z, 12, s_33); /* <-, line 178 */ + { int ret = slice_from_s(z, 12, s_33); /* <-, line 176 */ if (ret < 0) return ret; } break; case 11: - { int ret = slice_from_s(z, 10, s_34); /* <-, line 179 */ + { int ret = slice_from_s(z, 10, s_34); /* <-, line 177 */ if (ret < 0) return ret; } break; } - z->B[0] = 0; /* unset test1, line 181 */ + z->B[0] = 0; /* unset test1, line 179 */ return 1; } static int r_steps1(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 185 */ - if (!(find_among_b(z, a_4, 14))) return 0; /* substring, line 185 */ - z->bra = z->c; /* ], line 185 */ - { int ret = slice_del(z); /* delete, line 188 */ + z->ket = z->c; /* [, line 183 */ + if (!(find_among_b(z, a_4, 14))) return 0; /* substring, line 183 */ + z->bra = z->c; /* ], line 183 */ + { int ret = slice_del(z); /* delete, line 186 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 189 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 193 */ - z->ket = z->c; /* [, line 190 */ - if (z->c - 3 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-2145255424 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab1; /* substring, line 190 */ + z->B[0] = 0; /* unset test1, line 187 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 191 */ + z->ket = z->c; /* [, line 188 */ + z->bra = z->c; /* ], line 188 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-2145255424 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab1; /* substring, line 188 */ if (!(find_among_b(z, a_2, 9))) goto lab1; - z->bra = z->c; /* ], line 190 */ - if (z->c > z->lb) goto lab1; /* atlimit, line 190 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 192 */ - if (z->S[0] == 0) return -1; /* -> s, line 192 */ - { int ret = slice_from_s(z, 2, s_35); /* <-, line 192 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 192 */ - z->c = saved_c; - } + if (z->c > z->lb) goto lab1; /* atlimit, line 188 */ + { int ret = slice_from_s(z, 2, s_35); /* <-, line 190 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 194 */ - if (!(find_among_b(z, a_3, 22))) return 0; /* substring, line 194 */ - z->bra = z->c; /* ], line 194 */ - if (z->c > z->lb) return 0; /* atlimit, line 194 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 198 */ - if (z->S[0] == 0) return -1; /* -> s, line 198 */ - { int ret = slice_from_s(z, 4, s_36); /* <-, line 198 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 198 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 192 */ + z->bra = z->c; /* ], line 192 */ + if (!(find_among_b(z, a_3, 22))) return 0; /* substring, line 192 */ + if (z->c > z->lb) return 0; /* atlimit, line 192 */ + { int ret = slice_from_s(z, 4, s_36); /* <-, line 196 */ if (ret < 0) return ret; } } @@ -2624,83 +2606,56 @@ static int r_steps1(struct SN_env * z) { /* backwardmode */ } static int r_steps2(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 205 */ - if (!(find_among_b(z, a_6, 7))) return 0; /* substring, line 205 */ - z->bra = z->c; /* ], line 205 */ - { int ret = slice_del(z); /* delete, line 207 */ + z->ket = z->c; /* [, line 203 */ + if (!(find_among_b(z, a_6, 7))) return 0; /* substring, line 203 */ + z->bra = z->c; /* ], line 203 */ + { int ret = slice_del(z); /* delete, line 205 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 208 */ - z->ket = z->c; /* [, line 209 */ - if (!(find_among_b(z, a_5, 8))) return 0; /* substring, line 209 */ - z->bra = z->c; /* ], line 209 */ - if (z->c > z->lb) return 0; /* atlimit, line 209 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 210 */ - if (z->S[0] == 0) return -1; /* -> s, line 210 */ - { int ret = slice_from_s(z, 4, s_37); /* <-, line 210 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 210 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 206 */ + z->ket = z->c; /* [, line 207 */ + z->bra = z->c; /* ], line 207 */ + if (!(find_among_b(z, a_5, 8))) return 0; /* substring, line 207 */ + if (z->c > z->lb) return 0; /* atlimit, line 207 */ + { int ret = slice_from_s(z, 4, s_37); /* <-, line 208 */ if (ret < 0) return ret; } return 1; } static int r_steps3(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 217 */ - if (!(find_among_b(z, a_9, 7))) return 0; /* substring, line 217 */ - z->bra = z->c; /* ], line 217 */ - { int ret = slice_del(z); /* delete, line 219 */ + z->ket = z->c; /* [, line 215 */ + if (!(find_among_b(z, a_9, 7))) return 0; /* substring, line 215 */ + z->bra = z->c; /* ], line 215 */ + { int ret = slice_del(z); /* delete, line 217 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 220 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 221 */ - if (!(eq_s_b(z, 6, s_38))) goto lab1; /* literal, line 221 */ - if (z->c > z->lb) goto lab1; /* atlimit, line 221 */ - { int ret = slice_from_s(z, 4, s_39); /* <-, line 221 */ + z->B[0] = 0; /* unset test1, line 218 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 219 */ + if (!(eq_s_b(z, 6, s_38))) goto lab1; /* literal, line 219 */ + if (z->c > z->lb) goto lab1; /* atlimit, line 219 */ + { int ret = slice_from_s(z, 4, s_39); /* <-, line 219 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 222 */ - if (z->c - 3 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-2145255424 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2; /* substring, line 222 */ + z->ket = z->c; /* [, line 220 */ + z->bra = z->c; /* ], line 220 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-2145255424 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2; /* substring, line 220 */ if (!(find_among_b(z, a_7, 19))) goto lab2; - z->bra = z->c; /* ], line 222 */ - if (z->c > z->lb) goto lab2; /* atlimit, line 222 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 226 */ - if (z->S[0] == 0) return -1; /* -> s, line 226 */ - { int ret = slice_from_s(z, 2, s_40); /* <-, line 226 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 226 */ - z->c = saved_c; - } + if (z->c > z->lb) goto lab2; /* atlimit, line 220 */ + { int ret = slice_from_s(z, 2, s_40); /* <-, line 224 */ if (ret < 0) return ret; } goto lab0; lab2: z->c = z->l - m1; - z->ket = z->c; /* [, line 228 */ - if (!(find_among_b(z, a_8, 13))) return 0; /* substring, line 228 */ - z->bra = z->c; /* ], line 228 */ - if (z->c > z->lb) return 0; /* atlimit, line 228 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 231 */ - if (z->S[0] == 0) return -1; /* -> s, line 231 */ - { int ret = slice_from_s(z, 4, s_41); /* <-, line 231 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 231 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 226 */ + z->bra = z->c; /* ], line 226 */ + if (!(find_among_b(z, a_8, 13))) return 0; /* substring, line 226 */ + if (z->c > z->lb) return 0; /* atlimit, line 226 */ + { int ret = slice_from_s(z, 4, s_41); /* <-, line 229 */ if (ret < 0) return ret; } } @@ -2709,76 +2664,49 @@ static int r_steps3(struct SN_env * z) { /* backwardmode */ } static int r_steps4(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 238 */ - if (!(find_among_b(z, a_11, 7))) return 0; /* substring, line 238 */ - z->bra = z->c; /* ], line 238 */ - { int ret = slice_del(z); /* delete, line 240 */ + z->ket = z->c; /* [, line 236 */ + if (!(find_among_b(z, a_11, 7))) return 0; /* substring, line 236 */ + z->bra = z->c; /* ], line 236 */ + { int ret = slice_del(z); /* delete, line 238 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 241 */ - z->ket = z->c; /* [, line 242 */ - if (z->c - 3 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-2145255424 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 242 */ + z->B[0] = 0; /* unset test1, line 239 */ + z->ket = z->c; /* [, line 240 */ + z->bra = z->c; /* ], line 240 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-2145255424 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 240 */ if (!(find_among_b(z, a_10, 19))) return 0; - z->bra = z->c; /* ], line 242 */ - if (z->c > z->lb) return 0; /* atlimit, line 242 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 246 */ - if (z->S[0] == 0) return -1; /* -> s, line 246 */ - { int ret = slice_from_s(z, 2, s_42); /* <-, line 246 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 246 */ - z->c = saved_c; - } + if (z->c > z->lb) return 0; /* atlimit, line 240 */ + { int ret = slice_from_s(z, 2, s_42); /* <-, line 244 */ if (ret < 0) return ret; } return 1; } static int r_steps5(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 253 */ - if (!(find_among_b(z, a_14, 11))) return 0; /* substring, line 253 */ - z->bra = z->c; /* ], line 253 */ - { int ret = slice_del(z); /* delete, line 256 */ + z->ket = z->c; /* [, line 251 */ + if (!(find_among_b(z, a_14, 11))) return 0; /* substring, line 251 */ + z->bra = z->c; /* ], line 251 */ + { int ret = slice_del(z); /* delete, line 254 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 257 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 261 */ - z->ket = z->c; /* [, line 258 */ - if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 181 && z->p[z->c - 1] != 191)) goto lab1; /* substring, line 258 */ + z->B[0] = 0; /* unset test1, line 255 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 259 */ + z->ket = z->c; /* [, line 256 */ + z->bra = z->c; /* ], line 256 */ + if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 181 && z->p[z->c - 1] != 191)) goto lab1; /* substring, line 256 */ if (!(find_among_b(z, a_12, 7))) goto lab1; - z->bra = z->c; /* ], line 258 */ - if (z->c > z->lb) goto lab1; /* atlimit, line 258 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 260 */ - if (z->S[0] == 0) return -1; /* -> s, line 260 */ - { int ret = slice_from_s(z, 2, s_43); /* <-, line 260 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 260 */ - z->c = saved_c; - } + if (z->c > z->lb) goto lab1; /* atlimit, line 256 */ + { int ret = slice_from_s(z, 2, s_43); /* <-, line 258 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 262 */ - if (!(find_among_b(z, a_13, 33))) return 0; /* substring, line 262 */ - z->bra = z->c; /* ], line 262 */ - if (z->c > z->lb) return 0; /* atlimit, line 262 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 266 */ - if (z->S[0] == 0) return -1; /* -> s, line 266 */ - { int ret = slice_from_s(z, 6, s_44); /* <-, line 266 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 266 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 260 */ + z->bra = z->c; /* ], line 260 */ + if (!(find_among_b(z, a_13, 33))) return 0; /* substring, line 260 */ + if (z->c > z->lb) return 0; /* atlimit, line 260 */ + { int ret = slice_from_s(z, 6, s_44); /* <-, line 264 */ if (ret < 0) return ret; } } @@ -2788,107 +2716,89 @@ static int r_steps5(struct SN_env * z) { /* backwardmode */ static int r_steps6(struct SN_env * z) { /* backwardmode */ int among_var; - z->ket = z->c; /* [, line 273 */ - if (!(find_among_b(z, a_18, 6))) return 0; /* substring, line 273 */ - z->bra = z->c; /* ], line 273 */ - { int ret = slice_del(z); /* delete, line 275 */ + z->ket = z->c; /* [, line 271 */ + if (!(find_among_b(z, a_18, 6))) return 0; /* substring, line 271 */ + z->bra = z->c; /* ], line 271 */ + { int ret = slice_del(z); /* delete, line 273 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 276 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 280 */ - z->ket = z->c; /* [, line 277 */ - if (z->c - 3 <= z->lb || z->p[z->c - 1] != 181) goto lab1; /* substring, line 277 */ + z->B[0] = 0; /* unset test1, line 274 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 278 */ + z->ket = z->c; /* [, line 275 */ + z->bra = z->c; /* ], line 275 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] != 181) goto lab1; /* substring, line 275 */ if (!(find_among_b(z, a_15, 5))) goto lab1; - z->bra = z->c; /* ], line 277 */ - if (z->c > z->lb) goto lab1; /* atlimit, line 277 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 279 */ - if (z->S[0] == 0) return -1; /* -> s, line 279 */ - { int ret = slice_from_s(z, 6, s_45); /* <-, line 279 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 279 */ - z->c = saved_c; - } + if (z->c > z->lb) goto lab1; /* atlimit, line 275 */ + { int ret = slice_from_s(z, 6, s_45); /* <-, line 277 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 281 */ - if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) goto lab2; /* substring, line 281 */ + z->ket = z->c; /* [, line 279 */ + z->bra = z->c; /* ], line 279 */ + if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) goto lab2; /* substring, line 279 */ if (!(find_among_b(z, a_16, 2))) goto lab2; - z->bra = z->c; /* ], line 281 */ - if (z->c > z->lb) goto lab2; /* atlimit, line 281 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 283 */ - if (z->S[0] == 0) return -1; /* -> s, line 283 */ - { int ret = slice_from_s(z, 2, s_46); /* <-, line 283 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 283 */ - z->c = saved_c; - } + if (z->c > z->lb) goto lab2; /* atlimit, line 279 */ + { int ret = slice_from_s(z, 2, s_46); /* <-, line 281 */ if (ret < 0) return ret; } goto lab0; lab2: z->c = z->l - m1; - z->ket = z->c; /* [, line 285 */ - if (z->c - 9 <= z->lb || (z->p[z->c - 1] != 186 && z->p[z->c - 1] != 189)) return 0; /* substring, line 285 */ + z->ket = z->c; /* [, line 283 */ + if (z->c - 9 <= z->lb || (z->p[z->c - 1] != 186 && z->p[z->c - 1] != 189)) return 0; /* substring, line 283 */ among_var = find_among_b(z, a_17, 10); if (!(among_var)) return 0; - z->bra = z->c; /* ], line 285 */ - switch (among_var) { /* among, line 285 */ + z->bra = z->c; /* ], line 283 */ + switch (among_var) { /* among, line 283 */ case 1: - { int ret = slice_from_s(z, 12, s_47); /* <-, line 286 */ + { int ret = slice_from_s(z, 12, s_47); /* <-, line 284 */ if (ret < 0) return ret; } break; case 2: - { int ret = slice_from_s(z, 8, s_48); /* <-, line 287 */ + { int ret = slice_from_s(z, 8, s_48); /* <-, line 285 */ if (ret < 0) return ret; } break; case 3: - { int ret = slice_from_s(z, 10, s_49); /* <-, line 288 */ + { int ret = slice_from_s(z, 10, s_49); /* <-, line 286 */ if (ret < 0) return ret; } break; case 4: - { int ret = slice_from_s(z, 6, s_50); /* <-, line 289 */ + { int ret = slice_from_s(z, 6, s_50); /* <-, line 287 */ if (ret < 0) return ret; } break; case 5: - { int ret = slice_from_s(z, 12, s_51); /* <-, line 290 */ + { int ret = slice_from_s(z, 12, s_51); /* <-, line 288 */ if (ret < 0) return ret; } break; case 6: - { int ret = slice_from_s(z, 10, s_52); /* <-, line 291 */ + { int ret = slice_from_s(z, 10, s_52); /* <-, line 289 */ if (ret < 0) return ret; } break; case 7: - { int ret = slice_from_s(z, 6, s_53); /* <-, line 292 */ + { int ret = slice_from_s(z, 6, s_53); /* <-, line 290 */ if (ret < 0) return ret; } break; case 8: - { int ret = slice_from_s(z, 16, s_54); /* <-, line 293 */ + { int ret = slice_from_s(z, 16, s_54); /* <-, line 291 */ if (ret < 0) return ret; } break; case 9: - { int ret = slice_from_s(z, 12, s_55); /* <-, line 294 */ + { int ret = slice_from_s(z, 12, s_55); /* <-, line 292 */ if (ret < 0) return ret; } break; case 10: - { int ret = slice_from_s(z, 10, s_56); /* <-, line 295 */ + { int ret = slice_from_s(z, 10, s_56); /* <-, line 293 */ if (ret < 0) return ret; } break; @@ -2899,94 +2809,58 @@ static int r_steps6(struct SN_env * z) { /* backwardmode */ } static int r_steps7(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 302 */ - if (z->c - 9 <= z->lb || (z->p[z->c - 1] != 177 && z->p[z->c - 1] != 185)) return 0; /* substring, line 302 */ + z->ket = z->c; /* [, line 300 */ + if (z->c - 9 <= z->lb || (z->p[z->c - 1] != 177 && z->p[z->c - 1] != 185)) return 0; /* substring, line 300 */ if (!(find_among_b(z, a_20, 4))) return 0; - z->bra = z->c; /* ], line 302 */ - { int ret = slice_del(z); /* delete, line 304 */ + z->bra = z->c; /* ], line 300 */ + { int ret = slice_del(z); /* delete, line 302 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 305 */ - z->ket = z->c; /* [, line 306 */ - if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 135)) return 0; /* substring, line 306 */ + z->B[0] = 0; /* unset test1, line 303 */ + z->ket = z->c; /* [, line 304 */ + z->bra = z->c; /* ], line 304 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 135)) return 0; /* substring, line 304 */ if (!(find_among_b(z, a_19, 2))) return 0; - z->bra = z->c; /* ], line 306 */ - if (z->c > z->lb) return 0; /* atlimit, line 306 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 308 */ - if (z->S[0] == 0) return -1; /* -> s, line 308 */ - { int ret = slice_from_s(z, 8, s_57); /* <-, line 308 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 308 */ - z->c = saved_c; - } + if (z->c > z->lb) return 0; /* atlimit, line 304 */ + { int ret = slice_from_s(z, 8, s_57); /* <-, line 306 */ if (ret < 0) return ret; } return 1; } static int r_steps8(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 315 */ - if (!(find_among_b(z, a_23, 8))) return 0; /* substring, line 315 */ - z->bra = z->c; /* ], line 315 */ - { int ret = slice_del(z); /* delete, line 317 */ + z->ket = z->c; /* [, line 313 */ + if (!(find_among_b(z, a_23, 8))) return 0; /* substring, line 313 */ + z->bra = z->c; /* ], line 313 */ + { int ret = slice_del(z); /* delete, line 315 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 318 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 325 */ - z->ket = z->c; /* [, line 319 */ - if (!(find_among_b(z, a_21, 33))) goto lab1; /* substring, line 319 */ - z->bra = z->c; /* ], line 319 */ - if (z->c > z->lb) goto lab1; /* atlimit, line 319 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 324 */ - if (z->S[0] == 0) return -1; /* -> s, line 324 */ - { int ret = slice_from_s(z, 4, s_58); /* <-, line 324 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 324 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 316 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 323 */ + z->ket = z->c; /* [, line 317 */ + z->bra = z->c; /* ], line 317 */ + if (!(find_among_b(z, a_21, 33))) goto lab1; /* substring, line 317 */ + if (z->c > z->lb) goto lab1; /* atlimit, line 317 */ + { int ret = slice_from_s(z, 4, s_58); /* <-, line 322 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 326 */ - if (!(find_among_b(z, a_22, 15))) goto lab2; /* substring, line 326 */ - z->bra = z->c; /* ], line 326 */ - if (z->c > z->lb) goto lab2; /* atlimit, line 326 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 329 */ - if (z->S[0] == 0) return -1; /* -> s, line 329 */ - { int ret = slice_from_s(z, 6, s_59); /* <-, line 329 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 329 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 324 */ + z->bra = z->c; /* ], line 324 */ + if (!(find_among_b(z, a_22, 15))) goto lab2; /* substring, line 324 */ + if (z->c > z->lb) goto lab2; /* atlimit, line 324 */ + { int ret = slice_from_s(z, 6, s_59); /* <-, line 327 */ if (ret < 0) return ret; } goto lab0; lab2: z->c = z->l - m1; - z->ket = z->c; /* [, line 331 */ - if (!(eq_s_b(z, 6, s_60))) return 0; /* literal, line 331 */ - z->bra = z->c; /* ], line 331 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 331 */ - if (z->S[0] == 0) return -1; /* -> s, line 331 */ - { int ret = slice_from_s(z, 6, s_61); /* <-, line 331 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 331 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 329 */ + z->bra = z->c; /* ], line 329 */ + if (!(eq_s_b(z, 6, s_60))) return 0; /* literal, line 329 */ + { int ret = slice_from_s(z, 6, s_61); /* <-, line 329 */ if (ret < 0) return ret; } } @@ -2995,48 +2869,30 @@ static int r_steps8(struct SN_env * z) { /* backwardmode */ } static int r_steps9(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 337 */ - if (z->c - 7 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-1610481664 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 337 */ + z->ket = z->c; /* [, line 335 */ + if (z->c - 7 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((-1610481664 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 335 */ if (!(find_among_b(z, a_26, 3))) return 0; - z->bra = z->c; /* ], line 337 */ - { int ret = slice_del(z); /* delete, line 339 */ + z->bra = z->c; /* ], line 335 */ + { int ret = slice_del(z); /* delete, line 337 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 340 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 343 */ - z->ket = z->c; /* [, line 341 */ - if (!(find_among_b(z, a_24, 4))) goto lab1; /* substring, line 341 */ - z->bra = z->c; /* ], line 341 */ - if (z->c > z->lb) goto lab1; /* atlimit, line 341 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 342 */ - if (z->S[0] == 0) return -1; /* -> s, line 342 */ - { int ret = slice_from_s(z, 4, s_62); /* <-, line 342 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 342 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 338 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 341 */ + z->ket = z->c; /* [, line 339 */ + z->bra = z->c; /* ], line 339 */ + if (!(find_among_b(z, a_24, 4))) goto lab1; /* substring, line 339 */ + if (z->c > z->lb) goto lab1; /* atlimit, line 339 */ + { int ret = slice_from_s(z, 4, s_62); /* <-, line 340 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 344 */ - if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 181 && z->p[z->c - 1] != 189)) return 0; /* substring, line 344 */ + z->ket = z->c; /* [, line 342 */ + z->bra = z->c; /* ], line 342 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 181 && z->p[z->c - 1] != 189)) return 0; /* substring, line 342 */ if (!(find_among_b(z, a_25, 2))) return 0; - z->bra = z->c; /* ], line 344 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 345 */ - if (z->S[0] == 0) return -1; /* -> s, line 345 */ - { int ret = slice_from_s(z, 4, s_63); /* <-, line 345 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 345 */ - z->c = saved_c; - } + { int ret = slice_from_s(z, 4, s_63); /* <-, line 343 */ if (ret < 0) return ret; } } @@ -3045,51 +2901,42 @@ static int r_steps9(struct SN_env * z) { /* backwardmode */ } static int r_steps10(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 352 */ - if (!(find_among_b(z, a_28, 4))) return 0; /* substring, line 352 */ - z->bra = z->c; /* ], line 352 */ - { int ret = slice_del(z); /* delete, line 354 */ + z->ket = z->c; /* [, line 350 */ + if (!(find_among_b(z, a_28, 4))) return 0; /* substring, line 350 */ + z->bra = z->c; /* ], line 350 */ + { int ret = slice_del(z); /* delete, line 352 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 355 */ - z->ket = z->c; /* [, line 356 */ - if (!(find_among_b(z, a_27, 7))) return 0; /* substring, line 356 */ - z->bra = z->c; /* ], line 356 */ - if (z->c > z->lb) return 0; /* atlimit, line 356 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 358 */ - if (z->S[0] == 0) return -1; /* -> s, line 358 */ - { int ret = slice_from_s(z, 6, s_64); /* <-, line 358 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 358 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 353 */ + z->ket = z->c; /* [, line 354 */ + z->bra = z->c; /* ], line 354 */ + if (!(find_among_b(z, a_27, 7))) return 0; /* substring, line 354 */ + if (z->c > z->lb) return 0; /* atlimit, line 354 */ + { int ret = slice_from_s(z, 6, s_64); /* <-, line 356 */ if (ret < 0) return ret; } return 1; } static int r_step2a(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 365 */ - if (z->c - 7 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 365 */ + z->ket = z->c; /* [, line 363 */ + if (z->c - 7 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 363 */ if (!(find_among_b(z, a_29, 2))) return 0; - z->bra = z->c; /* ], line 365 */ - { int ret = slice_del(z); /* delete, line 366 */ + z->bra = z->c; /* ], line 363 */ + { int ret = slice_del(z); /* delete, line 364 */ if (ret < 0) return ret; } - { int m1 = z->l - z->c; (void)m1; /* not, line 368 */ - z->ket = z->c; /* [, line 368 */ - if (!(find_among_b(z, a_30, 10))) goto lab0; /* substring, line 368 */ - z->bra = z->c; /* ], line 368 */ + { int m1 = z->l - z->c; (void)m1; /* not, line 366 */ + z->ket = z->c; /* [, line 366 */ + if (!(find_among_b(z, a_30, 10))) goto lab0; /* substring, line 366 */ + z->bra = z->c; /* ], line 366 */ return 0; lab0: z->c = z->l - m1; } { int ret; { int saved_c = z->c; - ret = insert_s(z, z->c, z->c, 4, s_65); /* <+, line 371 */ + ret = insert_s(z, z->c, z->c, 4, s_65); /* <+, line 369 */ z->c = saved_c; } if (ret < 0) return ret; @@ -3098,405 +2945,270 @@ static int r_step2a(struct SN_env * z) { /* backwardmode */ } static int r_step2b(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 375 */ - if (z->c - 7 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 375 */ + z->ket = z->c; /* [, line 373 */ + if (z->c - 7 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 373 */ if (!(find_among_b(z, a_31, 2))) return 0; - z->bra = z->c; /* ], line 375 */ - { int ret = slice_del(z); /* delete, line 376 */ + z->bra = z->c; /* ], line 373 */ + { int ret = slice_del(z); /* delete, line 374 */ if (ret < 0) return ret; } - z->ket = z->c; /* [, line 378 */ - if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 128 && z->p[z->c - 1] != 187)) return 0; /* substring, line 378 */ + z->ket = z->c; /* [, line 376 */ + z->bra = z->c; /* ], line 376 */ + if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 128 && z->p[z->c - 1] != 187)) return 0; /* substring, line 376 */ if (!(find_among_b(z, a_32, 8))) return 0; - z->bra = z->c; /* ], line 378 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 379 */ - if (z->S[0] == 0) return -1; /* -> s, line 379 */ - { int ret = slice_from_s(z, 4, s_66); /* <-, line 379 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 379 */ - z->c = saved_c; - } + { int ret = slice_from_s(z, 4, s_66); /* <-, line 377 */ if (ret < 0) return ret; } return 1; } static int r_step2c(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 384 */ - if (z->c - 9 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 384 */ + z->ket = z->c; /* [, line 382 */ + if (z->c - 9 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 382 */ if (!(find_among_b(z, a_33, 2))) return 0; - z->bra = z->c; /* ], line 384 */ - { int ret = slice_del(z); /* delete, line 385 */ + z->bra = z->c; /* ], line 382 */ + { int ret = slice_del(z); /* delete, line 383 */ if (ret < 0) return ret; } - z->ket = z->c; /* [, line 387 */ - if (!(find_among_b(z, a_34, 15))) return 0; /* substring, line 387 */ - z->bra = z->c; /* ], line 387 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 389 */ - if (z->S[0] == 0) return -1; /* -> s, line 389 */ - { int ret = slice_from_s(z, 6, s_67); /* <-, line 389 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 389 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 385 */ + z->bra = z->c; /* ], line 385 */ + if (!(find_among_b(z, a_34, 15))) return 0; /* substring, line 385 */ + { int ret = slice_from_s(z, 6, s_67); /* <-, line 387 */ if (ret < 0) return ret; } return 1; } static int r_step2d(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 394 */ - if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 394 */ + z->ket = z->c; /* [, line 392 */ + if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 131 && z->p[z->c - 1] != 189)) return 0; /* substring, line 392 */ if (!(find_among_b(z, a_35, 2))) return 0; - z->bra = z->c; /* ], line 394 */ - { int ret = slice_del(z); /* delete, line 395 */ - if (ret < 0) return ret; - } - z->B[0] = 0; /* unset test1, line 395 */ - z->ket = z->c; /* [, line 397 */ - if (!(find_among_b(z, a_36, 8))) return 0; /* substring, line 397 */ - z->bra = z->c; /* ], line 397 */ - if (z->c > z->lb) return 0; /* atlimit, line 397 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 398 */ - if (z->S[0] == 0) return -1; /* -> s, line 398 */ - { int ret = slice_from_s(z, 2, s_68); /* <-, line 398 */ + z->bra = z->c; /* ], line 392 */ + { int ret = slice_del(z); /* delete, line 393 */ if (ret < 0) return ret; } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 398 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 393 */ + z->ket = z->c; /* [, line 395 */ + z->bra = z->c; /* ], line 395 */ + if (!(find_among_b(z, a_36, 8))) return 0; /* substring, line 395 */ + if (z->c > z->lb) return 0; /* atlimit, line 395 */ + { int ret = slice_from_s(z, 2, s_68); /* <-, line 396 */ if (ret < 0) return ret; } return 1; } static int r_step3(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 403 */ - if (!(find_among_b(z, a_37, 3))) return 0; /* substring, line 403 */ - z->bra = z->c; /* ], line 403 */ - { int ret = slice_del(z); /* delete, line 404 */ - if (ret < 0) return ret; - } - z->B[0] = 0; /* unset test1, line 404 */ - z->ket = z->c; /* [, line 406 */ - if (in_grouping_b_U(z, g_v, 945, 969, 0)) return 0; /* grouping v, line 406 */ - z->bra = z->c; /* ], line 406 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 406 */ - if (z->S[0] == 0) return -1; /* -> s, line 406 */ - { int ret = slice_from_s(z, 2, s_69); /* <-, line 406 */ + z->ket = z->c; /* [, line 401 */ + if (!(find_among_b(z, a_37, 3))) return 0; /* substring, line 401 */ + z->bra = z->c; /* ], line 401 */ + { int ret = slice_del(z); /* delete, line 402 */ if (ret < 0) return ret; } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 406 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 402 */ + z->ket = z->c; /* [, line 404 */ + z->bra = z->c; /* ], line 404 */ + if (in_grouping_b_U(z, g_v, 945, 969, 0)) return 0; /* grouping v, line 404 */ + { int ret = slice_from_s(z, 2, s_69); /* <-, line 404 */ if (ret < 0) return ret; } return 1; } static int r_step4(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 410 */ - if (!(find_among_b(z, a_38, 4))) return 0; /* substring, line 410 */ - z->bra = z->c; /* ], line 410 */ - { int ret = slice_del(z); /* delete, line 411 */ + z->ket = z->c; /* [, line 408 */ + if (!(find_among_b(z, a_38, 4))) return 0; /* substring, line 408 */ + z->bra = z->c; /* ], line 408 */ + { int ret = slice_del(z); /* delete, line 409 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 411 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 413 */ - z->ket = z->c; /* [, line 413 */ - if (in_grouping_b_U(z, g_v, 945, 969, 0)) goto lab1; /* grouping v, line 413 */ - z->bra = z->c; /* ], line 413 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 413 */ - if (z->S[0] == 0) return -1; /* -> s, line 413 */ - { int ret = slice_from_s(z, 4, s_70); /* <-, line 413 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 413 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 409 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 411 */ + z->ket = z->c; /* [, line 411 */ + z->bra = z->c; /* ], line 411 */ + if (in_grouping_b_U(z, g_v, 945, 969, 0)) goto lab1; /* grouping v, line 411 */ + { int ret = slice_from_s(z, 4, s_70); /* <-, line 411 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 414 */ + z->ket = z->c; /* [, line 412 */ } lab0: - if (!(find_among_b(z, a_39, 36))) return 0; /* substring, line 414 */ - z->bra = z->c; /* ], line 414 */ - if (z->c > z->lb) return 0; /* atlimit, line 414 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 419 */ - if (z->S[0] == 0) return -1; /* -> s, line 419 */ - { int ret = slice_from_s(z, 4, s_71); /* <-, line 419 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 419 */ - z->c = saved_c; - } + z->bra = z->c; /* ], line 412 */ + if (!(find_among_b(z, a_39, 36))) return 0; /* substring, line 412 */ + if (z->c > z->lb) return 0; /* atlimit, line 412 */ + { int ret = slice_from_s(z, 4, s_71); /* <-, line 417 */ if (ret < 0) return ret; } return 1; } static int r_step5a(struct SN_env * z) { /* backwardmode */ - { int m1 = z->l - z->c; (void)m1; /* do, line 424 */ - if (!(eq_s_b(z, 10, s_72))) goto lab0; /* literal, line 424 */ - if (z->c > z->lb) goto lab0; /* atlimit, line 424 */ - { int ret = slice_from_s(z, 8, s_73); /* <-, line 424 */ + { int m1 = z->l - z->c; (void)m1; /* do, line 422 */ + if (!(eq_s_b(z, 10, s_72))) goto lab0; /* literal, line 422 */ + if (z->c > z->lb) goto lab0; /* atlimit, line 422 */ + { int ret = slice_from_s(z, 8, s_73); /* <-, line 422 */ if (ret < 0) return ret; } lab0: z->c = z->l - m1; } - { int m2 = z->l - z->c; (void)m2; /* do, line 425 */ - z->ket = z->c; /* [, line 426 */ - if (z->c - 9 <= z->lb || z->p[z->c - 1] != 181) goto lab1; /* substring, line 426 */ + { int m2 = z->l - z->c; (void)m2; /* do, line 423 */ + z->ket = z->c; /* [, line 424 */ + if (z->c - 9 <= z->lb || z->p[z->c - 1] != 181) goto lab1; /* substring, line 424 */ if (!(find_among_b(z, a_40, 5))) goto lab1; - z->bra = z->c; /* ], line 426 */ - { int ret = slice_del(z); /* delete, line 427 */ + z->bra = z->c; /* ], line 424 */ + { int ret = slice_del(z); /* delete, line 425 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 427 */ + z->B[0] = 0; /* unset test1, line 425 */ lab1: z->c = z->l - m2; } - z->ket = z->c; /* [, line 430 */ - if (!(eq_s_b(z, 6, s_74))) return 0; /* literal, line 430 */ - z->bra = z->c; /* ], line 430 */ - { int ret = slice_del(z); /* delete, line 431 */ + z->ket = z->c; /* [, line 428 */ + if (!(eq_s_b(z, 6, s_74))) return 0; /* literal, line 428 */ + z->bra = z->c; /* ], line 428 */ + { int ret = slice_del(z); /* delete, line 429 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 432 */ - z->ket = z->c; /* [, line 433 */ - if (!(find_among_b(z, a_41, 12))) return 0; /* substring, line 433 */ - z->bra = z->c; /* ], line 433 */ - if (z->c > z->lb) return 0; /* atlimit, line 433 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 435 */ - if (z->S[0] == 0) return -1; /* -> s, line 435 */ - { int ret = slice_from_s(z, 4, s_75); /* <-, line 435 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 435 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 430 */ + z->ket = z->c; /* [, line 431 */ + z->bra = z->c; /* ], line 431 */ + if (!(find_among_b(z, a_41, 12))) return 0; /* substring, line 431 */ + if (z->c > z->lb) return 0; /* atlimit, line 431 */ + { int ret = slice_from_s(z, 4, s_75); /* <-, line 433 */ if (ret < 0) return ret; } return 1; } static int r_step5b(struct SN_env * z) { /* backwardmode */ - { int m1 = z->l - z->c; (void)m1; /* do, line 440 */ - z->ket = z->c; /* [, line 441 */ - if (z->c - 9 <= z->lb || z->p[z->c - 1] != 181) goto lab0; /* substring, line 441 */ + { int m1 = z->l - z->c; (void)m1; /* do, line 438 */ + z->ket = z->c; /* [, line 439 */ + if (z->c - 9 <= z->lb || z->p[z->c - 1] != 181) goto lab0; /* substring, line 439 */ if (!(find_among_b(z, a_43, 11))) goto lab0; - z->bra = z->c; /* ], line 441 */ - { int ret = slice_del(z); /* delete, line 444 */ + z->bra = z->c; /* ], line 439 */ + { int ret = slice_del(z); /* delete, line 442 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 445 */ - z->ket = z->c; /* [, line 446 */ - if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 129 && z->p[z->c - 1] != 131)) goto lab0; /* substring, line 446 */ + z->B[0] = 0; /* unset test1, line 443 */ + z->ket = z->c; /* [, line 444 */ + z->bra = z->c; /* ], line 444 */ + if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 129 && z->p[z->c - 1] != 131)) goto lab0; /* substring, line 444 */ if (!(find_among_b(z, a_42, 2))) goto lab0; - z->bra = z->c; /* ], line 446 */ - if (z->c > z->lb) goto lab0; /* atlimit, line 446 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 447 */ - if (z->S[0] == 0) return -1; /* -> s, line 447 */ - { int ret = slice_from_s(z, 8, s_76); /* <-, line 447 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 447 */ - z->c = saved_c; - } + if (z->c > z->lb) goto lab0; /* atlimit, line 444 */ + { int ret = slice_from_s(z, 8, s_76); /* <-, line 445 */ if (ret < 0) return ret; } lab0: z->c = z->l - m1; } - z->ket = z->c; /* [, line 452 */ - if (!(eq_s_b(z, 6, s_77))) return 0; /* literal, line 452 */ - z->bra = z->c; /* ], line 452 */ - { int ret = slice_del(z); /* delete, line 453 */ + z->ket = z->c; /* [, line 450 */ + if (!(eq_s_b(z, 6, s_77))) return 0; /* literal, line 450 */ + z->bra = z->c; /* ], line 450 */ + { int ret = slice_del(z); /* delete, line 451 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 454 */ - { int m2 = z->l - z->c; (void)m2; /* or, line 455 */ - z->ket = z->c; /* [, line 455 */ - if (in_grouping_b_U(z, g_v2, 945, 969, 0)) goto lab2; /* grouping v2, line 455 */ - z->bra = z->c; /* ], line 455 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 455 */ - if (z->S[0] == 0) return -1; /* -> s, line 455 */ - { int ret = slice_from_s(z, 4, s_78); /* <-, line 455 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 455 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 452 */ + { int m2 = z->l - z->c; (void)m2; /* or, line 453 */ + z->ket = z->c; /* [, line 453 */ + z->bra = z->c; /* ], line 453 */ + if (in_grouping_b_U(z, g_v2, 945, 969, 0)) goto lab2; /* grouping v2, line 453 */ + { int ret = slice_from_s(z, 4, s_78); /* <-, line 453 */ if (ret < 0) return ret; } goto lab1; lab2: z->c = z->l - m2; - z->ket = z->c; /* [, line 456 */ + z->ket = z->c; /* [, line 454 */ } lab1: - if (!(find_among_b(z, a_44, 95))) return 0; /* substring, line 456 */ - z->bra = z->c; /* ], line 456 */ - if (z->c > z->lb) return 0; /* atlimit, line 456 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 473 */ - if (z->S[0] == 0) return -1; /* -> s, line 473 */ - { int ret = slice_from_s(z, 4, s_79); /* <-, line 473 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 473 */ - z->c = saved_c; - } + z->bra = z->c; /* ], line 454 */ + if (!(find_among_b(z, a_44, 95))) return 0; /* substring, line 454 */ + if (z->c > z->lb) return 0; /* atlimit, line 454 */ + { int ret = slice_from_s(z, 4, s_79); /* <-, line 471 */ if (ret < 0) return ret; } return 1; } static int r_step5c(struct SN_env * z) { /* backwardmode */ - { int m1 = z->l - z->c; (void)m1; /* do, line 478 */ - z->ket = z->c; /* [, line 479 */ - if (z->c - 9 <= z->lb || z->p[z->c - 1] != 181) goto lab0; /* substring, line 479 */ + { int m1 = z->l - z->c; (void)m1; /* do, line 476 */ + z->ket = z->c; /* [, line 477 */ + if (z->c - 9 <= z->lb || z->p[z->c - 1] != 181) goto lab0; /* substring, line 477 */ if (!(find_among_b(z, a_45, 1))) goto lab0; - z->bra = z->c; /* ], line 479 */ - { int ret = slice_del(z); /* delete, line 480 */ + z->bra = z->c; /* ], line 477 */ + { int ret = slice_del(z); /* delete, line 478 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 480 */ + z->B[0] = 0; /* unset test1, line 478 */ lab0: z->c = z->l - m1; } - z->ket = z->c; /* [, line 483 */ - if (!(eq_s_b(z, 6, s_80))) return 0; /* literal, line 483 */ - z->bra = z->c; /* ], line 483 */ - { int ret = slice_del(z); /* delete, line 484 */ + z->ket = z->c; /* [, line 481 */ + if (!(eq_s_b(z, 6, s_80))) return 0; /* literal, line 481 */ + z->bra = z->c; /* ], line 481 */ + { int ret = slice_del(z); /* delete, line 482 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 485 */ - { int m2 = z->l - z->c; (void)m2; /* or, line 486 */ - z->ket = z->c; /* [, line 486 */ - if (in_grouping_b_U(z, g_v2, 945, 969, 0)) goto lab2; /* grouping v2, line 486 */ - z->bra = z->c; /* ], line 486 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 486 */ - if (z->S[0] == 0) return -1; /* -> s, line 486 */ - { int ret = slice_from_s(z, 4, s_81); /* <-, line 486 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 486 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 483 */ + { int m2 = z->l - z->c; (void)m2; /* or, line 484 */ + z->ket = z->c; /* [, line 484 */ + z->bra = z->c; /* ], line 484 */ + if (in_grouping_b_U(z, g_v2, 945, 969, 0)) goto lab2; /* grouping v2, line 484 */ + { int ret = slice_from_s(z, 4, s_81); /* <-, line 484 */ if (ret < 0) return ret; } goto lab1; lab2: z->c = z->l - m2; - z->ket = z->c; /* [, line 487 */ - if (!(find_among_b(z, a_46, 31))) goto lab3; /* substring, line 487 */ - z->bra = z->c; /* ], line 487 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 491 */ - if (z->S[0] == 0) return -1; /* -> s, line 491 */ - { int ret = slice_from_s(z, 4, s_82); /* <-, line 491 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 491 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 485 */ + z->bra = z->c; /* ], line 485 */ + if (!(find_among_b(z, a_46, 31))) goto lab3; /* substring, line 485 */ + { int ret = slice_from_s(z, 4, s_82); /* <-, line 489 */ if (ret < 0) return ret; } goto lab1; lab3: z->c = z->l - m2; - z->ket = z->c; /* [, line 493 */ + z->ket = z->c; /* [, line 491 */ } lab1: - if (!(find_among_b(z, a_47, 25))) return 0; /* substring, line 493 */ - z->bra = z->c; /* ], line 493 */ - if (z->c > z->lb) return 0; /* atlimit, line 493 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 497 */ - if (z->S[0] == 0) return -1; /* -> s, line 497 */ - { int ret = slice_from_s(z, 4, s_83); /* <-, line 497 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 497 */ - z->c = saved_c; - } + z->bra = z->c; /* ], line 491 */ + if (!(find_among_b(z, a_47, 25))) return 0; /* substring, line 491 */ + if (z->c > z->lb) return 0; /* atlimit, line 491 */ + { int ret = slice_from_s(z, 4, s_83); /* <-, line 495 */ if (ret < 0) return ret; } return 1; } static int r_step5d(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 502 */ - if (z->c - 9 <= z->lb || z->p[z->c - 1] != 131) return 0; /* substring, line 502 */ + z->ket = z->c; /* [, line 500 */ + if (z->c - 9 <= z->lb || z->p[z->c - 1] != 131) return 0; /* substring, line 500 */ if (!(find_among_b(z, a_48, 2))) return 0; - z->bra = z->c; /* ], line 502 */ - { int ret = slice_del(z); /* delete, line 504 */ + z->bra = z->c; /* ], line 500 */ + { int ret = slice_del(z); /* delete, line 502 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 505 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 506 */ - z->ket = z->c; /* [, line 506 */ - if (!(eq_s_b(z, 6, s_84))) goto lab1; /* literal, line 506 */ - z->bra = z->c; /* ], line 506 */ - if (z->c > z->lb) goto lab1; /* atlimit, line 506 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 506 */ - if (z->S[0] == 0) return -1; /* -> s, line 506 */ - { int ret = slice_from_s(z, 6, s_85); /* <-, line 506 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 506 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 503 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 504 */ + z->ket = z->c; /* [, line 504 */ + z->bra = z->c; /* ], line 504 */ + if (!(eq_s_b(z, 6, s_84))) goto lab1; /* literal, line 504 */ + if (z->c > z->lb) goto lab1; /* atlimit, line 504 */ + { int ret = slice_from_s(z, 6, s_85); /* <-, line 504 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 507 */ - if (!(eq_s_b(z, 6, s_86))) return 0; /* literal, line 507 */ - z->bra = z->c; /* ], line 507 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 507 */ - if (z->S[0] == 0) return -1; /* -> s, line 507 */ - { int ret = slice_from_s(z, 6, s_87); /* <-, line 507 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 507 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 505 */ + z->bra = z->c; /* ], line 505 */ + if (!(eq_s_b(z, 6, s_86))) return 0; /* literal, line 505 */ + { int ret = slice_from_s(z, 6, s_87); /* <-, line 505 */ if (ret < 0) return ret; } } @@ -3505,141 +3217,96 @@ static int r_step5d(struct SN_env * z) { /* backwardmode */ } static int r_step5e(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 513 */ - if (z->c - 11 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 513 */ + z->ket = z->c; /* [, line 511 */ + if (z->c - 11 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 511 */ if (!(find_among_b(z, a_49, 2))) return 0; - z->bra = z->c; /* ], line 513 */ - { int ret = slice_del(z); /* delete, line 515 */ + z->bra = z->c; /* ], line 511 */ + { int ret = slice_del(z); /* delete, line 513 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 516 */ - z->ket = z->c; /* [, line 517 */ - if (!(eq_s_b(z, 4, s_88))) return 0; /* literal, line 517 */ - z->bra = z->c; /* ], line 517 */ - if (z->c > z->lb) return 0; /* atlimit, line 517 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 517 */ - if (z->S[0] == 0) return -1; /* -> s, line 517 */ - { int ret = slice_from_s(z, 10, s_89); /* <-, line 517 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 517 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 514 */ + z->ket = z->c; /* [, line 515 */ + z->bra = z->c; /* ], line 515 */ + if (!(eq_s_b(z, 4, s_88))) return 0; /* literal, line 515 */ + if (z->c > z->lb) return 0; /* atlimit, line 515 */ + { int ret = slice_from_s(z, 10, s_89); /* <-, line 515 */ if (ret < 0) return ret; } return 1; } static int r_step5f(struct SN_env * z) { /* backwardmode */ - { int m1 = z->l - z->c; (void)m1; /* do, line 523 */ - z->ket = z->c; /* [, line 524 */ - if (!(eq_s_b(z, 10, s_90))) goto lab0; /* literal, line 524 */ - z->bra = z->c; /* ], line 524 */ - { int ret = slice_del(z); /* delete, line 525 */ + { int m1 = z->l - z->c; (void)m1; /* do, line 521 */ + z->ket = z->c; /* [, line 522 */ + if (!(eq_s_b(z, 10, s_90))) goto lab0; /* literal, line 522 */ + z->bra = z->c; /* ], line 522 */ + { int ret = slice_del(z); /* delete, line 523 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 526 */ - z->ket = z->c; /* [, line 527 */ - if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 128 && z->p[z->c - 1] != 134)) goto lab0; /* substring, line 527 */ + z->B[0] = 0; /* unset test1, line 524 */ + z->ket = z->c; /* [, line 525 */ + z->bra = z->c; /* ], line 525 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 128 && z->p[z->c - 1] != 134)) goto lab0; /* substring, line 525 */ if (!(find_among_b(z, a_50, 6))) goto lab0; - z->bra = z->c; /* ], line 527 */ - if (z->c > z->lb) goto lab0; /* atlimit, line 527 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 528 */ - if (z->S[0] == 0) return -1; /* -> s, line 528 */ - { int ret = slice_from_s(z, 8, s_91); /* <-, line 528 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 528 */ - z->c = saved_c; - } + if (z->c > z->lb) goto lab0; /* atlimit, line 525 */ + { int ret = slice_from_s(z, 8, s_91); /* <-, line 526 */ if (ret < 0) return ret; } lab0: z->c = z->l - m1; } - z->ket = z->c; /* [, line 531 */ - if (!(eq_s_b(z, 8, s_92))) return 0; /* literal, line 531 */ - z->bra = z->c; /* ], line 531 */ - { int ret = slice_del(z); /* delete, line 532 */ + z->ket = z->c; /* [, line 529 */ + if (!(eq_s_b(z, 8, s_92))) return 0; /* literal, line 529 */ + z->bra = z->c; /* ], line 529 */ + { int ret = slice_del(z); /* delete, line 530 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 533 */ - z->ket = z->c; /* [, line 534 */ - if (!(find_among_b(z, a_51, 9))) return 0; /* substring, line 534 */ - z->bra = z->c; /* ], line 534 */ - if (z->c > z->lb) return 0; /* atlimit, line 534 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 536 */ - if (z->S[0] == 0) return -1; /* -> s, line 536 */ - { int ret = slice_from_s(z, 8, s_93); /* <-, line 536 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 536 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 531 */ + z->ket = z->c; /* [, line 532 */ + z->bra = z->c; /* ], line 532 */ + if (!(find_among_b(z, a_51, 9))) return 0; /* substring, line 532 */ + if (z->c > z->lb) return 0; /* atlimit, line 532 */ + { int ret = slice_from_s(z, 8, s_93); /* <-, line 534 */ if (ret < 0) return ret; } return 1; } static int r_step5g(struct SN_env * z) { /* backwardmode */ - { int m1 = z->l - z->c; (void)m1; /* do, line 541 */ - z->ket = z->c; /* [, line 542 */ - if (!(find_among_b(z, a_52, 3))) goto lab0; /* substring, line 542 */ - z->bra = z->c; /* ], line 542 */ - { int ret = slice_del(z); /* delete, line 543 */ + { int m1 = z->l - z->c; (void)m1; /* do, line 539 */ + z->ket = z->c; /* [, line 540 */ + if (!(find_among_b(z, a_52, 3))) goto lab0; /* substring, line 540 */ + z->bra = z->c; /* ], line 540 */ + { int ret = slice_del(z); /* delete, line 541 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 543 */ + z->B[0] = 0; /* unset test1, line 541 */ lab0: z->c = z->l - m1; } - z->ket = z->c; /* [, line 546 */ - if (!(find_among_b(z, a_55, 3))) return 0; /* substring, line 546 */ - z->bra = z->c; /* ], line 546 */ - { int ret = slice_del(z); /* delete, line 548 */ + z->ket = z->c; /* [, line 544 */ + if (!(find_among_b(z, a_55, 3))) return 0; /* substring, line 544 */ + z->bra = z->c; /* ], line 544 */ + { int ret = slice_del(z); /* delete, line 546 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 549 */ - { int m2 = z->l - z->c; (void)m2; /* or, line 552 */ - z->ket = z->c; /* [, line 550 */ - if (!(find_among_b(z, a_53, 6))) goto lab2; /* substring, line 550 */ - z->bra = z->c; /* ], line 550 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 551 */ - if (z->S[0] == 0) return -1; /* -> s, line 551 */ - { int ret = slice_from_s(z, 4, s_94); /* <-, line 551 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 551 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 547 */ + { int m2 = z->l - z->c; (void)m2; /* or, line 550 */ + z->ket = z->c; /* [, line 548 */ + z->bra = z->c; /* ], line 548 */ + if (!(find_among_b(z, a_53, 6))) goto lab2; /* substring, line 548 */ + { int ret = slice_from_s(z, 4, s_94); /* <-, line 549 */ if (ret < 0) return ret; } goto lab1; lab2: z->c = z->l - m2; - z->ket = z->c; /* [, line 553 */ - if (z->c - 1 <= z->lb || z->p[z->c - 1] != 184) return 0; /* substring, line 553 */ + z->ket = z->c; /* [, line 551 */ + z->bra = z->c; /* ], line 551 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 184) return 0; /* substring, line 551 */ if (!(find_among_b(z, a_54, 5))) return 0; - z->bra = z->c; /* ], line 553 */ - if (z->c > z->lb) return 0; /* atlimit, line 553 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 554 */ - if (z->S[0] == 0) return -1; /* -> s, line 554 */ - { int ret = slice_from_s(z, 4, s_95); /* <-, line 554 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 554 */ - z->c = saved_c; - } + if (z->c > z->lb) return 0; /* atlimit, line 551 */ + { int ret = slice_from_s(z, 4, s_95); /* <-, line 552 */ if (ret < 0) return ret; } } @@ -3648,46 +3315,28 @@ static int r_step5g(struct SN_env * z) { /* backwardmode */ } static int r_step5h(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 561 */ - if (!(find_among_b(z, a_58, 3))) return 0; /* substring, line 561 */ - z->bra = z->c; /* ], line 561 */ - { int ret = slice_del(z); /* delete, line 563 */ + z->ket = z->c; /* [, line 559 */ + if (!(find_among_b(z, a_58, 3))) return 0; /* substring, line 559 */ + z->bra = z->c; /* ], line 559 */ + { int ret = slice_del(z); /* delete, line 561 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 564 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 569 */ - z->ket = z->c; /* [, line 565 */ - if (!(find_among_b(z, a_56, 12))) goto lab1; /* substring, line 565 */ - z->bra = z->c; /* ], line 565 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 567 */ - if (z->S[0] == 0) return -1; /* -> s, line 567 */ - { int ret = slice_from_s(z, 6, s_96); /* <-, line 567 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 567 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 562 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 567 */ + z->ket = z->c; /* [, line 563 */ + z->bra = z->c; /* ], line 563 */ + if (!(find_among_b(z, a_56, 12))) goto lab1; /* substring, line 563 */ + { int ret = slice_from_s(z, 6, s_96); /* <-, line 565 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - z->ket = z->c; /* [, line 570 */ - if (!(find_among_b(z, a_57, 25))) return 0; /* substring, line 570 */ - z->bra = z->c; /* ], line 570 */ - if (z->c > z->lb) return 0; /* atlimit, line 570 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 574 */ - if (z->S[0] == 0) return -1; /* -> s, line 574 */ - { int ret = slice_from_s(z, 6, s_97); /* <-, line 574 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 574 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 568 */ + z->bra = z->c; /* ], line 568 */ + if (!(find_among_b(z, a_57, 25))) return 0; /* substring, line 568 */ + if (z->c > z->lb) return 0; /* atlimit, line 568 */ + { int ret = slice_from_s(z, 6, s_97); /* <-, line 572 */ if (ret < 0) return ret; } } @@ -3696,74 +3345,47 @@ static int r_step5h(struct SN_env * z) { /* backwardmode */ } static int r_step5i(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 581 */ - if (!(find_among_b(z, a_62, 3))) return 0; /* substring, line 581 */ - z->bra = z->c; /* ], line 581 */ - { int ret = slice_del(z); /* delete, line 583 */ + z->ket = z->c; /* [, line 579 */ + if (!(find_among_b(z, a_62, 3))) return 0; /* substring, line 579 */ + z->bra = z->c; /* ], line 579 */ + { int ret = slice_del(z); /* delete, line 581 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 584 */ - { int m1 = z->l - z->c; (void)m1; /* or, line 585 */ - z->ket = z->c; /* [, line 585 */ - if (!(eq_s_b(z, 8, s_98))) goto lab1; /* literal, line 585 */ - z->bra = z->c; /* ], line 585 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 585 */ - if (z->S[0] == 0) return -1; /* -> s, line 585 */ - { int ret = slice_from_s(z, 4, s_99); /* <-, line 585 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 585 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 582 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 583 */ + z->ket = z->c; /* [, line 583 */ + z->bra = z->c; /* ], line 583 */ + if (!(eq_s_b(z, 8, s_98))) goto lab1; /* literal, line 583 */ + { int ret = slice_from_s(z, 4, s_99); /* <-, line 583 */ if (ret < 0) return ret; } goto lab0; lab1: z->c = z->l - m1; - { int m2 = z->l - z->c; (void)m2; /* not, line 586 */ - z->ket = z->c; /* [, line 586 */ - if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 134 && z->p[z->c - 1] != 135)) goto lab2; /* substring, line 586 */ + { int m2 = z->l - z->c; (void)m2; /* not, line 584 */ + z->ket = z->c; /* [, line 584 */ + if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 134 && z->p[z->c - 1] != 135)) goto lab2; /* substring, line 584 */ if (!(find_among_b(z, a_59, 2))) goto lab2; - z->bra = z->c; /* ], line 586 */ + z->bra = z->c; /* ], line 584 */ return 0; lab2: z->c = z->l - m2; } - { int m3 = z->l - z->c; (void)m3; /* or, line 590 */ - z->ket = z->c; /* [, line 587 */ - if (!(find_among_b(z, a_60, 10))) goto lab4; /* substring, line 587 */ - z->bra = z->c; /* ], line 587 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 589 */ - if (z->S[0] == 0) return -1; /* -> s, line 589 */ - { int ret = slice_from_s(z, 4, s_100); /* <-, line 589 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 589 */ - z->c = saved_c; - } + { int m3 = z->l - z->c; (void)m3; /* or, line 588 */ + z->ket = z->c; /* [, line 585 */ + z->bra = z->c; /* ], line 585 */ + if (!(find_among_b(z, a_60, 10))) goto lab4; /* substring, line 585 */ + { int ret = slice_from_s(z, 4, s_100); /* <-, line 587 */ if (ret < 0) return ret; } goto lab3; lab4: z->c = z->l - m3; - z->ket = z->c; /* [, line 591 */ - if (!(find_among_b(z, a_61, 44))) return 0; /* substring, line 591 */ - z->bra = z->c; /* ], line 591 */ - if (z->c > z->lb) return 0; /* atlimit, line 591 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 597 */ - if (z->S[0] == 0) return -1; /* -> s, line 597 */ - { int ret = slice_from_s(z, 4, s_101); /* <-, line 597 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 597 */ - z->c = saved_c; - } + z->ket = z->c; /* [, line 589 */ + z->bra = z->c; /* ], line 589 */ + if (!(find_among_b(z, a_61, 44))) return 0; /* substring, line 589 */ + if (z->c > z->lb) return 0; /* atlimit, line 589 */ + { int ret = slice_from_s(z, 4, s_101); /* <-, line 595 */ if (ret < 0) return ret; } } @@ -3775,425 +3397,323 @@ static int r_step5i(struct SN_env * z) { /* backwardmode */ } static int r_step5j(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 605 */ - if (!(find_among_b(z, a_63, 3))) return 0; /* substring, line 605 */ - z->bra = z->c; /* ], line 605 */ - { int ret = slice_del(z); /* delete, line 606 */ + z->ket = z->c; /* [, line 603 */ + if (!(find_among_b(z, a_63, 3))) return 0; /* substring, line 603 */ + z->bra = z->c; /* ], line 603 */ + { int ret = slice_del(z); /* delete, line 604 */ if (ret < 0) return ret; } - z->B[0] = 0; /* unset test1, line 606 */ - z->ket = z->c; /* [, line 608 */ - if (z->c - 1 <= z->lb || z->p[z->c - 1] != 189) return 0; /* substring, line 608 */ + z->B[0] = 0; /* unset test1, line 604 */ + z->ket = z->c; /* [, line 606 */ + z->bra = z->c; /* ], line 606 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 189) return 0; /* substring, line 606 */ if (!(find_among_b(z, a_64, 6))) return 0; - z->bra = z->c; /* ], line 608 */ - if (z->c > z->lb) return 0; /* atlimit, line 608 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 609 */ - if (z->S[0] == 0) return -1; /* -> s, line 609 */ - { int ret = slice_from_s(z, 4, s_102); /* <-, line 609 */ - if (ret < 0) return ret; - } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 609 */ - z->c = saved_c; - } + if (z->c > z->lb) return 0; /* atlimit, line 606 */ + { int ret = slice_from_s(z, 4, s_102); /* <-, line 607 */ if (ret < 0) return ret; } return 1; } static int r_step5k(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 614 */ - if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 614 */ + z->ket = z->c; /* [, line 612 */ + if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 612 */ if (!(find_among_b(z, a_65, 1))) return 0; - z->bra = z->c; /* ], line 614 */ - { int ret = slice_del(z); /* delete, line 615 */ - if (ret < 0) return ret; - } - z->B[0] = 0; /* unset test1, line 615 */ - z->ket = z->c; /* [, line 617 */ - if (!(find_among_b(z, a_66, 10))) return 0; /* substring, line 617 */ - z->bra = z->c; /* ], line 617 */ - if (z->c > z->lb) return 0; /* atlimit, line 617 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 619 */ - if (z->S[0] == 0) return -1; /* -> s, line 619 */ - { int ret = slice_from_s(z, 6, s_103); /* <-, line 619 */ + z->bra = z->c; /* ], line 612 */ + { int ret = slice_del(z); /* delete, line 613 */ if (ret < 0) return ret; } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 619 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 613 */ + z->ket = z->c; /* [, line 615 */ + z->bra = z->c; /* ], line 615 */ + if (!(find_among_b(z, a_66, 10))) return 0; /* substring, line 615 */ + if (z->c > z->lb) return 0; /* atlimit, line 615 */ + { int ret = slice_from_s(z, 6, s_103); /* <-, line 617 */ if (ret < 0) return ret; } return 1; } static int r_step5l(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 624 */ - if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 624 */ + z->ket = z->c; /* [, line 622 */ + if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 622 */ if (!(find_among_b(z, a_67, 3))) return 0; - z->bra = z->c; /* ], line 624 */ - { int ret = slice_del(z); /* delete, line 625 */ - if (ret < 0) return ret; - } - z->B[0] = 0; /* unset test1, line 625 */ - z->ket = z->c; /* [, line 627 */ - if (!(find_among_b(z, a_68, 6))) return 0; /* substring, line 627 */ - z->bra = z->c; /* ], line 627 */ - if (z->c > z->lb) return 0; /* atlimit, line 627 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 628 */ - if (z->S[0] == 0) return -1; /* -> s, line 628 */ - { int ret = slice_from_s(z, 6, s_104); /* <-, line 628 */ + z->bra = z->c; /* ], line 622 */ + { int ret = slice_del(z); /* delete, line 623 */ if (ret < 0) return ret; } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 628 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 623 */ + z->ket = z->c; /* [, line 625 */ + z->bra = z->c; /* ], line 625 */ + if (!(find_among_b(z, a_68, 6))) return 0; /* substring, line 625 */ + if (z->c > z->lb) return 0; /* atlimit, line 625 */ + { int ret = slice_from_s(z, 6, s_104); /* <-, line 626 */ if (ret < 0) return ret; } return 1; } static int r_step5m(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 633 */ - if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 633 */ + z->ket = z->c; /* [, line 631 */ + if (z->c - 7 <= z->lb || z->p[z->c - 1] != 181) return 0; /* substring, line 631 */ if (!(find_among_b(z, a_69, 3))) return 0; - z->bra = z->c; /* ], line 633 */ - { int ret = slice_del(z); /* delete, line 634 */ - if (ret < 0) return ret; - } - z->B[0] = 0; /* unset test1, line 634 */ - z->ket = z->c; /* [, line 636 */ - if (!(find_among_b(z, a_70, 7))) return 0; /* substring, line 636 */ - z->bra = z->c; /* ], line 636 */ - if (z->c > z->lb) return 0; /* atlimit, line 636 */ - z->S[0] = slice_to(z, z->S[0]); /* -> s, line 638 */ - if (z->S[0] == 0) return -1; /* -> s, line 638 */ - { int ret = slice_from_s(z, 6, s_105); /* <-, line 638 */ + z->bra = z->c; /* ], line 631 */ + { int ret = slice_del(z); /* delete, line 632 */ if (ret < 0) return ret; } - { int ret; - { int saved_c = z->c; - ret = insert_v(z, z->c, z->c, z->S[0]); /* <+ s, line 638 */ - z->c = saved_c; - } + z->B[0] = 0; /* unset test1, line 632 */ + z->ket = z->c; /* [, line 634 */ + z->bra = z->c; /* ], line 634 */ + if (!(find_among_b(z, a_70, 7))) return 0; /* substring, line 634 */ + if (z->c > z->lb) return 0; /* atlimit, line 634 */ + { int ret = slice_from_s(z, 6, s_105); /* <-, line 636 */ if (ret < 0) return ret; } return 1; } static int r_step6(struct SN_env * z) { /* backwardmode */ - { int m1 = z->l - z->c; (void)m1; /* do, line 643 */ - z->ket = z->c; /* [, line 644 */ - if (!(find_among_b(z, a_71, 3))) goto lab0; /* substring, line 644 */ - z->bra = z->c; /* ], line 644 */ - { int ret = slice_from_s(z, 4, s_106); /* <-, line 645 */ + { int m1 = z->l - z->c; (void)m1; /* do, line 641 */ + z->ket = z->c; /* [, line 642 */ + if (!(find_among_b(z, a_71, 3))) goto lab0; /* substring, line 642 */ + z->bra = z->c; /* ], line 642 */ + { int ret = slice_from_s(z, 4, s_106); /* <-, line 643 */ if (ret < 0) return ret; } lab0: z->c = z->l - m1; } - if (!(z->B[0])) return 0; /* Boolean test test1, line 648 */ - z->ket = z->c; /* [, line 649 */ - if (!(find_among_b(z, a_72, 84))) return 0; /* substring, line 649 */ - z->bra = z->c; /* ], line 649 */ - { int ret = slice_del(z); /* delete, line 659 */ + if (!(z->B[0])) return 0; /* Boolean test test1, line 646 */ + z->ket = z->c; /* [, line 647 */ + if (!(find_among_b(z, a_72, 84))) return 0; /* substring, line 647 */ + z->bra = z->c; /* ], line 647 */ + { int ret = slice_del(z); /* delete, line 657 */ if (ret < 0) return ret; } return 1; } static int r_step7(struct SN_env * z) { /* backwardmode */ - z->ket = z->c; /* [, line 664 */ - if (z->c - 7 <= z->lb || (z->p[z->c - 1] != 129 && z->p[z->c - 1] != 132)) return 0; /* substring, line 664 */ + z->ket = z->c; /* [, line 662 */ + if (z->c - 7 <= z->lb || (z->p[z->c - 1] != 129 && z->p[z->c - 1] != 132)) return 0; /* substring, line 662 */ if (!(find_among_b(z, a_73, 8))) return 0; - z->bra = z->c; /* ], line 664 */ - { int ret = slice_del(z); /* delete, line 665 */ + z->bra = z->c; /* ], line 662 */ + { int ret = slice_del(z); /* delete, line 663 */ if (ret < 0) return ret; } return 1; } extern int greek_UTF_8_stem(struct SN_env * z) { /* forwardmode */ - z->lb = z->c; z->c = z->l; /* backwards, line 671 */ + z->lb = z->c; z->c = z->l; /* backwards, line 669 */ - { int m1 = z->l - z->c; (void)m1; /* do, line 672 */ - { int ret = r_tolower(z); /* call tolower, line 672 */ - if (ret == 0) goto lab0; + { int m1 = z->l - z->c; (void)m1; /* do, line 670 */ + { int ret = r_tolower(z); /* call tolower, line 670 */ if (ret < 0) return ret; } - lab0: z->c = z->l - m1; } - { int ret = r_has_min_length(z); /* call has_min_length, line 673 */ + { int ret = r_has_min_length(z); /* call has_min_length, line 671 */ if (ret <= 0) return ret; } - z->B[0] = 1; /* set test1, line 674 */ - { int m2 = z->l - z->c; (void)m2; /* do, line 675 */ - { int ret = r_step1(z); /* call step1, line 675 */ - if (ret == 0) goto lab1; + z->B[0] = 1; /* set test1, line 672 */ + { int m2 = z->l - z->c; (void)m2; /* do, line 673 */ + { int ret = r_step1(z); /* call step1, line 673 */ if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } - { int m3 = z->l - z->c; (void)m3; /* do, line 676 */ - { int ret = r_steps1(z); /* call steps1, line 676 */ - if (ret == 0) goto lab2; + { int m3 = z->l - z->c; (void)m3; /* do, line 674 */ + { int ret = r_steps1(z); /* call steps1, line 674 */ if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } - { int m4 = z->l - z->c; (void)m4; /* do, line 677 */ - { int ret = r_steps2(z); /* call steps2, line 677 */ - if (ret == 0) goto lab3; + { int m4 = z->l - z->c; (void)m4; /* do, line 675 */ + { int ret = r_steps2(z); /* call steps2, line 675 */ if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } - { int m5 = z->l - z->c; (void)m5; /* do, line 678 */ - { int ret = r_steps3(z); /* call steps3, line 678 */ - if (ret == 0) goto lab4; + { int m5 = z->l - z->c; (void)m5; /* do, line 676 */ + { int ret = r_steps3(z); /* call steps3, line 676 */ if (ret < 0) return ret; } - lab4: z->c = z->l - m5; } - { int m6 = z->l - z->c; (void)m6; /* do, line 679 */ - { int ret = r_steps4(z); /* call steps4, line 679 */ - if (ret == 0) goto lab5; + { int m6 = z->l - z->c; (void)m6; /* do, line 677 */ + { int ret = r_steps4(z); /* call steps4, line 677 */ if (ret < 0) return ret; } - lab5: z->c = z->l - m6; } - { int m7 = z->l - z->c; (void)m7; /* do, line 680 */ - { int ret = r_steps5(z); /* call steps5, line 680 */ - if (ret == 0) goto lab6; + { int m7 = z->l - z->c; (void)m7; /* do, line 678 */ + { int ret = r_steps5(z); /* call steps5, line 678 */ if (ret < 0) return ret; } - lab6: z->c = z->l - m7; } - { int m8 = z->l - z->c; (void)m8; /* do, line 681 */ - { int ret = r_steps6(z); /* call steps6, line 681 */ - if (ret == 0) goto lab7; + { int m8 = z->l - z->c; (void)m8; /* do, line 679 */ + { int ret = r_steps6(z); /* call steps6, line 679 */ if (ret < 0) return ret; } - lab7: z->c = z->l - m8; } - { int m9 = z->l - z->c; (void)m9; /* do, line 682 */ - { int ret = r_steps7(z); /* call steps7, line 682 */ - if (ret == 0) goto lab8; + { int m9 = z->l - z->c; (void)m9; /* do, line 680 */ + { int ret = r_steps7(z); /* call steps7, line 680 */ if (ret < 0) return ret; } - lab8: z->c = z->l - m9; } - { int m10 = z->l - z->c; (void)m10; /* do, line 683 */ - { int ret = r_steps8(z); /* call steps8, line 683 */ - if (ret == 0) goto lab9; + { int m10 = z->l - z->c; (void)m10; /* do, line 681 */ + { int ret = r_steps8(z); /* call steps8, line 681 */ if (ret < 0) return ret; } - lab9: z->c = z->l - m10; } - { int m11 = z->l - z->c; (void)m11; /* do, line 684 */ - { int ret = r_steps9(z); /* call steps9, line 684 */ - if (ret == 0) goto lab10; + { int m11 = z->l - z->c; (void)m11; /* do, line 682 */ + { int ret = r_steps9(z); /* call steps9, line 682 */ if (ret < 0) return ret; } - lab10: z->c = z->l - m11; } - { int m12 = z->l - z->c; (void)m12; /* do, line 685 */ - { int ret = r_steps10(z); /* call steps10, line 685 */ - if (ret == 0) goto lab11; + { int m12 = z->l - z->c; (void)m12; /* do, line 683 */ + { int ret = r_steps10(z); /* call steps10, line 683 */ if (ret < 0) return ret; } - lab11: z->c = z->l - m12; } - { int m13 = z->l - z->c; (void)m13; /* do, line 686 */ - { int ret = r_step2a(z); /* call step2a, line 686 */ - if (ret == 0) goto lab12; + { int m13 = z->l - z->c; (void)m13; /* do, line 684 */ + { int ret = r_step2a(z); /* call step2a, line 684 */ if (ret < 0) return ret; } - lab12: z->c = z->l - m13; } - { int m14 = z->l - z->c; (void)m14; /* do, line 687 */ - { int ret = r_step2b(z); /* call step2b, line 687 */ - if (ret == 0) goto lab13; + { int m14 = z->l - z->c; (void)m14; /* do, line 685 */ + { int ret = r_step2b(z); /* call step2b, line 685 */ if (ret < 0) return ret; } - lab13: z->c = z->l - m14; } - { int m15 = z->l - z->c; (void)m15; /* do, line 688 */ - { int ret = r_step2c(z); /* call step2c, line 688 */ - if (ret == 0) goto lab14; + { int m15 = z->l - z->c; (void)m15; /* do, line 686 */ + { int ret = r_step2c(z); /* call step2c, line 686 */ if (ret < 0) return ret; } - lab14: z->c = z->l - m15; } - { int m16 = z->l - z->c; (void)m16; /* do, line 689 */ - { int ret = r_step2d(z); /* call step2d, line 689 */ - if (ret == 0) goto lab15; + { int m16 = z->l - z->c; (void)m16; /* do, line 687 */ + { int ret = r_step2d(z); /* call step2d, line 687 */ if (ret < 0) return ret; } - lab15: z->c = z->l - m16; } - { int m17 = z->l - z->c; (void)m17; /* do, line 690 */ - { int ret = r_step3(z); /* call step3, line 690 */ - if (ret == 0) goto lab16; + { int m17 = z->l - z->c; (void)m17; /* do, line 688 */ + { int ret = r_step3(z); /* call step3, line 688 */ if (ret < 0) return ret; } - lab16: z->c = z->l - m17; } - { int m18 = z->l - z->c; (void)m18; /* do, line 691 */ - { int ret = r_step4(z); /* call step4, line 691 */ - if (ret == 0) goto lab17; + { int m18 = z->l - z->c; (void)m18; /* do, line 689 */ + { int ret = r_step4(z); /* call step4, line 689 */ if (ret < 0) return ret; } - lab17: z->c = z->l - m18; } - { int m19 = z->l - z->c; (void)m19; /* do, line 692 */ - { int ret = r_step5a(z); /* call step5a, line 692 */ - if (ret == 0) goto lab18; + { int m19 = z->l - z->c; (void)m19; /* do, line 690 */ + { int ret = r_step5a(z); /* call step5a, line 690 */ if (ret < 0) return ret; } - lab18: z->c = z->l - m19; } - { int m20 = z->l - z->c; (void)m20; /* do, line 693 */ - { int ret = r_step5b(z); /* call step5b, line 693 */ - if (ret == 0) goto lab19; + { int m20 = z->l - z->c; (void)m20; /* do, line 691 */ + { int ret = r_step5b(z); /* call step5b, line 691 */ if (ret < 0) return ret; } - lab19: z->c = z->l - m20; } - { int m21 = z->l - z->c; (void)m21; /* do, line 694 */ - { int ret = r_step5c(z); /* call step5c, line 694 */ - if (ret == 0) goto lab20; + { int m21 = z->l - z->c; (void)m21; /* do, line 692 */ + { int ret = r_step5c(z); /* call step5c, line 692 */ if (ret < 0) return ret; } - lab20: z->c = z->l - m21; } - { int m22 = z->l - z->c; (void)m22; /* do, line 695 */ - { int ret = r_step5d(z); /* call step5d, line 695 */ - if (ret == 0) goto lab21; + { int m22 = z->l - z->c; (void)m22; /* do, line 693 */ + { int ret = r_step5d(z); /* call step5d, line 693 */ if (ret < 0) return ret; } - lab21: z->c = z->l - m22; } - { int m23 = z->l - z->c; (void)m23; /* do, line 696 */ - { int ret = r_step5e(z); /* call step5e, line 696 */ - if (ret == 0) goto lab22; + { int m23 = z->l - z->c; (void)m23; /* do, line 694 */ + { int ret = r_step5e(z); /* call step5e, line 694 */ if (ret < 0) return ret; } - lab22: z->c = z->l - m23; } - { int m24 = z->l - z->c; (void)m24; /* do, line 697 */ - { int ret = r_step5f(z); /* call step5f, line 697 */ - if (ret == 0) goto lab23; + { int m24 = z->l - z->c; (void)m24; /* do, line 695 */ + { int ret = r_step5f(z); /* call step5f, line 695 */ if (ret < 0) return ret; } - lab23: z->c = z->l - m24; } - { int m25 = z->l - z->c; (void)m25; /* do, line 698 */ - { int ret = r_step5g(z); /* call step5g, line 698 */ - if (ret == 0) goto lab24; + { int m25 = z->l - z->c; (void)m25; /* do, line 696 */ + { int ret = r_step5g(z); /* call step5g, line 696 */ if (ret < 0) return ret; } - lab24: z->c = z->l - m25; } - { int m26 = z->l - z->c; (void)m26; /* do, line 699 */ - { int ret = r_step5h(z); /* call step5h, line 699 */ - if (ret == 0) goto lab25; + { int m26 = z->l - z->c; (void)m26; /* do, line 697 */ + { int ret = r_step5h(z); /* call step5h, line 697 */ if (ret < 0) return ret; } - lab25: z->c = z->l - m26; } - { int m27 = z->l - z->c; (void)m27; /* do, line 700 */ - { int ret = r_step5j(z); /* call step5j, line 700 */ - if (ret == 0) goto lab26; + { int m27 = z->l - z->c; (void)m27; /* do, line 698 */ + { int ret = r_step5j(z); /* call step5j, line 698 */ if (ret < 0) return ret; } - lab26: z->c = z->l - m27; } - { int m28 = z->l - z->c; (void)m28; /* do, line 701 */ - { int ret = r_step5i(z); /* call step5i, line 701 */ - if (ret == 0) goto lab27; + { int m28 = z->l - z->c; (void)m28; /* do, line 699 */ + { int ret = r_step5i(z); /* call step5i, line 699 */ if (ret < 0) return ret; } - lab27: z->c = z->l - m28; } - { int m29 = z->l - z->c; (void)m29; /* do, line 702 */ - { int ret = r_step5k(z); /* call step5k, line 702 */ - if (ret == 0) goto lab28; + { int m29 = z->l - z->c; (void)m29; /* do, line 700 */ + { int ret = r_step5k(z); /* call step5k, line 700 */ if (ret < 0) return ret; } - lab28: z->c = z->l - m29; } - { int m30 = z->l - z->c; (void)m30; /* do, line 703 */ - { int ret = r_step5l(z); /* call step5l, line 703 */ - if (ret == 0) goto lab29; + { int m30 = z->l - z->c; (void)m30; /* do, line 701 */ + { int ret = r_step5l(z); /* call step5l, line 701 */ if (ret < 0) return ret; } - lab29: z->c = z->l - m30; } - { int m31 = z->l - z->c; (void)m31; /* do, line 704 */ - { int ret = r_step5m(z); /* call step5m, line 704 */ - if (ret == 0) goto lab30; + { int m31 = z->l - z->c; (void)m31; /* do, line 702 */ + { int ret = r_step5m(z); /* call step5m, line 702 */ if (ret < 0) return ret; } - lab30: z->c = z->l - m31; } - { int m32 = z->l - z->c; (void)m32; /* do, line 705 */ - { int ret = r_step6(z); /* call step6, line 705 */ - if (ret == 0) goto lab31; + { int m32 = z->l - z->c; (void)m32; /* do, line 703 */ + { int ret = r_step6(z); /* call step6, line 703 */ if (ret < 0) return ret; } - lab31: z->c = z->l - m32; } - { int m33 = z->l - z->c; (void)m33; /* do, line 706 */ - { int ret = r_step7(z); /* call step7, line 706 */ - if (ret == 0) goto lab32; + { int m33 = z->l - z->c; (void)m33; /* do, line 704 */ + { int ret = r_step7(z); /* call step7, line 704 */ if (ret < 0) return ret; } - lab32: z->c = z->l - m33; } z->c = z->lb; return 1; } -extern struct SN_env * greek_UTF_8_create_env(void) { return SN_create_env(1, 0, 1); } +extern struct SN_env * greek_UTF_8_create_env(void) { return SN_create_env(0, 0, 1); } -extern void greek_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 1); } +extern void greek_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_hindi.c b/src/backend/snowball/libstemmer/stem_UTF_8_hindi.c new file mode 100644 index 0000000000000..06bc674eb90fb --- /dev/null +++ b/src/backend/snowball/libstemmer/stem_UTF_8_hindi.c @@ -0,0 +1,332 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#include "header.h" + +static int r_CONSONANT(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif +extern int hindi_UTF_8_stem(struct SN_env * z); +#ifdef __cplusplus +} +#endif +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * hindi_UTF_8_create_env(void); +extern void hindi_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_0[3] = { 0xE0, 0xA5, 0x80 }; +static const symbol s_0_1[12] = { 0xE0, 0xA5, 0x82, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_2[12] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_3[12] = { 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_4[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_5[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_6[12] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_7[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_8[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_9[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_10[9] = { 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_11[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_12[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_13[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_14[9] = { 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_15[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_16[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_17[6] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_18[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_19[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_20[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_21[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_22[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x80 }; +static const symbol s_0_23[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x81 }; +static const symbol s_0_24[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 }; +static const symbol s_0_25[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 }; +static const symbol s_0_26[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 }; +static const symbol s_0_27[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 }; +static const symbol s_0_28[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 }; +static const symbol s_0_29[3] = { 0xE0, 0xA5, 0x81 }; +static const symbol s_0_30[6] = { 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_31[9] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_32[12] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_33[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_34[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_35[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_36[9] = { 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_37[9] = { 0xE0, 0xA4, 0x89, 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_38[6] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_39[6] = { 0xE0, 0xA4, 0x88, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_40[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x88, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_41[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x88, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_42[6] = { 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_43[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_44[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_45[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_46[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_47[6] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_48[9] = { 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_49[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_50[9] = { 0xE0, 0xA4, 0x89, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_51[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_52[12] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_53[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_54[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_55[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_56[6] = { 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_57[9] = { 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_58[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_59[9] = { 0xE0, 0xA4, 0x89, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_60[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_61[12] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_62[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_63[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_64[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_65[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_66[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_67[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_68[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_69[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 }; +static const symbol s_0_70[3] = { 0xE0, 0xA5, 0x82 }; +static const symbol s_0_71[3] = { 0xE0, 0xA4, 0x85 }; +static const symbol s_0_72[3] = { 0xE0, 0xA4, 0x86 }; +static const symbol s_0_73[3] = { 0xE0, 0xA4, 0x87 }; +static const symbol s_0_74[3] = { 0xE0, 0xA5, 0x87 }; +static const symbol s_0_75[12] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_76[12] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_77[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_78[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_79[9] = { 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_80[9] = { 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_81[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_82[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_83[6] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_84[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_85[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_86[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_87[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_88[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_89[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_90[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 }; +static const symbol s_0_91[3] = { 0xE0, 0xA4, 0x88 }; +static const symbol s_0_92[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x88 }; +static const symbol s_0_93[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x88 }; +static const symbol s_0_94[3] = { 0xE0, 0xA4, 0x89 }; +static const symbol s_0_95[3] = { 0xE0, 0xA4, 0x8A }; +static const symbol s_0_96[3] = { 0xE0, 0xA5, 0x8B }; +static const symbol s_0_97[3] = { 0xE0, 0xA5, 0x8D }; +static const symbol s_0_98[3] = { 0xE0, 0xA4, 0x8F }; +static const symbol s_0_99[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F }; +static const symbol s_0_100[6] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F }; +static const symbol s_0_101[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F }; +static const symbol s_0_102[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F }; +static const symbol s_0_103[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F }; +static const symbol s_0_104[6] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x8F }; +static const symbol s_0_105[3] = { 0xE0, 0xA4, 0x93 }; +static const symbol s_0_106[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93 }; +static const symbol s_0_107[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93 }; +static const symbol s_0_108[6] = { 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 }; +static const symbol s_0_109[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 }; +static const symbol s_0_110[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 }; +static const symbol s_0_111[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 }; +static const symbol s_0_112[3] = { 0xE0, 0xA4, 0xBE }; +static const symbol s_0_113[12] = { 0xE0, 0xA5, 0x82, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_114[12] = { 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_115[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_116[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_117[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_118[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_119[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_120[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_121[6] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_122[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_123[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_124[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_125[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_126[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_127[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_128[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_129[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_130[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE }; +static const symbol s_0_131[3] = { 0xE0, 0xA4, 0xBF }; + +static const struct among a_0[132] = +{ +/* 0 */ { 3, s_0_0, -1, -1, 0}, +/* 1 */ { 12, s_0_1, 0, -1, 0}, +/* 2 */ { 12, s_0_2, 0, -1, 0}, +/* 3 */ { 12, s_0_3, 0, -1, 0}, +/* 4 */ { 15, s_0_4, 3, -1, 0}, +/* 5 */ { 15, s_0_5, 3, -1, 0}, +/* 6 */ { 12, s_0_6, 0, -1, 0}, +/* 7 */ { 15, s_0_7, 6, -1, 0}, +/* 8 */ { 15, s_0_8, 6, -1, 0}, +/* 9 */ { 9, s_0_9, 0, -1, 0}, +/* 10 */ { 9, s_0_10, 0, -1, 0}, +/* 11 */ { 9, s_0_11, 0, -1, 0}, +/* 12 */ { 12, s_0_12, 11, -1, 0}, +/* 13 */ { 12, s_0_13, 11, -1, 0}, +/* 14 */ { 9, s_0_14, 0, -1, 0}, +/* 15 */ { 12, s_0_15, 14, -1, 0}, +/* 16 */ { 12, s_0_16, 14, -1, 0}, +/* 17 */ { 6, s_0_17, 0, -1, r_CONSONANT}, +/* 18 */ { 9, s_0_18, 17, -1, 0}, +/* 19 */ { 9, s_0_19, 17, -1, 0}, +/* 20 */ { 9, s_0_20, 17, -1, 0}, +/* 21 */ { 6, s_0_21, 0, -1, r_CONSONANT}, +/* 22 */ { 9, s_0_22, 21, -1, 0}, +/* 23 */ { 6, s_0_23, -1, -1, 0}, +/* 24 */ { 6, s_0_24, -1, -1, 0}, +/* 25 */ { 12, s_0_25, 24, -1, 0}, +/* 26 */ { 15, s_0_26, 25, -1, 0}, +/* 27 */ { 15, s_0_27, 25, -1, 0}, +/* 28 */ { 12, s_0_28, 24, -1, 0}, +/* 29 */ { 3, s_0_29, -1, -1, 0}, +/* 30 */ { 6, s_0_30, -1, -1, 0}, +/* 31 */ { 9, s_0_31, 30, -1, r_CONSONANT}, +/* 32 */ { 12, s_0_32, 31, -1, 0}, +/* 33 */ { 12, s_0_33, 31, -1, 0}, +/* 34 */ { 12, s_0_34, 31, -1, 0}, +/* 35 */ { 6, s_0_35, -1, -1, 0}, +/* 36 */ { 9, s_0_36, 35, -1, 0}, +/* 37 */ { 9, s_0_37, 35, -1, 0}, +/* 38 */ { 6, s_0_38, -1, -1, 0}, +/* 39 */ { 6, s_0_39, -1, -1, 0}, +/* 40 */ { 9, s_0_40, 39, -1, 0}, +/* 41 */ { 9, s_0_41, 39, -1, 0}, +/* 42 */ { 6, s_0_42, -1, -1, 0}, +/* 43 */ { 12, s_0_43, 42, -1, 0}, +/* 44 */ { 15, s_0_44, 43, -1, 0}, +/* 45 */ { 15, s_0_45, 43, -1, 0}, +/* 46 */ { 12, s_0_46, 42, -1, 0}, +/* 47 */ { 6, s_0_47, -1, -1, 0}, +/* 48 */ { 9, s_0_48, 47, -1, 0}, +/* 49 */ { 9, s_0_49, 47, -1, 0}, +/* 50 */ { 9, s_0_50, 47, -1, 0}, +/* 51 */ { 9, s_0_51, 47, -1, 0}, +/* 52 */ { 12, s_0_52, 51, -1, r_CONSONANT}, +/* 53 */ { 15, s_0_53, 52, -1, 0}, +/* 54 */ { 12, s_0_54, 51, -1, r_CONSONANT}, +/* 55 */ { 15, s_0_55, 54, -1, 0}, +/* 56 */ { 6, s_0_56, -1, -1, 0}, +/* 57 */ { 9, s_0_57, 56, -1, 0}, +/* 58 */ { 9, s_0_58, 56, -1, 0}, +/* 59 */ { 9, s_0_59, 56, -1, 0}, +/* 60 */ { 9, s_0_60, 56, -1, 0}, +/* 61 */ { 12, s_0_61, 60, -1, r_CONSONANT}, +/* 62 */ { 15, s_0_62, 61, -1, 0}, +/* 63 */ { 12, s_0_63, 60, -1, r_CONSONANT}, +/* 64 */ { 15, s_0_64, 63, -1, 0}, +/* 65 */ { 6, s_0_65, -1, -1, 0}, +/* 66 */ { 12, s_0_66, 65, -1, 0}, +/* 67 */ { 15, s_0_67, 66, -1, 0}, +/* 68 */ { 15, s_0_68, 66, -1, 0}, +/* 69 */ { 12, s_0_69, 65, -1, 0}, +/* 70 */ { 3, s_0_70, -1, -1, 0}, +/* 71 */ { 3, s_0_71, -1, -1, 0}, +/* 72 */ { 3, s_0_72, -1, -1, 0}, +/* 73 */ { 3, s_0_73, -1, -1, 0}, +/* 74 */ { 3, s_0_74, -1, -1, 0}, +/* 75 */ { 12, s_0_75, 74, -1, 0}, +/* 76 */ { 12, s_0_76, 74, -1, 0}, +/* 77 */ { 15, s_0_77, 76, -1, 0}, +/* 78 */ { 15, s_0_78, 76, -1, 0}, +/* 79 */ { 9, s_0_79, 74, -1, 0}, +/* 80 */ { 9, s_0_80, 74, -1, 0}, +/* 81 */ { 12, s_0_81, 80, -1, 0}, +/* 82 */ { 12, s_0_82, 80, -1, 0}, +/* 83 */ { 6, s_0_83, 74, -1, r_CONSONANT}, +/* 84 */ { 9, s_0_84, 83, -1, 0}, +/* 85 */ { 9, s_0_85, 83, -1, 0}, +/* 86 */ { 9, s_0_86, 83, -1, 0}, +/* 87 */ { 6, s_0_87, 74, -1, r_CONSONANT}, +/* 88 */ { 9, s_0_88, 87, -1, 0}, +/* 89 */ { 9, s_0_89, 87, -1, 0}, +/* 90 */ { 9, s_0_90, 87, -1, 0}, +/* 91 */ { 3, s_0_91, -1, -1, 0}, +/* 92 */ { 6, s_0_92, 91, -1, 0}, +/* 93 */ { 6, s_0_93, 91, -1, 0}, +/* 94 */ { 3, s_0_94, -1, -1, 0}, +/* 95 */ { 3, s_0_95, -1, -1, 0}, +/* 96 */ { 3, s_0_96, -1, -1, 0}, +/* 97 */ { 3, s_0_97, -1, -1, 0}, +/* 98 */ { 3, s_0_98, -1, -1, 0}, +/* 99 */ { 6, s_0_99, 98, -1, 0}, +/*100 */ { 6, s_0_100, 98, -1, 0}, +/*101 */ { 9, s_0_101, 100, -1, 0}, +/*102 */ { 9, s_0_102, 100, -1, 0}, +/*103 */ { 6, s_0_103, 98, -1, 0}, +/*104 */ { 6, s_0_104, 98, -1, 0}, +/*105 */ { 3, s_0_105, -1, -1, 0}, +/*106 */ { 6, s_0_106, 105, -1, 0}, +/*107 */ { 6, s_0_107, 105, -1, 0}, +/*108 */ { 6, s_0_108, -1, -1, r_CONSONANT}, +/*109 */ { 9, s_0_109, 108, -1, 0}, +/*110 */ { 9, s_0_110, 108, -1, 0}, +/*111 */ { 9, s_0_111, 108, -1, 0}, +/*112 */ { 3, s_0_112, -1, -1, 0}, +/*113 */ { 12, s_0_113, 112, -1, 0}, +/*114 */ { 12, s_0_114, 112, -1, 0}, +/*115 */ { 15, s_0_115, 114, -1, 0}, +/*116 */ { 15, s_0_116, 114, -1, 0}, +/*117 */ { 9, s_0_117, 112, -1, 0}, +/*118 */ { 9, s_0_118, 112, -1, 0}, +/*119 */ { 12, s_0_119, 118, -1, 0}, +/*120 */ { 12, s_0_120, 118, -1, 0}, +/*121 */ { 6, s_0_121, 112, -1, r_CONSONANT}, +/*122 */ { 9, s_0_122, 121, -1, 0}, +/*123 */ { 9, s_0_123, 121, -1, 0}, +/*124 */ { 9, s_0_124, 121, -1, 0}, +/*125 */ { 6, s_0_125, 112, -1, r_CONSONANT}, +/*126 */ { 9, s_0_126, 125, -1, 0}, +/*127 */ { 9, s_0_127, 125, -1, 0}, +/*128 */ { 9, s_0_128, 125, -1, 0}, +/*129 */ { 9, s_0_129, 112, -1, 0}, +/*130 */ { 9, s_0_130, 112, -1, 0}, +/*131 */ { 3, s_0_131, -1, -1, 0} +}; + +static const unsigned char g_consonant[] = { 255, 255, 255, 255, 159, 0, 0, 0, 248, 7 }; + + +static int r_CONSONANT(struct SN_env * z) { /* backwardmode */ + if (in_grouping_b_U(z, g_consonant, 2325, 2399, 0)) return 0; /* grouping consonant, line 129 */ + return 1; +} + +extern int hindi_UTF_8_stem(struct SN_env * z) { /* forwardmode */ + { int c_test1 = z->c; /* test, line 132 */ + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) return 0; + z->c = ret; /* next, line 132 */ + } + z->I[0] = z->c; /* setmark p, line 132 */ + z->c = c_test1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 133 */ + + + { int mlimit2; /* setlimit, line 139 */ + if (z->c < z->I[0]) return 0; + mlimit2 = z->lb; z->lb = z->I[0]; + z->ket = z->c; /* [, line 139 */ + if (!(find_among_b(z, a_0, 132))) { z->lb = mlimit2; return 0; } /* substring, line 139 */ + z->bra = z->c; /* ], line 139 */ + z->lb = mlimit2; + } + { int ret = slice_del(z); /* delete, line 321 */ + if (ret < 0) return ret; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * hindi_UTF_8_create_env(void) { return SN_create_env(0, 1, 0); } + +extern void hindi_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_hungarian.c b/src/backend/snowball/libstemmer/stem_UTF_8_hungarian.c index d8ae15aeabdb0..284b3230c2423 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_hungarian.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_hungarian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -799,84 +798,64 @@ static int r_plur_owner(struct SN_env * z) { /* backwardmode */ extern int hungarian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 229 */ { int ret = r_mark_regions(z); /* call mark_regions, line 229 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 230 */ { int m2 = z->l - z->c; (void)m2; /* do, line 231 */ { int ret = r_instrum(z); /* call instrum, line 231 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 232 */ { int ret = r_case(z); /* call case, line 232 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 233 */ { int ret = r_case_special(z); /* call case_special, line 233 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } { int m5 = z->l - z->c; (void)m5; /* do, line 234 */ { int ret = r_case_other(z); /* call case_other, line 234 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m5; } { int m6 = z->l - z->c; (void)m6; /* do, line 235 */ { int ret = r_factive(z); /* call factive, line 235 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->c = z->l - m6; } { int m7 = z->l - z->c; (void)m7; /* do, line 236 */ { int ret = r_owned(z); /* call owned, line 236 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m7; } { int m8 = z->l - z->c; (void)m8; /* do, line 237 */ { int ret = r_sing_owner(z); /* call sing_owner, line 237 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 238 */ { int ret = r_plur_owner(z); /* call plur_owner, line 238 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m9; } { int m10 = z->l - z->c; (void)m10; /* do, line 239 */ { int ret = r_plural(z); /* call plural, line 239 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m10; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_indonesian.c b/src/backend/snowball/libstemmer/stem_UTF_8_indonesian.c index 846e6e76bf756..0a4d6392bff8c 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_indonesian.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_indonesian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -314,8 +313,9 @@ static int r_remove_second_order_prefix(struct SN_env * z) { /* forwardmode */ extern int indonesian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ z->I[0] = 0; /* $measure = , line 172 */ { int c1 = z->c; /* do, line 173 */ - while(1) { /* repeat, line 173 */ - int c2 = z->c; +/* repeat, line 173 */ + + while(1) { int c2 = z->c; { /* gopast */ /* grouping vowel, line 173 */ int ret = out_grouping_U(z, g_vowel, 97, 117, 1); if (ret < 0) goto lab1; @@ -335,19 +335,15 @@ extern int indonesian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m3 = z->l - z->c; (void)m3; /* do, line 177 */ { int ret = r_remove_particle(z); /* call remove_particle, line 177 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } if (!(z->I[0] > 2)) return 0; /* $( > ), line 178 */ { int m4 = z->l - z->c; (void)m4; /* do, line 179 */ { int ret = r_remove_possessive_pronoun(z); /* call remove_possessive_pronoun, line 179 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } z->c = z->lb; @@ -355,56 +351,54 @@ extern int indonesian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c5 = z->c; /* or, line 188 */ { int c_test6 = z->c; /* test, line 182 */ { int ret = r_remove_first_order_prefix(z); /* call remove_first_order_prefix, line 183 */ - if (ret == 0) goto lab5; + if (ret == 0) goto lab3; if (ret < 0) return ret; } { int c7 = z->c; /* do, line 184 */ { int c_test8 = z->c; /* test, line 185 */ - if (!(z->I[0] > 2)) goto lab6; /* $( > ), line 185 */ + if (!(z->I[0] > 2)) goto lab4; /* $( > ), line 185 */ z->lb = z->c; z->c = z->l; /* backwards, line 185 */ { int ret = r_remove_suffix(z); /* call remove_suffix, line 185 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } z->c = z->lb; z->c = c_test8; } - if (!(z->I[0] > 2)) goto lab6; /* $( > ), line 186 */ + if (!(z->I[0] > 2)) goto lab4; /* $( > ), line 186 */ { int ret = r_remove_second_order_prefix(z); /* call remove_second_order_prefix, line 186 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab6: + lab4: z->c = c7; } z->c = c_test6; } - goto lab4; - lab5: + goto lab2; + lab3: z->c = c5; { int c9 = z->c; /* do, line 189 */ { int ret = r_remove_second_order_prefix(z); /* call remove_second_order_prefix, line 189 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = c9; } { int c10 = z->c; /* do, line 190 */ - if (!(z->I[0] > 2)) goto lab8; /* $( > ), line 190 */ + if (!(z->I[0] > 2)) goto lab5; /* $( > ), line 190 */ z->lb = z->c; z->c = z->l; /* backwards, line 190 */ { int ret = r_remove_suffix(z); /* call remove_suffix, line 190 */ - if (ret == 0) goto lab8; + if (ret == 0) goto lab5; if (ret < 0) return ret; } z->c = z->lb; - lab8: + lab5: z->c = c10; } } -lab4: +lab2: return 1; } diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_irish.c b/src/backend/snowball/libstemmer/stem_UTF_8_irish.c index 239c967c2b057..8d1f219db0b2e 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_irish.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_irish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -442,42 +441,32 @@ static int r_verb_sfx(struct SN_env * z) { /* backwardmode */ extern int irish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 144 */ { int ret = r_initial_morph(z); /* call initial_morph, line 144 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 145 */ { int ret = r_mark_regions(z); /* call mark_regions, line 145 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 146 */ { int m2 = z->l - z->c; (void)m2; /* do, line 147 */ { int ret = r_noun_sfx(z); /* call noun_sfx, line 147 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 148 */ { int ret = r_deriv(z); /* call deriv, line 148 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 149 */ { int ret = r_verb_sfx(z); /* call verb_sfx, line 149 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m4; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_italian.c b/src/backend/snowball/libstemmer/stem_UTF_8_italian.c index 7546960fac94d..51e47978c21af 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_italian.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_italian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -492,8 +491,9 @@ static const symbol s_17[] = { 'i', 'c' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ int among_var; { int c_test1 = z->c; /* test, line 35 */ - while(1) { /* repeat, line 35 */ - int c2 = z->c; +/* repeat, line 35 */ + + while(1) { int c2 = z->c; z->bra = z->c; /* [, line 36 */ among_var = find_among(z, a_0, 7); /* substring, line 36 */ if (!(among_var)) goto lab0; @@ -543,8 +543,9 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ } z->c = c_test1; } - while(1) { /* repeat, line 46 */ - int c3 = z->c; +/* repeat, line 46 */ + + while(1) { int c3 = z->c; while(1) { /* goto, line 46 */ int c4 = z->c; if (in_grouping_U(z, g_v, 97, 249, 0)) goto lab2; /* grouping v, line 47 */ @@ -670,8 +671,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 70 */ - int c1 = z->c; +/* repeat, line 70 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 72 */ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else /* substring, line 72 */ among_var = find_among(z, a_1, 3); @@ -975,61 +977,51 @@ static int r_vowel_suffix(struct SN_env * z) { /* backwardmode */ extern int italian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 182 */ { int ret = r_prelude(z); /* call prelude, line 182 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 183 */ { int ret = r_mark_regions(z); /* call mark_regions, line 183 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 184 */ { int m2 = z->l - z->c; (void)m2; /* do, line 185 */ { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 185 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 186 */ { int m4 = z->l - z->c; (void)m4; /* or, line 186 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 186 */ - if (ret == 0) goto lab5; + if (ret == 0) goto lab2; if (ret < 0) return ret; } - goto lab4; - lab5: + goto lab1; + lab2: z->c = z->l - m4; { int ret = r_verb_suffix(z); /* call verb_suffix, line 186 */ - if (ret == 0) goto lab3; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab4: - lab3: + lab1: + lab0: z->c = z->l - m3; } { int m5 = z->l - z->c; (void)m5; /* do, line 187 */ { int ret = r_vowel_suffix(z); /* call vowel_suffix, line 187 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m5; } z->c = z->lb; { int c6 = z->c; /* do, line 189 */ { int ret = r_postlude(z); /* call postlude, line 189 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = c6; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_lithuanian.c b/src/backend/snowball/libstemmer/stem_UTF_8_lithuanian.c index dbf27e62ddfbc..f876e8fc236bd 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_lithuanian.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_lithuanian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -652,8 +651,9 @@ static int r_step1(struct SN_env * z) { /* backwardmode */ } static int r_step2(struct SN_env * z) { /* backwardmode */ - while(1) { /* repeat, line 232 */ - int m1 = z->l - z->c; (void)m1; +/* repeat, line 232 */ + + while(1) { int m1 = z->l - z->c; (void)m1; { int mlimit2; /* setlimit, line 233 */ if (z->c < z->I[0]) goto lab0; @@ -794,50 +794,38 @@ extern int lithuanian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m4 = z->l - z->c; (void)m4; /* do, line 365 */ { int ret = r_fix_conflicts(z); /* call fix_conflicts, line 365 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m4; } { int m5 = z->l - z->c; (void)m5; /* do, line 366 */ { int ret = r_step1(z); /* call step1, line 366 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m5; } { int m6 = z->l - z->c; (void)m6; /* do, line 367 */ { int ret = r_fix_chdz(z); /* call fix_chdz, line 367 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = z->l - m6; } { int m7 = z->l - z->c; (void)m7; /* do, line 368 */ { int ret = r_step2(z); /* call step2, line 368 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->c = z->l - m7; } { int m8 = z->l - z->c; (void)m8; /* do, line 369 */ { int ret = r_fix_chdz(z); /* call fix_chdz, line 369 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 370 */ { int ret = r_fix_gd(z); /* call fix_gd, line 370 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m9; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_nepali.c b/src/backend/snowball/libstemmer/stem_UTF_8_nepali.c index d1c1be76f3733..7927e66803e5b 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_nepali.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_nepali.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -379,36 +378,35 @@ extern int nepali_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m1 = z->l - z->c; (void)m1; /* do, line 87 */ { int ret = r_remove_category_1(z); /* call remove_category_1, line 87 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = z->l - m1; } { int m2 = z->l - z->c; (void)m2; /* do, line 88 */ - while(1) { /* repeat, line 89 */ - int m3 = z->l - z->c; (void)m3; +/* repeat, line 89 */ + + while(1) { int m3 = z->l - z->c; (void)m3; { int m4 = z->l - z->c; (void)m4; /* do, line 89 */ { int m5 = z->l - z->c; (void)m5; /* and, line 89 */ { int ret = r_check_category_2(z); /* call check_category_2, line 89 */ - if (ret == 0) goto lab3; + if (ret == 0) goto lab2; if (ret < 0) return ret; } z->c = z->l - m5; { int ret = r_remove_category_2(z); /* call remove_category_2, line 89 */ - if (ret == 0) goto lab3; + if (ret == 0) goto lab2; if (ret < 0) return ret; } } - lab3: + lab2: z->c = z->l - m4; } { int ret = r_remove_category_3(z); /* call remove_category_3, line 89 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab1; if (ret < 0) return ret; } continue; - lab2: + lab1: z->c = z->l - m3; break; } diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_norwegian.c b/src/backend/snowball/libstemmer/stem_UTF_8_norwegian.c index 62d221be55ad4..e333b1dfffe3b 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_norwegian.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_norwegian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -243,36 +242,28 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ extern int norwegian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 74 */ { int ret = r_mark_regions(z); /* call mark_regions, line 74 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 75 */ { int m2 = z->l - z->c; (void)m2; /* do, line 76 */ { int ret = r_main_suffix(z); /* call main_suffix, line 76 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 77 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 77 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 78 */ { int ret = r_other_suffix(z); /* call other_suffix, line 78 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_porter.c b/src/backend/snowball/libstemmer/stem_UTF_8_porter.c index bb83a7449a170..961a06cbf92d6 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_porter.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_porter.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -577,8 +576,9 @@ extern int porter_UTF_8_stem(struct SN_env * z) { /* forwardmode */ z->c = c1; } { int c2 = z->c; /* do, line 117 */ - while(1) { /* repeat, line 117 */ - int c3 = z->c; +/* repeat, line 117 */ + + while(1) { int c3 = z->c; while(1) { /* goto, line 117 */ int c4 = z->c; if (in_grouping_U(z, g_v, 97, 121, 0)) goto lab3; /* grouping v, line 117 */ @@ -638,85 +638,70 @@ extern int porter_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m6 = z->l - z->c; (void)m6; /* do, line 127 */ { int ret = r_Step_1a(z); /* call Step_1a, line 127 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->c = z->l - m6; } { int m7 = z->l - z->c; (void)m7; /* do, line 128 */ { int ret = r_Step_1b(z); /* call Step_1b, line 128 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m7; } { int m8 = z->l - z->c; (void)m8; /* do, line 129 */ { int ret = r_Step_1c(z); /* call Step_1c, line 129 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m8; } { int m9 = z->l - z->c; (void)m9; /* do, line 130 */ { int ret = r_Step_2(z); /* call Step_2, line 130 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m9; } { int m10 = z->l - z->c; (void)m10; /* do, line 131 */ { int ret = r_Step_3(z); /* call Step_3, line 131 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = z->l - m10; } { int m11 = z->l - z->c; (void)m11; /* do, line 132 */ { int ret = r_Step_4(z); /* call Step_4, line 132 */ - if (ret == 0) goto lab10; if (ret < 0) return ret; } - lab10: z->c = z->l - m11; } { int m12 = z->l - z->c; (void)m12; /* do, line 133 */ { int ret = r_Step_5a(z); /* call Step_5a, line 133 */ - if (ret == 0) goto lab11; if (ret < 0) return ret; } - lab11: z->c = z->l - m12; } { int m13 = z->l - z->c; (void)m13; /* do, line 134 */ { int ret = r_Step_5b(z); /* call Step_5b, line 134 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m13; } z->c = z->lb; { int c14 = z->c; /* do, line 137 */ - if (!(z->B[0])) goto lab13; /* Boolean test Y_found, line 137 */ - while(1) { /* repeat, line 137 */ - int c15 = z->c; + if (!(z->B[0])) goto lab5; /* Boolean test Y_found, line 137 */ +/* repeat, line 137 */ + + while(1) { int c15 = z->c; while(1) { /* goto, line 137 */ int c16 = z->c; z->bra = z->c; /* [, line 137 */ - if (z->c == z->l || z->p[z->c] != 'Y') goto lab15; /* literal, line 137 */ + if (z->c == z->l || z->p[z->c] != 'Y') goto lab7; /* literal, line 137 */ z->c++; z->ket = z->c; /* ], line 137 */ z->c = c16; break; - lab15: + lab7: z->c = c16; { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); - if (ret < 0) goto lab14; + if (ret < 0) goto lab6; z->c = ret; /* goto, line 137 */ } } @@ -724,11 +709,11 @@ extern int porter_UTF_8_stem(struct SN_env * z) { /* forwardmode */ if (ret < 0) return ret; } continue; - lab14: + lab6: z->c = c15; break; } - lab13: + lab5: z->c = c14; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_portuguese.c b/src/backend/snowball/libstemmer/stem_UTF_8_portuguese.c index f5f2e0fe0cf44..278fdff8d9a2e 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_portuguese.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_portuguese.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -475,8 +474,9 @@ static const symbol s_10[] = { 'c' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 36 */ - int c1 = z->c; +/* repeat, line 36 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 37 */ if (z->c + 1 >= z->l || (z->p[z->c + 1] != 163 && z->p[z->c + 1] != 181)) among_var = 3; else /* substring, line 37 */ among_var = find_among(z, a_0, 3); @@ -592,8 +592,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 62 */ - int c1 = z->c; +/* repeat, line 62 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 63 */ if (z->c + 1 >= z->l || z->p[z->c + 1] != 126) among_var = 3; else /* substring, line 63 */ among_var = find_among(z, a_1, 3); @@ -885,18 +886,14 @@ static int r_residual_form(struct SN_env * z) { /* backwardmode */ extern int portuguese_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 202 */ { int ret = r_prelude(z); /* call prelude, line 202 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 203 */ { int ret = r_mark_regions(z); /* call mark_regions, line 203 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 204 */ { int m2 = z->l - z->c; (void)m2; /* do, line 205 */ @@ -904,67 +901,63 @@ extern int portuguese_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m4 = z->l - z->c; (void)m4; /* and, line 207 */ { int m5 = z->l - z->c; (void)m5; /* or, line 206 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 206 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab4; if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab3; + lab4: z->c = z->l - m5; { int ret = r_verb_suffix(z); /* call verb_suffix, line 206 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab2; if (ret < 0) return ret; } } - lab5: + lab3: z->c = z->l - m4; { int m6 = z->l - z->c; (void)m6; /* do, line 207 */ z->ket = z->c; /* [, line 207 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab7; /* literal, line 207 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab5; /* literal, line 207 */ z->c--; z->bra = z->c; /* ], line 207 */ { int m_test7 = z->l - z->c; /* test, line 207 */ - if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab7; /* literal, line 207 */ + if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab5; /* literal, line 207 */ z->c--; z->c = z->l - m_test7; } { int ret = r_RV(z); /* call RV, line 207 */ - if (ret == 0) goto lab7; + if (ret == 0) goto lab5; if (ret < 0) return ret; } { int ret = slice_del(z); /* delete, line 207 */ if (ret < 0) return ret; } - lab7: + lab5: z->c = z->l - m6; } } - goto lab3; - lab4: + goto lab1; + lab2: z->c = z->l - m3; { int ret = r_residual_suffix(z); /* call residual_suffix, line 209 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab3: - lab2: + lab1: + lab0: z->c = z->l - m2; } { int m8 = z->l - z->c; (void)m8; /* do, line 211 */ { int ret = r_residual_form(z); /* call residual_form, line 211 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = z->l - m8; } z->c = z->lb; { int c9 = z->c; /* do, line 213 */ { int ret = r_postlude(z); /* call postlude, line 213 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = c9; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_romanian.c b/src/backend/snowball/libstemmer/stem_UTF_8_romanian.c index 0e1e5fcd08762..d9594d5cd7c5e 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_romanian.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_romanian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -538,8 +537,9 @@ static const symbol s_18[] = { 't' }; static const symbol s_19[] = { 'i', 's', 't' }; static int r_prelude(struct SN_env * z) { /* forwardmode */ - while(1) { /* repeat, line 32 */ - int c1 = z->c; +/* repeat, line 32 */ + + while(1) { int c1 = z->c; while(1) { /* goto, line 32 */ int c2 = z->c; if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab1; /* grouping v, line 33 */ @@ -665,8 +665,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 56 */ - int c1 = z->c; +/* repeat, line 56 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 58 */ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else /* substring, line 58 */ among_var = find_among(z, a_0, 3); @@ -820,8 +821,9 @@ static int r_combo_suffix(struct SN_env * z) { /* backwardmode */ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ int among_var; z->B[0] = 0; /* unset standard_suffix_removed, line 130 */ - while(1) { /* repeat, line 131 */ - int m1 = z->l - z->c; (void)m1; +/* repeat, line 131 */ + + while(1) { int m1 = z->l - z->c; (void)m1; { int ret = r_combo_suffix(z); /* call combo_suffix, line 131 */ if (ret == 0) goto lab0; if (ret < 0) return ret; @@ -913,66 +915,54 @@ static int r_vowel_suffix(struct SN_env * z) { /* backwardmode */ extern int romanian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 226 */ { int ret = r_prelude(z); /* call prelude, line 226 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } /* do, line 227 */ { int ret = r_mark_regions(z); /* call mark_regions, line 227 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: z->lb = z->c; z->c = z->l; /* backwards, line 228 */ { int m2 = z->l - z->c; (void)m2; /* do, line 229 */ { int ret = r_step_0(z); /* call step_0, line 229 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 230 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 230 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 231 */ { int m5 = z->l - z->c; (void)m5; /* or, line 231 */ - if (!(z->B[0])) goto lab6; /* Boolean test standard_suffix_removed, line 231 */ - goto lab5; - lab6: + if (!(z->B[0])) goto lab2; /* Boolean test standard_suffix_removed, line 231 */ + goto lab1; + lab2: z->c = z->l - m5; { int ret = r_verb_suffix(z); /* call verb_suffix, line 231 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab5: - lab4: + lab1: + lab0: z->c = z->l - m4; } { int m6 = z->l - z->c; (void)m6; /* do, line 232 */ { int ret = r_vowel_suffix(z); /* call vowel_suffix, line 232 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = z->l - m6; } z->c = z->lb; { int c7 = z->c; /* do, line 234 */ { int ret = r_postlude(z); /* call postlude, line 234 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = c7; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_russian.c b/src/backend/snowball/libstemmer/stem_UTF_8_russian.c index 5e5fd20fa3f31..fb69a847cf4e5 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_russian.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_russian.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -565,8 +564,9 @@ static int r_tidy_up(struct SN_env * z) { /* backwardmode */ extern int russian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 205 */ - while(1) { /* repeat, line 205 */ - int c2 = z->c; +/* repeat, line 205 */ + + while(1) { int c2 = z->c; while(1) { /* goto, line 205 */ int c3 = z->c; z->bra = z->c; /* [, line 205 */ @@ -593,10 +593,8 @@ extern int russian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ } /* do, line 207 */ { int ret = r_mark_regions(z); /* call mark_regions, line 207 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } -lab3: z->lb = z->c; z->c = z->l; /* backwards, line 208 */ @@ -606,71 +604,67 @@ extern int russian_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m5 = z->l - z->c; (void)m5; /* do, line 209 */ { int m6 = z->l - z->c; (void)m6; /* or, line 210 */ { int ret = r_perfective_gerund(z); /* call perfective_gerund, line 210 */ - if (ret == 0) goto lab6; + if (ret == 0) goto lab5; if (ret < 0) return ret; } - goto lab5; - lab6: + goto lab4; + lab5: z->c = z->l - m6; { int m7 = z->l - z->c; (void)m7; /* try, line 211 */ { int ret = r_reflexive(z); /* call reflexive, line 211 */ - if (ret == 0) { z->c = z->l - m7; goto lab7; } + if (ret == 0) { z->c = z->l - m7; goto lab6; } if (ret < 0) return ret; } - lab7: + lab6: ; } { int m8 = z->l - z->c; (void)m8; /* or, line 212 */ { int ret = r_adjectival(z); /* call adjectival, line 212 */ - if (ret == 0) goto lab9; + if (ret == 0) goto lab8; if (ret < 0) return ret; } - goto lab8; - lab9: + goto lab7; + lab8: z->c = z->l - m8; { int ret = r_verb(z); /* call verb, line 212 */ - if (ret == 0) goto lab10; + if (ret == 0) goto lab9; if (ret < 0) return ret; } - goto lab8; - lab10: + goto lab7; + lab9: z->c = z->l - m8; { int ret = r_noun(z); /* call noun, line 212 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab3; if (ret < 0) return ret; } } - lab8: + lab7: ; } - lab5: lab4: + lab3: z->c = z->l - m5; } { int m9 = z->l - z->c; (void)m9; /* try, line 215 */ z->ket = z->c; /* [, line 215 */ - if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m9; goto lab11; } /* literal, line 215 */ + if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m9; goto lab10; } /* literal, line 215 */ z->bra = z->c; /* ], line 215 */ { int ret = slice_del(z); /* delete, line 215 */ if (ret < 0) return ret; } - lab11: + lab10: ; } { int m10 = z->l - z->c; (void)m10; /* do, line 218 */ { int ret = r_derivational(z); /* call derivational, line 218 */ - if (ret == 0) goto lab12; if (ret < 0) return ret; } - lab12: z->c = z->l - m10; } { int m11 = z->l - z->c; (void)m11; /* do, line 219 */ { int ret = r_tidy_up(z); /* call tidy_up, line 219 */ - if (ret == 0) goto lab13; if (ret < 0) return ret; } - lab13: z->c = z->l - m11; } z->lb = mlimit4; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_spanish.c b/src/backend/snowball/libstemmer/stem_UTF_8_spanish.c index a3755d4d840ea..237d743ca8a99 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_spanish.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_spanish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -588,8 +587,9 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */ int among_var; - while(1) { /* repeat, line 49 */ - int c1 = z->c; +/* repeat, line 49 */ + + while(1) { int c1 = z->c; z->bra = z->c; /* [, line 50 */ if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((67641858 >> (z->p[z->c + 1] & 0x1f)) & 1)) among_var = 6; else /* substring, line 50 */ among_var = find_among(z, a_0, 6); @@ -989,60 +989,52 @@ static int r_residual_suffix(struct SN_env * z) { /* backwardmode */ extern int spanish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ /* do, line 216 */ { int ret = r_mark_regions(z); /* call mark_regions, line 216 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } -lab0: z->lb = z->c; z->c = z->l; /* backwards, line 217 */ { int m1 = z->l - z->c; (void)m1; /* do, line 218 */ { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 218 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m1; } { int m2 = z->l - z->c; (void)m2; /* do, line 219 */ { int m3 = z->l - z->c; (void)m3; /* or, line 219 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 219 */ - if (ret == 0) goto lab4; + if (ret == 0) goto lab2; if (ret < 0) return ret; } - goto lab3; - lab4: + goto lab1; + lab2: z->c = z->l - m3; { int ret = r_y_verb_suffix(z); /* call y_verb_suffix, line 220 */ - if (ret == 0) goto lab5; + if (ret == 0) goto lab3; if (ret < 0) return ret; } - goto lab3; - lab5: + goto lab1; + lab3: z->c = z->l - m3; { int ret = r_verb_suffix(z); /* call verb_suffix, line 221 */ - if (ret == 0) goto lab2; + if (ret == 0) goto lab0; if (ret < 0) return ret; } } - lab3: - lab2: + lab1: + lab0: z->c = z->l - m2; } { int m4 = z->l - z->c; (void)m4; /* do, line 223 */ { int ret = r_residual_suffix(z); /* call residual_suffix, line 223 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = z->l - m4; } z->c = z->lb; { int c5 = z->c; /* do, line 225 */ { int ret = r_postlude(z); /* call postlude, line 225 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = c5; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_swedish.c b/src/backend/snowball/libstemmer/stem_UTF_8_swedish.c index c47777d7c5f97..b53fcccedea4c 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_swedish.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_swedish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -259,36 +258,28 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ extern int swedish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 66 */ { int ret = r_mark_regions(z); /* call mark_regions, line 66 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } z->lb = z->c; z->c = z->l; /* backwards, line 67 */ { int m2 = z->l - z->c; (void)m2; /* do, line 68 */ { int ret = r_main_suffix(z); /* call main_suffix, line 68 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 69 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 69 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } { int m4 = z->l - z->c; (void)m4; /* do, line 70 */ { int ret = r_other_suffix(z); /* call other_suffix, line 70 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = z->l - m4; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_tamil.c b/src/backend/snowball/libstemmer/stem_UTF_8_tamil.c index 9bb416c9b10da..ac038a8e37ba6 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_tamil.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_tamil.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -734,8 +733,9 @@ static int r_fix_va_start(struct SN_env * z) { /* forwardmode */ static int r_fix_endings(struct SN_env * z) { /* forwardmode */ { int c1 = z->c; /* do, line 111 */ - while(1) { /* repeat, line 111 */ - int c2 = z->c; +/* repeat, line 111 */ + + while(1) { int c2 = z->c; { int ret = r_fix_ending(z); /* call fix_ending, line 111 */ if (ret == 0) goto lab1; if (ret < 0) return ret; @@ -761,10 +761,8 @@ static int r_remove_question_prefixes(struct SN_env * z) { /* forwardmode */ } { int c1 = z->c; /* do, line 116 */ { int ret = r_fix_va_start(z); /* call fix_va_start, line 116 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } return 1; @@ -1018,10 +1016,8 @@ static int r_remove_pronoun_prefixes(struct SN_env * z) { /* forwardmode */ z->B[0] = 1; /* set found_a_match, line 163 */ { int c1 = z->c; /* do, line 164 */ { int ret = r_fix_va_start(z); /* call fix_va_start, line 164 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } return 1; @@ -1102,10 +1098,8 @@ static int r_remove_question_suffixes(struct SN_env * z) { /* forwardmode */ z->c = z->lb; /* do, line 187 */ { int ret = r_fix_endings(z); /* call fix_endings, line 187 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } -lab1: return 1; } @@ -1145,10 +1139,8 @@ static int r_remove_um(struct SN_env * z) { /* forwardmode */ z->c = z->lb; { int c1 = z->c; /* do, line 205 */ { int ret = r_fix_ending(z); /* call fix_ending, line 205 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } return 1; @@ -1254,10 +1246,8 @@ static int r_remove_common_word_endings(struct SN_env * z) { /* forwardmode */ z->c = z->lb; /* do, line 249 */ { int ret = r_fix_endings(z); /* call fix_endings, line 249 */ - if (ret == 0) goto lab17; if (ret < 0) return ret; } -lab17: return 1; } @@ -1482,24 +1472,21 @@ static int r_remove_vetrumai_urupukal(struct SN_env * z) { /* forwardmode */ z->c = z->lb; /* do, line 301 */ { int ret = r_fix_endings(z); /* call fix_endings, line 301 */ - if (ret == 0) goto lab35; if (ret < 0) return ret; } -lab35: return 1; } static int r_remove_tense_suffixes(struct SN_env * z) { /* forwardmode */ z->B[0] = 1; /* set found_a_match, line 305 */ - while(1) { /* repeat, line 306 */ - int c1 = z->c; +/* repeat, line 306 */ + + while(1) { int c1 = z->c; if (!(z->B[0])) goto lab0; /* Boolean test found_a_match, line 306 */ { int c2 = z->c; /* do, line 306 */ { int ret = r_remove_tense_suffix(z); /* call remove_tense_suffix, line 306 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = c2; } continue; @@ -1814,10 +1801,8 @@ static int r_remove_tense_suffix(struct SN_env * z) { /* forwardmode */ z->c = z->lb; /* do, line 389 */ { int ret = r_fix_endings(z); /* call fix_endings, line 389 */ - if (ret == 0) goto lab58; if (ret < 0) return ret; } -lab58: return 1; } @@ -1825,10 +1810,8 @@ extern int tamil_UTF_8_stem(struct SN_env * z) { /* forwardmode */ z->B[1] = 0; /* unset found_vetrumai_urupu, line 393 */ { int c1 = z->c; /* do, line 394 */ { int ret = r_fix_ending(z); /* call fix_ending, line 394 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = c1; } { int ret = r_has_min_length(z); /* call has_min_length, line 395 */ @@ -1836,74 +1819,56 @@ extern int tamil_UTF_8_stem(struct SN_env * z) { /* forwardmode */ } { int c2 = z->c; /* do, line 396 */ { int ret = r_remove_question_prefixes(z); /* call remove_question_prefixes, line 396 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = c2; } { int c3 = z->c; /* do, line 397 */ { int ret = r_remove_pronoun_prefixes(z); /* call remove_pronoun_prefixes, line 397 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = c3; } { int c4 = z->c; /* do, line 398 */ { int ret = r_remove_question_suffixes(z); /* call remove_question_suffixes, line 398 */ - if (ret == 0) goto lab3; if (ret < 0) return ret; } - lab3: z->c = c4; } { int c5 = z->c; /* do, line 399 */ { int ret = r_remove_um(z); /* call remove_um, line 399 */ - if (ret == 0) goto lab4; if (ret < 0) return ret; } - lab4: z->c = c5; } { int c6 = z->c; /* do, line 400 */ { int ret = r_remove_common_word_endings(z); /* call remove_common_word_endings, line 400 */ - if (ret == 0) goto lab5; if (ret < 0) return ret; } - lab5: z->c = c6; } { int c7 = z->c; /* do, line 401 */ { int ret = r_remove_vetrumai_urupukal(z); /* call remove_vetrumai_urupukal, line 401 */ - if (ret == 0) goto lab6; if (ret < 0) return ret; } - lab6: z->c = c7; } { int c8 = z->c; /* do, line 402 */ { int ret = r_remove_plural_suffix(z); /* call remove_plural_suffix, line 402 */ - if (ret == 0) goto lab7; if (ret < 0) return ret; } - lab7: z->c = c8; } { int c9 = z->c; /* do, line 403 */ { int ret = r_remove_command_suffixes(z); /* call remove_command_suffixes, line 403 */ - if (ret == 0) goto lab8; if (ret < 0) return ret; } - lab8: z->c = c9; } { int c10 = z->c; /* do, line 404 */ { int ret = r_remove_tense_suffixes(z); /* call remove_tense_suffixes, line 404 */ - if (ret == 0) goto lab9; if (ret < 0) return ret; } - lab9: z->c = c10; } return 1; diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_turkish.c b/src/backend/snowball/libstemmer/stem_UTF_8_turkish.c index 85eee41ada9ec..5c4b11c0ffb41 100644 --- a/src/backend/snowball/libstemmer/stem_UTF_8_turkish.c +++ b/src/backend/snowball/libstemmer/stem_UTF_8_turkish.c @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #include "header.h" @@ -2017,8 +2016,7 @@ static int r_is_reserved_word(struct SN_env * z) { /* backwardmode */ static int r_more_than_one_syllable_word(struct SN_env * z) { /* forwardmode */ { int c_test1 = z->c; /* test, line 447 */ { int i = 2; - while(1) { /* atleast, line 447 */ - int c2 = z->c; + while(1) { int c2 = z->c; { /* gopast */ /* grouping vowel, line 447 */ int ret = out_grouping_U(z, g_vowel, 97, 305, 1); if (ret < 0) goto lab0; @@ -2051,18 +2049,14 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */ } { int m2 = z->l - z->c; (void)m2; /* do, line 453 */ { int ret = r_append_U_to_stems_ending_with_d_or_g(z); /* call append_U_to_stems_ending_with_d_or_g, line 453 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } { int m3 = z->l - z->c; (void)m3; /* do, line 454 */ { int ret = r_post_process_last_consonants(z); /* call post_process_last_consonants, line 454 */ - if (ret == 0) goto lab2; if (ret < 0) return ret; } - lab2: z->c = z->l - m3; } z->c = z->lb; @@ -2077,19 +2071,15 @@ extern int turkish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ { int m1 = z->l - z->c; (void)m1; /* do, line 463 */ { int ret = r_stem_nominal_verb_suffixes(z); /* call stem_nominal_verb_suffixes, line 463 */ - if (ret == 0) goto lab0; if (ret < 0) return ret; } - lab0: z->c = z->l - m1; } if (!(z->B[0])) return 0; /* Boolean test continue_stemming_noun_suffixes, line 464 */ { int m2 = z->l - z->c; (void)m2; /* do, line 465 */ { int ret = r_stem_noun_suffixes(z); /* call stem_noun_suffixes, line 465 */ - if (ret == 0) goto lab1; if (ret < 0) return ret; } - lab1: z->c = z->l - m2; } z->c = z->lb; diff --git a/src/backend/snowball/libstemmer/utilities.c b/src/backend/snowball/libstemmer/utilities.c index d64d92231795a..681bca09c2f61 100644 --- a/src/backend/snowball/libstemmer/utilities.c +++ b/src/backend/snowball/libstemmer/utilities.c @@ -106,48 +106,48 @@ static int get_b_utf8(const symbol * p, int c, int lb, int * slot) { extern int in_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - int w = get_utf8(z->p, z->c, z->l, & ch); - if (!w) return -1; - if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) - return w; - z->c += w; + int ch; + int w = get_utf8(z->p, z->c, z->l, & ch); + if (!w) return -1; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return w; + z->c += w; } while (repeat); return 0; } extern int in_grouping_b_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - int w = get_b_utf8(z->p, z->c, z->lb, & ch); - if (!w) return -1; - if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) - return w; - z->c -= w; + int ch; + int w = get_b_utf8(z->p, z->c, z->lb, & ch); + if (!w) return -1; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return w; + z->c -= w; } while (repeat); return 0; } extern int out_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - int w = get_utf8(z->p, z->c, z->l, & ch); - if (!w) return -1; - if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) - return w; - z->c += w; + int ch; + int w = get_utf8(z->p, z->c, z->l, & ch); + if (!w) return -1; + if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) + return w; + z->c += w; } while (repeat); return 0; } extern int out_grouping_b_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - int w = get_b_utf8(z->p, z->c, z->lb, & ch); - if (!w) return -1; - if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) - return w; - z->c -= w; + int ch; + int w = get_b_utf8(z->p, z->c, z->lb, & ch); + if (!w) return -1; + if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) + return w; + z->c -= w; } while (repeat); return 0; } @@ -156,48 +156,48 @@ extern int out_grouping_b_U(struct SN_env * z, const unsigned char * s, int min, extern int in_grouping(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - if (z->c >= z->l) return -1; - ch = z->p[z->c]; - if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) - return 1; - z->c++; + int ch; + if (z->c >= z->l) return -1; + ch = z->p[z->c]; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return 1; + z->c++; } while (repeat); return 0; } extern int in_grouping_b(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - if (z->c <= z->lb) return -1; - ch = z->p[z->c - 1]; - if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) - return 1; - z->c--; + int ch; + if (z->c <= z->lb) return -1; + ch = z->p[z->c - 1]; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return 1; + z->c--; } while (repeat); return 0; } extern int out_grouping(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - if (z->c >= z->l) return -1; - ch = z->p[z->c]; - if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) - return 1; - z->c++; + int ch; + if (z->c >= z->l) return -1; + ch = z->p[z->c]; + if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) + return 1; + z->c++; } while (repeat); return 0; } extern int out_grouping_b(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { do { - int ch; - if (z->c <= z->lb) return -1; - ch = z->p[z->c - 1]; - if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) - return 1; - z->c--; + int ch; + if (z->c <= z->lb) return -1; + ch = z->p[z->c - 1]; + if (!(ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)) + return 1; + z->c--; } while (repeat); return 0; } @@ -235,7 +235,7 @@ extern int find_among(struct SN_env * z, const struct among * v, int v_size) { int first_key_inspected = 0; - while(1) { + while (1) { int k = i + ((j - i) >> 1); int diff = 0; int common = common_i < common_j ? common_i : common_j; /* smaller */ @@ -267,7 +267,7 @@ extern int find_among(struct SN_env * z, const struct among * v, int v_size) { first_key_inspected = 1; } } - while(1) { + while (1) { w = v + i; if (common_i >= w->s_size) { z->c = c + w->s_size; @@ -300,7 +300,7 @@ extern int find_among_b(struct SN_env * z, const struct among * v, int v_size) { int first_key_inspected = 0; - while(1) { + while (1) { int k = i + ((j - i) >> 1); int diff = 0; int common = common_i < common_j ? common_i : common_j; @@ -322,7 +322,7 @@ extern int find_among_b(struct SN_env * z, const struct among * v, int v_size) { first_key_inspected = 1; } } - while(1) { + while (1) { w = v + i; if (common_i >= w->s_size) { z->c = c - w->s_size; diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index ba93fb199d4e4..d24919f76b67c 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -4037,13 +4037,16 @@ CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot) /* * CheckForSerializableConflictOut - * A table AM is reading a tuple that has been modified. After determining - * that it is visible to us, it should call this function with the top - * level xid of the writing transaction. + * A table AM is reading a tuple that has been modified. If it determines + * that the tuple version it is reading is not visible to us, it should + * pass in the top level xid of the transaction that created it. + * Otherwise, if it determines that it is visible to us but it has been + * deleted or there is a newer version available due to an update, it + * should pass in the top level xid of the modifying transaction. * - * This function will check for overlap with our own transaction. If the - * transactions overlap (i.e., they cannot see each other's writes), then we - * have a conflict out. + * This function will check for overlap with our own transaction. If the given + * xid is also serializable and the transactions overlap (i.e., they cannot see + * each other's writes), then we have a conflict out. */ void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot) diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c index 5781fb2e55ca5..96ea74f118dff 100644 --- a/src/backend/tcop/pquery.c +++ b/src/backend/tcop/pquery.c @@ -996,7 +996,9 @@ FillPortalStore(Portal portal, bool isTopLevel) SetTuplestoreDestReceiverParams(treceiver, portal->holdStore, portal->holdContext, - false); + false, + NULL, + NULL); switch (portal->strategy) { diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index 840664429eb93..2320c06a9bc73 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -874,25 +874,18 @@ pg_relation_filenode(PG_FUNCTION_ARGS) PG_RETURN_NULL(); relform = (Form_pg_class) GETSTRUCT(tuple); - switch (relform->relkind) + if (RELKIND_HAS_STORAGE(relform->relkind)) { - case RELKIND_RELATION: - case RELKIND_MATVIEW: - case RELKIND_INDEX: - case RELKIND_SEQUENCE: - case RELKIND_TOASTVALUE: - /* okay, these have storage */ - if (relform->relfilenode) - result = relform->relfilenode; - else /* Consult the relation mapper */ - result = RelationMapOidToFilenode(relid, - relform->relisshared); - break; - - default: - /* no storage, return NULL */ - result = InvalidOid; - break; + if (relform->relfilenode) + result = relform->relfilenode; + else /* Consult the relation mapper */ + result = RelationMapOidToFilenode(relid, + relform->relisshared); + } + else + { + /* no storage, return NULL */ + result = InvalidOid; } ReleaseSysCache(tuple); @@ -951,38 +944,30 @@ pg_relation_filepath(PG_FUNCTION_ARGS) PG_RETURN_NULL(); relform = (Form_pg_class) GETSTRUCT(tuple); - switch (relform->relkind) + if (RELKIND_HAS_STORAGE(relform->relkind)) + { + /* This logic should match RelationInitPhysicalAddr */ + if (relform->reltablespace) + rnode.spcNode = relform->reltablespace; + else + rnode.spcNode = MyDatabaseTableSpace; + if (rnode.spcNode == GLOBALTABLESPACE_OID) + rnode.dbNode = InvalidOid; + else + rnode.dbNode = MyDatabaseId; + if (relform->relfilenode) + rnode.relNode = relform->relfilenode; + else /* Consult the relation mapper */ + rnode.relNode = RelationMapOidToFilenode(relid, + relform->relisshared); + } + else { - case RELKIND_RELATION: - case RELKIND_MATVIEW: - case RELKIND_INDEX: - case RELKIND_SEQUENCE: - case RELKIND_TOASTVALUE: - /* okay, these have storage */ - - /* This logic should match RelationInitPhysicalAddr */ - if (relform->reltablespace) - rnode.spcNode = relform->reltablespace; - else - rnode.spcNode = MyDatabaseTableSpace; - if (rnode.spcNode == GLOBALTABLESPACE_OID) - rnode.dbNode = InvalidOid; - else - rnode.dbNode = MyDatabaseId; - if (relform->relfilenode) - rnode.relNode = relform->relfilenode; - else /* Consult the relation mapper */ - rnode.relNode = RelationMapOidToFilenode(relid, - relform->relisshared); - break; - - default: /* no storage, return NULL */ rnode.relNode = InvalidOid; /* some compilers generate warnings without these next two lines */ rnode.dbNode = InvalidOid; rnode.spcNode = InvalidOid; - break; } if (!OidIsValid(rnode.relNode)) diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c index 2101d586744d5..6a717f19bba0b 100644 --- a/src/backend/utils/adt/float.c +++ b/src/backend/utils/adt/float.c @@ -2925,6 +2925,17 @@ float8_accum(PG_FUNCTION_ARGS) Sxx = get_float8_nan(); } } + else + { + /* + * At the first input, we normally can leave Sxx as 0. However, if + * the first input is Inf or NaN, we'd better force Sxx to NaN; + * otherwise we will falsely report variance zero when there are no + * more inputs. + */ + if (isnan(newval) || isinf(newval)) + Sxx = get_float8_nan(); + } /* * If we're invoked as an aggregate, we can cheat and modify our first @@ -2999,6 +3010,17 @@ float4_accum(PG_FUNCTION_ARGS) Sxx = get_float8_nan(); } } + else + { + /* + * At the first input, we normally can leave Sxx as 0. However, if + * the first input is Inf or NaN, we'd better force Sxx to NaN; + * otherwise we will falsely report variance zero when there are no + * more inputs. + */ + if (isnan(newval) || isinf(newval)) + Sxx = get_float8_nan(); + } /* * If we're invoked as an aggregate, we can cheat and modify our first @@ -3225,6 +3247,19 @@ float8_regr_accum(PG_FUNCTION_ARGS) Sxy = get_float8_nan(); } } + else + { + /* + * At the first input, we normally can leave Sxx et al as 0. However, + * if the first input is Inf or NaN, we'd better force the dependent + * sums to NaN; otherwise we will falsely report variance zero when + * there are no more inputs. + */ + if (isnan(newvalX) || isinf(newvalX)) + Sxx = Sxy = get_float8_nan(); + if (isnan(newvalY) || isinf(newvalY)) + Syy = Sxy = get_float8_nan(); + } /* * If we're invoked as an aggregate, we can cheat and modify our first diff --git a/src/backend/utils/adt/int.c b/src/backend/utils/adt/int.c index 63c59c56b3f9e..418c13e1b4cdc 100644 --- a/src/backend/utils/adt/int.c +++ b/src/backend/utils/adt/int.c @@ -191,9 +191,7 @@ int2vectorout(PG_FUNCTION_ARGS) { if (num != 0) *rp++ = ' '; - pg_itoa(int2Array->values[num], rp); - while (*++rp != '\0') - ; + rp += pg_itoa(int2Array->values[num], rp); } *rp = '\0'; PG_RETURN_CSTRING(result); diff --git a/src/backend/utils/adt/int8.c b/src/backend/utils/adt/int8.c index abba8f1df04f5..005f68d85391f 100644 --- a/src/backend/utils/adt/int8.c +++ b/src/backend/utils/adt/int8.c @@ -149,9 +149,16 @@ int8out(PG_FUNCTION_ARGS) int64 val = PG_GETARG_INT64(0); char buf[MAXINT8LEN + 1]; char *result; + int len; - pg_lltoa(val, buf); - result = pstrdup(buf); + len = pg_lltoa(val, buf) + 1; + + /* + * Since the length is already known, we do a manual palloc() and memcpy() + * to avoid the strlen() call that would otherwise be done in pstrdup(). + */ + result = palloc(len); + memcpy(result, buf, len); PG_RETURN_CSTRING(result); } diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index f3a725271e6cf..eea42398541b0 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -3967,11 +3967,11 @@ numeric_combine(PG_FUNCTION_ARGS) PG_RETURN_POINTER(state1); } + state1->N += state2->N; + state1->NaNcount += state2->NaNcount; + if (state2->N > 0) { - state1->N += state2->N; - state1->NaNcount += state2->NaNcount; - /* * These are currently only needed for moving aggregates, but let's do * the right thing anyway... @@ -4054,11 +4054,11 @@ numeric_avg_combine(PG_FUNCTION_ARGS) PG_RETURN_POINTER(state1); } + state1->N += state2->N; + state1->NaNcount += state2->NaNcount; + if (state2->N > 0) { - state1->N += state2->N; - state1->NaNcount += state2->NaNcount; - /* * These are currently only needed for moving aggregates, but let's do * the right thing anyway... @@ -5172,11 +5172,21 @@ numeric_stddev_internal(NumericAggState *state, vsumX, vsumX2, vNminus1; - const NumericVar *comp; + int64 totCount; int rscale; - /* Deal with empty input and NaN-input cases */ - if (state == NULL || (state->N + state->NaNcount) == 0) + /* + * Sample stddev and variance are undefined when N <= 1; population stddev + * is undefined when N == 0. Return NULL in either case (note that NaNs + * count as normal inputs for this purpose). + */ + if (state == NULL || (totCount = state->N + state->NaNcount) == 0) + { + *is_null = true; + return NULL; + } + + if (sample && totCount <= 1) { *is_null = true; return NULL; @@ -5184,9 +5194,13 @@ numeric_stddev_internal(NumericAggState *state, *is_null = false; + /* + * Deal with NaN inputs. + */ if (state->NaNcount > 0) return make_result(&const_nan); + /* OK, normal calculation applies */ init_var(&vN); init_var(&vsumX); init_var(&vsumX2); @@ -5195,21 +5209,6 @@ numeric_stddev_internal(NumericAggState *state, accum_sum_final(&(state->sumX), &vsumX); accum_sum_final(&(state->sumX2), &vsumX2); - /* - * Sample stddev and variance are undefined when N <= 1; population stddev - * is undefined when N == 0. Return NULL in either case. - */ - if (sample) - comp = &const_one; - else - comp = &const_zero; - - if (cmp_var(&vN, comp) <= 0) - { - *is_null = true; - return NULL; - } - init_var(&vNminus1); sub_var(&vN, &const_one, &vNminus1); diff --git a/src/backend/utils/adt/numutils.c b/src/backend/utils/adt/numutils.c index f4f76845a7f6d..412ae361d2c0f 100644 --- a/src/backend/utils/adt/numutils.c +++ b/src/backend/utils/adt/numutils.c @@ -327,16 +327,17 @@ pg_strtoint32(const char *s) /* * pg_itoa: converts a signed 16-bit integer to its string representation + * and returns strlen(a). * * Caller must ensure that 'a' points to enough memory to hold the result * (at least 7 bytes, counting a leading sign and trailing NUL). * * It doesn't seem worth implementing this separately. */ -void +int pg_itoa(int16 i, char *a) { - pg_ltoa((int32) i, a); + return pg_ltoa((int32) i, a); } /* @@ -404,26 +405,27 @@ pg_ultoa_n(uint32 value, char *a) } /* - * NUL-terminate the output of pg_ultoa_n. + * pg_ltoa: converts a signed 32-bit integer to its string representation and + * returns strlen(a). * * It is the caller's responsibility to ensure that a is at least 12 bytes long, * which is enough room to hold a minus sign, a maximally long int32, and the * above terminating NUL. */ -void +int pg_ltoa(int32 value, char *a) { - uint32 uvalue = (uint32) value; - int len; + int len = 0; if (value < 0) { uvalue = (uint32) 0 - uvalue; - *a++ = '-'; + a[len++] = '-'; } - len = pg_ultoa_n(uvalue, a); + len += pg_ultoa_n(uvalue, a + len); a[len] = '\0'; + return len; } /* @@ -437,7 +439,6 @@ pg_ulltoa_n(uint64 value, char *a) i = 0; uint32 value2; - /* Degenerate case */ if (value == 0) { @@ -512,24 +513,27 @@ pg_ulltoa_n(uint64 value, char *a) } /* - * pg_lltoa: convert a signed 64-bit integer to its string representation + * pg_lltoa: converts a signed 64-bit integer to its string representation and + * returns strlen(a). * * Caller must ensure that 'a' points to enough memory to hold the result * (at least MAXINT8LEN + 1 bytes, counting a leading sign and trailing NUL). */ -void +int pg_lltoa(int64 value, char *a) { - int len; uint64 uvalue = value; + int len = 0; if (value < 0) { - *a++ = '-'; uvalue = (uint64) 0 - uvalue; + a[len++] = '-'; } - len = pg_ulltoa_n(uvalue, a); - a[len] = 0; + + len += pg_ulltoa_n(uvalue, a + len); + a[len] = '\0'; + return len; } @@ -545,11 +549,11 @@ pg_lltoa(int64 value, char *a) * The intended use-case for this function is to build strings that contain * multiple individual numbers, for example: * - * str = pg_ltostr_zeropad(str, hours, 2); + * str = pg_ultostr_zeropad(str, hours, 2); * *str++ = ':'; - * str = pg_ltostr_zeropad(str, mins, 2); + * str = pg_ultostr_zeropad(str, mins, 2); * *str++ = ':'; - * str = pg_ltostr_zeropad(str, secs, 2); + * str = pg_ultostr_zeropad(str, secs, 2); * *str = '\0'; * * Note: Caller must ensure that 'str' points to enough memory to hold the @@ -578,7 +582,7 @@ pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth) } /* - * pg_ltostr + * pg_ultostr * Converts 'value' into a decimal string representation stored at 'str'. * * Returns the ending address of the string result (the last character written @@ -587,9 +591,9 @@ pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth) * The intended use-case for this function is to build strings that contain * multiple individual numbers, for example: * - * str = pg_ltostr(str, a); + * str = pg_ultostr(str, a); * *str++ = ' '; - * str = pg_ltostr(str, b); + * str = pg_ultostr(str, b); * *str = '\0'; * * Note: Caller must ensure that 'str' points to enough memory to hold the diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 2aff739466ff1..b740eef7c1024 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -494,6 +494,8 @@ pg_stat_get_progress_info(PG_FUNCTION_ARGS) cmdtype = PROGRESS_COMMAND_CREATE_INDEX; else if (pg_strcasecmp(cmd, "BASEBACKUP") == 0) cmdtype = PROGRESS_COMMAND_BASEBACKUP; + else if (pg_strcasecmp(cmd, "COPY") == 0) + cmdtype = PROGRESS_COMMAND_COPY; else ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 2f3e0a70e0072..75fc6f11d6a2a 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -463,18 +463,9 @@ static const struct config_enum_entry plan_cache_mode_options[] = { {NULL, 0, false} }; -/* - * password_encryption used to be a boolean, so accept all the likely - * variants of "on", too. "off" used to store passwords in plaintext, - * but we don't support that anymore. - */ static const struct config_enum_entry password_encryption_options[] = { {"md5", PASSWORD_TYPE_MD5, false}, {"scram-sha-256", PASSWORD_TYPE_SCRAM_SHA_256, false}, - {"on", PASSWORD_TYPE_MD5, true}, - {"true", PASSWORD_TYPE_MD5, true}, - {"yes", PASSWORD_TYPE_MD5, true}, - {"1", PASSWORD_TYPE_MD5, true}, {NULL, 0, false} }; @@ -1011,22 +1002,12 @@ static struct config_bool ConfigureNamesBool[] = NULL, NULL, NULL }, { - {"enable_hashagg_disk", PGC_USERSET, QUERY_TUNING_METHOD, - gettext_noop("Enables the planner's use of hashed aggregation plans that are expected to exceed work_mem."), - NULL, - GUC_EXPLAIN - }, - &enable_hashagg_disk, - true, - NULL, NULL, NULL - }, - { - {"enable_groupingsets_hash_disk", PGC_USERSET, QUERY_TUNING_METHOD, - gettext_noop("Enables the planner's use of hashed aggregation plans for groupingsets when the total size of the hash tables is expected to exceed work_mem."), + {"hashagg_avoid_disk_plan", PGC_USERSET, QUERY_TUNING_METHOD, + gettext_noop("Causes the planner to avoid hashed aggregation plans that are expected to use the disk."), NULL, GUC_EXPLAIN }, - &enable_groupingsets_hash_disk, + &hashagg_avoid_disk_plan, false, NULL, NULL, NULL }, @@ -4729,13 +4710,11 @@ static struct config_enum ConfigureNamesEnum[] = { {"password_encryption", PGC_USERSET, CONN_AUTH_AUTH, - gettext_noop("Encrypt passwords."), - gettext_noop("When a password is specified in CREATE USER or " - "ALTER USER without writing either ENCRYPTED or UNENCRYPTED, " - "this parameter determines whether the password is to be encrypted.") + gettext_noop("Chooses the algorithm for encrypting passwords."), + NULL }, &Password_encryption, - PASSWORD_TYPE_MD5, password_encryption_options, + PASSWORD_TYPE_SCRAM_SHA_256, password_encryption_options, NULL, NULL, NULL }, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index ac02bd0c00acb..3a25287a391d7 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -88,7 +88,7 @@ # - Authentication - #authentication_timeout = 1min # 1s-600s -#password_encryption = md5 # md5 or scram-sha-256 +#password_encryption = scram-sha-256 # scram-sha-256 or md5 #db_user_namespace = off # GSSAPI using Kerberos diff --git a/src/backend/utils/mmgr/README b/src/backend/utils/mmgr/README index e892779cddf25..221b4bd34337f 100644 --- a/src/backend/utils/mmgr/README +++ b/src/backend/utils/mmgr/README @@ -462,7 +462,7 @@ Memory Accounting ----------------- One of the basic memory context operations is determining the amount of -memory used in the context (and it's children). We have multiple places +memory used in the context (and its children). We have multiple places that implement their own ad hoc memory accounting, and this is meant to provide a unified approach. Ad hoc accounting solutions work for places with tight control over the allocations or when it's easy to determine diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 4ff0c6c700525..786672b1b6553 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -688,6 +688,10 @@ static const struct tsearch_config_match tsearch_config_languages[] = { {"arabic", "ar"}, {"arabic", "Arabic"}, + {"basque", "eu"}, + {"basque", "Basque"}, + {"catalan", "ca"}, + {"catalan", "Catalan"}, {"danish", "da"}, {"danish", "Danish"}, {"dutch", "nl"}, @@ -704,6 +708,8 @@ static const struct tsearch_config_match tsearch_config_languages[] = {"german", "German"}, {"greek", "el"}, {"greek", "Greek"}, + {"hindi", "hi"}, + {"hindi", "Hindi"}, {"hungarian", "hu"}, {"hungarian", "Hungarian"}, {"indonesian", "id"}, @@ -1198,12 +1204,18 @@ setup_config(void) "#update_process_title = off"); #endif - if (strcmp(authmethodlocal, "scram-sha-256") == 0 || - strcmp(authmethodhost, "scram-sha-256") == 0) + /* + * Change password_encryption setting to md5 if md5 was chosen as an + * authentication method, unless scram-sha-256 was also chosen. + */ + if ((strcmp(authmethodlocal, "md5") == 0 && + strcmp(authmethodhost, "scram-sha-256") != 0) || + (strcmp(authmethodhost, "md5") == 0 && + strcmp(authmethodlocal, "scram-sha-256") != 0)) { conflines = replace_token(conflines, - "#password_encryption = md5", - "password_encryption = scram-sha-256"); + "#password_encryption = scram-sha-256", + "password_encryption = md5"); } /* @@ -2367,12 +2379,7 @@ check_need_password(const char *authmethodlocal, const char *authmethodhost) strcmp(authmethodhost, "scram-sha-256") == 0) && !(pwprompt || pwfilename)) { - pg_log_error("must specify a password for the superuser to enable %s authentication", - (strcmp(authmethodlocal, "md5") == 0 || - strcmp(authmethodlocal, "password") == 0 || - strcmp(authmethodlocal, "scram-sha-256") == 0) - ? authmethodlocal - : authmethodhost); + pg_log_error("must specify a password for the superuser to enable password authentication"); exit(1); } } diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 8f0b32ca175ad..4c91b9e1bcc1d 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -209,14 +209,14 @@ dumpOptionsFromRestoreOptions(RestoreOptions *ropt) /* * Wrapper functions. * - * The objective it to make writing new formats and dumpers as simple + * The objective is to make writing new formats and dumpers as simple * as possible, if necessary at the expense of extra function calls etc. * */ /* * The dump worker setup needs lots of knowledge of the internals of pg_dump, - * so It's defined in pg_dump.c and passed into OpenArchive. The restore worker + * so it's defined in pg_dump.c and passed into OpenArchive. The restore worker * setup doesn't need to know anything much, so it's defined here. */ static void @@ -1450,7 +1450,7 @@ SortTocFromFile(Archive *AHX) } /********************** - * 'Convenience functions that look like standard IO functions + * Convenience functions that look like standard IO functions * for writing data when in dump mode. **********************/ diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c index 369dcea429128..6ab122242ce3e 100644 --- a/src/bin/pg_dump/pg_backup_custom.c +++ b/src/bin/pg_dump/pg_backup_custom.c @@ -262,7 +262,6 @@ _ReadExtraToc(ArchiveHandle *AH, TocEntry *te) * that includes useful information about the TOC entry. * * Optional. - * */ static void _PrintExtraToc(ArchiveHandle *AH, TocEntry *te) @@ -324,7 +323,6 @@ _WriteData(ArchiveHandle *AH, const void *data, size_t dLen) * finished. * * Optional. - * */ static void _EndData(ArchiveHandle *AH, TocEntry *te) @@ -529,8 +527,8 @@ _LoadBlobs(ArchiveHandle *AH, bool drop) /* * Skip the BLOBs from the current file position. * BLOBS are written sequentially as data blocks (see below). - * Each BLOB is preceded by it's original OID. - * A zero OID indicated the end of the BLOBS + * Each BLOB is preceded by its original OID. + * A zero OID indicates the end of the BLOBS. */ static void _skipBlobs(ArchiveHandle *AH) @@ -548,7 +546,7 @@ _skipBlobs(ArchiveHandle *AH) /* * Skip data from current file position. * Data blocks are formatted as an integer length, followed by data. - * A zero length denoted the end of the block. + * A zero length indicates the end of the block. */ static void _skipData(ArchiveHandle *AH) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index dfe43968b8032..89d598f8568e2 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -13959,7 +13959,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) int i_aggmtransspace; int i_agginitval; int i_aggminitval; - int i_convertok; int i_proparallel; const char *aggtransfn; const char *aggfinalfn; @@ -13982,7 +13981,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) const char *aggmtransspace; const char *agginitval; const char *aggminitval; - bool convertok; const char *proparallel; char defaultfinalmodify; @@ -14008,7 +14006,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) "aggkind, " "aggtransspace, agginitval, " "aggmtransspace, aggminitval, " - "true AS convertok, " "pg_catalog.pg_get_function_arguments(p.oid) AS funcargs, " "pg_catalog.pg_get_function_identity_arguments(p.oid) AS funciargs, " "p.proparallel " @@ -14029,7 +14026,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) "aggkind, " "aggtransspace, agginitval, " "aggmtransspace, aggminitval, " - "true AS convertok, " "pg_catalog.pg_get_function_arguments(p.oid) AS funcargs, " "pg_catalog.pg_get_function_identity_arguments(p.oid) AS funciargs, " "p.proparallel " @@ -14051,7 +14047,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) "aggkind, " "aggtransspace, agginitval, " "aggmtransspace, aggminitval, " - "true AS convertok, " "pg_catalog.pg_get_function_arguments(p.oid) AS funcargs, " "pg_catalog.pg_get_function_identity_arguments(p.oid) AS funciargs " "FROM pg_catalog.pg_aggregate a, pg_catalog.pg_proc p " @@ -14073,7 +14068,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) "'n' AS aggkind, " "0 AS aggtransspace, agginitval, " "0 AS aggmtransspace, NULL AS aggminitval, " - "true AS convertok, " "pg_catalog.pg_get_function_arguments(p.oid) AS funcargs, " "pg_catalog.pg_get_function_identity_arguments(p.oid) AS funciargs " "FROM pg_catalog.pg_aggregate a, pg_catalog.pg_proc p " @@ -14095,7 +14089,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) "'n' AS aggkind, " "0 AS aggtransspace, agginitval, " "0 AS aggmtransspace, NULL AS aggminitval, " - "true AS convertok " "FROM pg_catalog.pg_aggregate a, pg_catalog.pg_proc p " "WHERE a.aggfnoid = p.oid " "AND p.oid = '%u'::pg_catalog.oid", @@ -14115,7 +14108,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) "'n' AS aggkind, " "0 AS aggtransspace, agginitval, " "0 AS aggmtransspace, NULL AS aggminitval, " - "true AS convertok " "FROM pg_catalog.pg_aggregate a, pg_catalog.pg_proc p " "WHERE a.aggfnoid = p.oid " "AND p.oid = '%u'::pg_catalog.oid", @@ -14144,7 +14136,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) i_aggmtransspace = PQfnumber(res, "aggmtransspace"); i_agginitval = PQfnumber(res, "agginitval"); i_aggminitval = PQfnumber(res, "aggminitval"); - i_convertok = PQfnumber(res, "convertok"); i_proparallel = PQfnumber(res, "proparallel"); aggtransfn = PQgetvalue(res, 0, i_aggtransfn); @@ -14167,7 +14158,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) aggmtransspace = PQgetvalue(res, 0, i_aggmtransspace); agginitval = PQgetvalue(res, 0, i_agginitval); aggminitval = PQgetvalue(res, 0, i_aggminitval); - convertok = (PQgetvalue(res, 0, i_convertok)[0] == 't'); if (fout->remoteVersion >= 80400) { @@ -14191,19 +14181,6 @@ dumpAgg(Archive *fout, AggInfo *agginfo) else proparallel = NULL; - if (!convertok) - { - pg_log_warning("aggregate function %s could not be dumped correctly for this database version; ignored", - aggsig); - - if (aggfullsig) - free(aggfullsig); - - free(aggsig); - - return; - } - /* identify default modify flag for aggkind (must match DefineAggregate) */ defaultfinalmodify = (aggkind == AGGKIND_NORMAL) ? AGGMODIFY_READ_ONLY : AGGMODIFY_READ_WRITE; /* replace omitted flags for old versions */ diff --git a/src/bin/pg_dump/t/001_basic.pl b/src/bin/pg_dump/t/001_basic.pl index 550eab1ee3064..083fb3ad08329 100644 --- a/src/bin/pg_dump/t/001_basic.pl +++ b/src/bin/pg_dump/t/001_basic.pl @@ -4,7 +4,7 @@ use Config; use PostgresNode; use TestLib; -use Test::More tests => 78; +use Test::More tests => 82; my $tempdir = TestLib::tempdir; my $tempdir_short = TestLib::tempdir_short; @@ -123,6 +123,16 @@ qr/\Qpg_dump: error: compression level must be in range 0..9\E/, 'pg_dump: compression level must be in range 0..9'); +command_fails_like( + [ 'pg_dump', '--extra-float-digits', '-16' ], + qr/\Qpg_dump: error: extra_float_digits must be in range -15..3\E/, + 'pg_dump: extra_float_digits must be in range -15..3'); + +command_fails_like( + [ 'pg_dump', '--rows-per-insert', '0' ], + qr/\Qpg_dump: error: rows-per-insert must be in range 1..2147483647\E/, + 'pg_dump: rows-per-insert must be in range 1..2147483647'); + command_fails_like( [ 'pg_restore', '--if-exists', '-f -' ], qr/\Qpg_restore: error: option --if-exists requires option -c\/--clean\E/, diff --git a/src/bin/pg_rewind/parsexlog.c b/src/bin/pg_rewind/parsexlog.c index d637f5eb7715a..bc6f976994139 100644 --- a/src/bin/pg_rewind/parsexlog.c +++ b/src/bin/pg_rewind/parsexlog.c @@ -19,7 +19,7 @@ #include "catalog/pg_control.h" #include "catalog/storage_xlog.h" #include "commands/dbcommands_xlog.h" -#include "common/fe_archive.h" +#include "fe_utils/archive.h" #include "filemap.h" #include "pg_rewind.h" diff --git a/src/bin/pg_upgrade/test.sh b/src/bin/pg_upgrade/test.sh index 10a28d8133c79..7ff06de6d182b 100644 --- a/src/bin/pg_upgrade/test.sh +++ b/src/bin/pg_upgrade/test.sh @@ -106,8 +106,6 @@ outputdir="$temp_root/regress" EXTRA_REGRESS_OPTS="$EXTRA_REGRESS_OPTS --outputdir=$outputdir" export EXTRA_REGRESS_OPTS mkdir "$outputdir" -mkdir "$outputdir"/sql -mkdir "$outputdir"/expected mkdir "$outputdir"/testtablespace logdir=`pwd`/log diff --git a/src/common/Makefile b/src/common/Makefile index d0be882cca4be..16619e4ba8836 100644 --- a/src/common/Makefile +++ b/src/common/Makefile @@ -89,7 +89,6 @@ endif # (Mkvcbuild.pm has a copy of this list, too) OBJS_FRONTEND = \ $(OBJS_COMMON) \ - fe_archive.o \ fe_memutils.o \ file_utils.o \ logging.o \ diff --git a/src/fe_utils/Makefile b/src/fe_utils/Makefile index 9eb4417690b72..dd2066360474b 100644 --- a/src/fe_utils/Makefile +++ b/src/fe_utils/Makefile @@ -20,6 +20,7 @@ include $(top_builddir)/src/Makefile.global override CPPFLAGS := -DFRONTEND -I$(libpq_srcdir) $(CPPFLAGS) OBJS = \ + archive.o \ cancel.o \ conditional.o \ mbprint.o \ diff --git a/src/common/fe_archive.c b/src/fe_utils/archive.c similarity index 94% rename from src/common/fe_archive.c rename to src/fe_utils/archive.c index b0d68870db8ad..c4cb213198511 100644 --- a/src/common/fe_archive.c +++ b/src/fe_utils/archive.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * fe_archive.c + * archive.c * Routines to access WAL archives from frontend * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group @@ -8,15 +8,11 @@ * * * IDENTIFICATION - * src/common/fe_archive.c + * src/fe_utils/archive.c * *------------------------------------------------------------------------- */ -#ifndef FRONTEND -#error "This file is not expected to be compiled for backend code" -#endif - #include "postgres_fe.h" #include @@ -24,8 +20,8 @@ #include "access/xlog_internal.h" #include "common/archive.h" -#include "common/fe_archive.h" #include "common/logging.h" +#include "fe_utils/archive.h" /* diff --git a/src/include/access/xlogreader.h b/src/include/access/xlogreader.h index d930fe957dfdc..b0f2a6ed43a99 100644 --- a/src/include/access/xlogreader.h +++ b/src/include/access/xlogreader.h @@ -262,10 +262,6 @@ extern XLogReaderRoutine *LocalXLogReaderRoutine(void); /* Free an XLogReader */ extern void XLogReaderFree(XLogReaderState *state); -/* Initialize supporting structures */ -extern void WALOpenSegmentInit(WALOpenSegment *seg, WALSegmentContext *segcxt, - int segsize, const char *waldir); - /* Position the XLogReader to given record */ extern void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr); #ifdef FRONTEND diff --git a/src/include/catalog/objectaddress.h b/src/include/catalog/objectaddress.h index 7f15efd58a819..144715d4f4d1f 100644 --- a/src/include/catalog/objectaddress.h +++ b/src/include/catalog/objectaddress.h @@ -55,6 +55,7 @@ extern void check_object_ownership(Oid roleid, extern Oid get_object_namespace(const ObjectAddress *address); extern bool is_objectclass_supported(Oid class_id); +extern const char *get_object_class_descr(Oid class_id); extern Oid get_object_oid_index(Oid class_id); extern int get_object_catcache_oid(Oid class_id); extern int get_object_catcache_name(Oid class_id); diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h index 6955bb1273922..27618b324d3f0 100644 --- a/src/include/catalog/pg_collation.h +++ b/src/include/catalog/pg_collation.h @@ -68,6 +68,5 @@ extern Oid CollationCreate(const char *collname, Oid collnamespace, const char *collversion, bool if_not_exists, bool quiet); -extern void RemoveCollationById(Oid collationOid); #endif /* PG_COLLATION_H */ diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h index 0e7f13e1b6525..cd80a042ff111 100644 --- a/src/include/catalog/pg_conversion.h +++ b/src/include/catalog/pg_conversion.h @@ -65,7 +65,6 @@ extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace, Oid conowner, int32 conforencoding, int32 contoencoding, Oid conproc, bool def); -extern void RemoveConversionById(Oid conversionOid); extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding, int32 to_encoding); diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h index c77c9a6ed5aea..c26a102b175b0 100644 --- a/src/include/commands/defrem.h +++ b/src/include/commands/defrem.h @@ -56,9 +56,7 @@ extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt extern void RemoveFunctionById(Oid funcOid); extern ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt); extern ObjectAddress CreateCast(CreateCastStmt *stmt); -extern void DropCastById(Oid castOid); extern ObjectAddress CreateTransform(CreateTransformStmt *stmt); -extern void DropTransformById(Oid transformOid); extern void IsThereFunctionInNamespace(const char *proname, int pronargs, oidvector *proargtypes, Oid nspOid); extern void ExecuteDoStmt(DoStmt *stmt, bool atomic); @@ -98,10 +96,6 @@ extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, extern ObjectAddress DefineOpClass(CreateOpClassStmt *stmt); extern ObjectAddress DefineOpFamily(CreateOpFamilyStmt *stmt); extern Oid AlterOpFamily(AlterOpFamilyStmt *stmt); -extern void RemoveOpClassById(Oid opclassOid); -extern void RemoveOpFamilyById(Oid opfamilyOid); -extern void RemoveAmOpEntryById(Oid entryOid); -extern void RemoveAmProcEntryById(Oid entryOid); extern void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod, Oid opcnamespace); extern void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod, @@ -111,14 +105,11 @@ extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok); /* commands/tsearchcmds.c */ extern ObjectAddress DefineTSParser(List *names, List *parameters); -extern void RemoveTSParserById(Oid prsId); extern ObjectAddress DefineTSDictionary(List *names, List *parameters); -extern void RemoveTSDictionaryById(Oid dictId); extern ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt); extern ObjectAddress DefineTSTemplate(List *names, List *parameters); -extern void RemoveTSTemplateById(Oid tmplId); extern ObjectAddress DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied); @@ -135,14 +126,11 @@ extern ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwner extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId); extern ObjectAddress CreateForeignDataWrapper(CreateFdwStmt *stmt); extern ObjectAddress AlterForeignDataWrapper(AlterFdwStmt *stmt); -extern void RemoveForeignDataWrapperById(Oid fdwId); extern ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt); extern ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt); -extern void RemoveForeignServerById(Oid srvId); extern ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt); extern ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt); extern Oid RemoveUserMapping(DropUserMappingStmt *stmt); -extern void RemoveUserMappingById(Oid umId); extern void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid); extern void ImportForeignSchema(ImportForeignSchemaStmt *stmt); extern Datum transformGenericOptions(Oid catalogId, @@ -152,7 +140,6 @@ extern Datum transformGenericOptions(Oid catalogId, /* commands/amcmds.c */ extern ObjectAddress CreateAccessMethod(CreateAmStmt *stmt); -extern void RemoveAccessMethodById(Oid amOid); extern Oid get_index_am_oid(const char *amname, bool missing_ok); extern Oid get_table_am_oid(const char *amname, bool missing_ok); extern Oid get_am_oid(const char *amname, bool missing_ok); diff --git a/src/include/commands/event_trigger.h b/src/include/commands/event_trigger.h index 28b352051b994..407fd6a97868d 100644 --- a/src/include/commands/event_trigger.h +++ b/src/include/commands/event_trigger.h @@ -41,7 +41,6 @@ typedef struct EventTriggerData ((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData)) extern Oid CreateEventTrigger(CreateEventTrigStmt *stmt); -extern void RemoveEventTriggerById(Oid trigOid); extern Oid get_event_trigger_oid(const char *trigname, bool missing_ok); extern Oid AlterEventTrigger(AlterEventTrigStmt *stmt); diff --git a/src/include/commands/proclang.h b/src/include/commands/proclang.h index c70f8ec928e31..d566a121f0ec7 100644 --- a/src/include/commands/proclang.h +++ b/src/include/commands/proclang.h @@ -17,7 +17,6 @@ #include "nodes/parsenodes.h" extern ObjectAddress CreateProceduralLanguage(CreatePLangStmt *stmt); -extern void DropProceduralLanguageById(Oid langOid); extern Oid get_language_oid(const char *langname, bool missing_ok); diff --git a/src/include/commands/progress.h b/src/include/commands/progress.h index 36b073e67757b..3947222e6f616 100644 --- a/src/include/commands/progress.h +++ b/src/include/commands/progress.h @@ -133,4 +133,11 @@ #define PROGRESS_BASEBACKUP_PHASE_WAIT_WAL_ARCHIVE 4 #define PROGRESS_BASEBACKUP_PHASE_TRANSFER_WAL 5 +/* Commands of PROGRESS_COPY */ +#define PROGRESS_COPY_IS_FROM 0 +#define PROGRESS_COPY_IS_FILE 1 +#define PROGRESS_COPY_IS_PROGRAM 2 +#define PROGRESS_COPY_LINES_PROCESSED 3 +#define PROGRESS_COPY_BYTES_PROCESSED 4 + #endif diff --git a/src/include/commands/publicationcmds.h b/src/include/commands/publicationcmds.h index e713df0c31bf2..c6b286245f4ab 100644 --- a/src/include/commands/publicationcmds.h +++ b/src/include/commands/publicationcmds.h @@ -20,7 +20,6 @@ extern ObjectAddress CreatePublication(CreatePublicationStmt *stmt); extern void AlterPublication(AlterPublicationStmt *stmt); -extern void RemovePublicationById(Oid pubid); extern void RemovePublicationRelById(Oid proid); extern ObjectAddress AlterPublicationOwner(const char *name, Oid newOwnerId); diff --git a/src/include/commands/schemacmds.h b/src/include/commands/schemacmds.h index ac88a35399aa7..e0139a8ea627b 100644 --- a/src/include/commands/schemacmds.h +++ b/src/include/commands/schemacmds.h @@ -22,8 +22,6 @@ extern Oid CreateSchemaCommand(CreateSchemaStmt *parsetree, const char *queryString, int stmt_location, int stmt_len); -extern void RemoveSchemaById(Oid schemaOid); - extern ObjectAddress RenameSchema(const char *oldname, const char *newname); extern ObjectAddress AlterSchemaOwner(const char *name, Oid newOwnerId); extern void AlterSchemaOwner_oid(Oid schemaOid, Oid newOwnerId); diff --git a/src/include/executor/spi.h b/src/include/executor/spi.h index 06de20ada5e4d..896ec0a2ad8d2 100644 --- a/src/include/executor/spi.h +++ b/src/include/executor/spi.h @@ -90,6 +90,10 @@ extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls, extern int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, ParamListInfo params, bool read_only, long tcount); +extern int SPI_execute_plan_with_receiver(SPIPlanPtr plan, + ParamListInfo params, + bool read_only, long tcount, + DestReceiver *dest); extern int SPI_exec(const char *src, long tcount); extern int SPI_execp(SPIPlanPtr plan, Datum *Values, const char *Nulls, long tcount); @@ -102,6 +106,10 @@ extern int SPI_execute_with_args(const char *src, int nargs, Oid *argtypes, Datum *Values, const char *Nulls, bool read_only, long tcount); +extern int SPI_execute_with_receiver(const char *src, + ParamListInfo params, + bool read_only, long tcount, + DestReceiver *dest); extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes); extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes, int cursorOptions); @@ -150,6 +158,11 @@ extern Portal SPI_cursor_open_with_args(const char *name, bool read_only, int cursorOptions); extern Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan, ParamListInfo params, bool read_only); +extern Portal SPI_cursor_parse_open_with_paramlist(const char *name, + const char *src, + ParamListInfo params, + bool read_only, + int cursorOptions); extern Portal SPI_cursor_find(const char *name); extern void SPI_cursor_fetch(Portal portal, bool forward, long count); extern void SPI_cursor_move(Portal portal, bool forward, long count); diff --git a/src/include/executor/tstoreReceiver.h b/src/include/executor/tstoreReceiver.h index b2390c4a4d0b5..e9461cf914610 100644 --- a/src/include/executor/tstoreReceiver.h +++ b/src/include/executor/tstoreReceiver.h @@ -24,6 +24,8 @@ extern DestReceiver *CreateTuplestoreDestReceiver(void); extern void SetTuplestoreDestReceiverParams(DestReceiver *self, Tuplestorestate *tStore, MemoryContext tContext, - bool detoast); + bool detoast, + TupleDesc target_tupdesc, + const char *map_failure_msg); #endif /* TSTORE_RECEIVER_H */ diff --git a/src/include/common/fe_archive.h b/src/include/fe_utils/archive.h similarity index 91% rename from src/include/common/fe_archive.h rename to src/include/fe_utils/archive.h index 495b560d245ec..a6beaf04ea76b 100644 --- a/src/include/common/fe_archive.h +++ b/src/include/fe_utils/archive.h @@ -1,12 +1,12 @@ /*------------------------------------------------------------------------- * - * fe_archive.h + * archive.h * Routines to access WAL archives from frontend * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * src/include/common/fe_archive.h + * src/include/fe_utils/archive.h * *------------------------------------------------------------------------- */ diff --git a/src/include/optimizer/cost.h b/src/include/optimizer/cost.h index 9710e5c0a45b7..92e70ec0d9bf2 100644 --- a/src/include/optimizer/cost.h +++ b/src/include/optimizer/cost.h @@ -55,8 +55,7 @@ extern PGDLLIMPORT bool enable_tidscan; extern PGDLLIMPORT bool enable_sort; extern PGDLLIMPORT bool enable_incrementalsort; extern PGDLLIMPORT bool enable_hashagg; -extern PGDLLIMPORT bool enable_hashagg_disk; -extern PGDLLIMPORT bool enable_groupingsets_hash_disk; +extern PGDLLIMPORT bool hashagg_avoid_disk_plan; extern PGDLLIMPORT bool enable_nestloop; extern PGDLLIMPORT bool enable_material; extern PGDLLIMPORT bool enable_mergejoin; diff --git a/src/include/pgstat.h b/src/include/pgstat.h index c55dc1481ca5b..45b8006ff2b8d 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -994,7 +994,8 @@ typedef enum ProgressCommandType PROGRESS_COMMAND_ANALYZE, PROGRESS_COMMAND_CLUSTER, PROGRESS_COMMAND_CREATE_INDEX, - PROGRESS_COMMAND_BASEBACKUP + PROGRESS_COMMAND_BASEBACKUP, + PROGRESS_COMMAND_COPY } ProgressCommandType; #define PGSTAT_NUM_PROGRESS_PARAM 20 diff --git a/src/include/port/atomics/generic.h b/src/include/port/atomics/generic.h index d3ba89a58f8ac..d60a0d9e7fc28 100644 --- a/src/include/port/atomics/generic.h +++ b/src/include/port/atomics/generic.h @@ -160,7 +160,7 @@ pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) static inline void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val_) { - pg_atomic_write_u32_impl(ptr, val_); + ptr->value = val_; } #endif @@ -330,7 +330,7 @@ pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr) static inline void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val_) { - pg_atomic_write_u64_impl(ptr, val_); + ptr->value = val_; } #endif diff --git a/src/include/snowball/libstemmer/header.h b/src/include/snowball/libstemmer/header.h index 6bccf0f2c787f..85a42fdb8f8d5 100644 --- a/src/include/snowball/libstemmer/header.h +++ b/src/include/snowball/libstemmer/header.h @@ -57,4 +57,3 @@ extern symbol * assign_to(struct SN_env * z, symbol * p); extern int len_utf8(const symbol * p); extern void debug(struct SN_env * z, int number, int line_count); - diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_basque.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_basque.h new file mode 100644 index 0000000000000..b40fc493d09dd --- /dev/null +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_basque.h @@ -0,0 +1,15 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * basque_ISO_8859_1_create_env(void); +extern void basque_ISO_8859_1_close_env(struct SN_env * z); + +extern int basque_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_catalan.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_catalan.h new file mode 100644 index 0000000000000..d68f6fa6eef90 --- /dev/null +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_catalan.h @@ -0,0 +1,15 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * catalan_ISO_8859_1_create_env(void); +extern void catalan_ISO_8859_1_close_env(struct SN_env * z); + +extern int catalan_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_danish.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_danish.h index 57f16f8960d5f..76ed47675bd7c 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_danish.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_danish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_dutch.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_dutch.h index 5423842969f38..0376706c371bc 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_dutch.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_dutch.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_english.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_english.h index d5a56a98f0b51..ccd4acb27d360 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_english.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_english.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_finnish.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_finnish.h index ba197d8a705a9..7f7b36ed2af83 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_finnish.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_finnish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_french.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_french.h index 29321023a2caa..36e9074da7617 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_french.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_french.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_german.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_german.h index 0887ac81646ed..c8780e179b461 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_german.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_german.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_indonesian.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_indonesian.h index aac192caceabc..a429ae9aa0580 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_indonesian.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_indonesian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_irish.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_irish.h index 0e146373aee26..aa468f9db4f0d 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_irish.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_irish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_italian.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_italian.h index 9e3fcf7f78975..cffcd53dbb245 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_italian.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_italian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_norwegian.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_norwegian.h index 424c8cd46833d..72fe18fda5d96 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_norwegian.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_norwegian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_porter.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_porter.h index 99bc54ff0d121..d52c3e336b5ef 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_porter.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_porter.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_portuguese.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_portuguese.h index e9abc0de5fbea..dc5731e40c21c 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_portuguese.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_portuguese.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_spanish.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_spanish.h index 1e661aacfe488..953fd19b20d9f 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_spanish.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_spanish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_1_swedish.h b/src/include/snowball/libstemmer/stem_ISO_8859_1_swedish.h index 5e6f6ac8afa2c..f775fe10f75ab 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_1_swedish.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_1_swedish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_2_hungarian.h b/src/include/snowball/libstemmer/stem_ISO_8859_2_hungarian.h index c019a7d456940..4a13910ae8b57 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_2_hungarian.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_2_hungarian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_ISO_8859_2_romanian.h b/src/include/snowball/libstemmer/stem_ISO_8859_2_romanian.h index ef9bd3f3a42e5..d266e2d384885 100644 --- a/src/include/snowball/libstemmer/stem_ISO_8859_2_romanian.h +++ b/src/include/snowball/libstemmer/stem_ISO_8859_2_romanian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_KOI8_R_russian.h b/src/include/snowball/libstemmer/stem_KOI8_R_russian.h index cc58324c66ccb..454c46cf42e11 100644 --- a/src/include/snowball/libstemmer/stem_KOI8_R_russian.h +++ b/src/include/snowball/libstemmer/stem_KOI8_R_russian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_arabic.h b/src/include/snowball/libstemmer/stem_UTF_8_arabic.h index 5ef61a1031fc6..966acae965a8f 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_arabic.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_arabic.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_basque.h b/src/include/snowball/libstemmer/stem_UTF_8_basque.h new file mode 100644 index 0000000000000..34b4622b86314 --- /dev/null +++ b/src/include/snowball/libstemmer/stem_UTF_8_basque.h @@ -0,0 +1,15 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * basque_UTF_8_create_env(void); +extern void basque_UTF_8_close_env(struct SN_env * z); + +extern int basque_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src/include/snowball/libstemmer/stem_UTF_8_catalan.h b/src/include/snowball/libstemmer/stem_UTF_8_catalan.h new file mode 100644 index 0000000000000..e5a3ae20a5a4a --- /dev/null +++ b/src/include/snowball/libstemmer/stem_UTF_8_catalan.h @@ -0,0 +1,15 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * catalan_UTF_8_create_env(void); +extern void catalan_UTF_8_close_env(struct SN_env * z); + +extern int catalan_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src/include/snowball/libstemmer/stem_UTF_8_danish.h b/src/include/snowball/libstemmer/stem_UTF_8_danish.h index 71f93155edb44..a408655b7dba7 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_danish.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_danish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_dutch.h b/src/include/snowball/libstemmer/stem_UTF_8_dutch.h index 6af7d0adf3d67..bd851fedf2cea 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_dutch.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_dutch.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_english.h b/src/include/snowball/libstemmer/stem_UTF_8_english.h index d0ea10ef9f0ac..c58b71d17f299 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_english.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_english.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_finnish.h b/src/include/snowball/libstemmer/stem_UTF_8_finnish.h index 7d07fbaf4a017..fa6866178dbc0 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_finnish.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_finnish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_french.h b/src/include/snowball/libstemmer/stem_UTF_8_french.h index b19139e538b72..7ec833d5f86a3 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_french.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_french.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_german.h b/src/include/snowball/libstemmer/stem_UTF_8_german.h index 2a95132e9f552..a3c3b7b93bcf0 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_german.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_german.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_greek.h b/src/include/snowball/libstemmer/stem_UTF_8_greek.h index bf1cc6ca01ff0..728e3c8fca6d2 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_greek.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_greek.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_hindi.h b/src/include/snowball/libstemmer/stem_UTF_8_hindi.h new file mode 100644 index 0000000000000..8a86e373a50f2 --- /dev/null +++ b/src/include/snowball/libstemmer/stem_UTF_8_hindi.h @@ -0,0 +1,15 @@ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * hindi_UTF_8_create_env(void); +extern void hindi_UTF_8_close_env(struct SN_env * z); + +extern int hindi_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src/include/snowball/libstemmer/stem_UTF_8_hungarian.h b/src/include/snowball/libstemmer/stem_UTF_8_hungarian.h index d662a836355e4..92d5b61f9013a 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_hungarian.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_hungarian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_indonesian.h b/src/include/snowball/libstemmer/stem_UTF_8_indonesian.h index 7e07e73c343b0..4d37237e00cee 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_indonesian.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_indonesian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_irish.h b/src/include/snowball/libstemmer/stem_UTF_8_irish.h index ea8b81860e12e..94bdb6f754765 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_irish.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_irish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_italian.h b/src/include/snowball/libstemmer/stem_UTF_8_italian.h index 4177c3ebf8999..367e3bf5327c8 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_italian.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_italian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_lithuanian.h b/src/include/snowball/libstemmer/stem_UTF_8_lithuanian.h index 8a9b1241a8ab2..b634532703f31 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_lithuanian.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_lithuanian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_nepali.h b/src/include/snowball/libstemmer/stem_UTF_8_nepali.h index 20b2b919ac26a..3dccb82b96228 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_nepali.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_nepali.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_norwegian.h b/src/include/snowball/libstemmer/stem_UTF_8_norwegian.h index b155ebb718956..b657249d18c64 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_norwegian.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_norwegian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_porter.h b/src/include/snowball/libstemmer/stem_UTF_8_porter.h index 54efb6f130d1e..d2b86b7bae31e 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_porter.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_porter.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_portuguese.h b/src/include/snowball/libstemmer/stem_UTF_8_portuguese.h index 68dc2554c3583..0b7807368bccf 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_portuguese.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_portuguese.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_romanian.h b/src/include/snowball/libstemmer/stem_UTF_8_romanian.h index 2cc1ad011dc49..b493196c914a8 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_romanian.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_romanian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_russian.h b/src/include/snowball/libstemmer/stem_UTF_8_russian.h index 2bc621bff9eeb..2f3f3a1fa7e77 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_russian.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_russian.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_spanish.h b/src/include/snowball/libstemmer/stem_UTF_8_spanish.h index 075ba876ed863..c3afee5b0aeff 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_spanish.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_spanish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_swedish.h b/src/include/snowball/libstemmer/stem_UTF_8_swedish.h index 095623db8041b..28b127d6ca541 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_swedish.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_swedish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_tamil.h b/src/include/snowball/libstemmer/stem_UTF_8_tamil.h index 65505dc028bd1..77d353e0ea54e 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_tamil.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_tamil.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/snowball/libstemmer/stem_UTF_8_turkish.h b/src/include/snowball/libstemmer/stem_UTF_8_turkish.h index 7d94a2f9efbee..aa400cfc8caee 100644 --- a/src/include/snowball/libstemmer/stem_UTF_8_turkish.h +++ b/src/include/snowball/libstemmer/stem_UTF_8_turkish.h @@ -1,5 +1,4 @@ -/* This file was generated automatically by the Snowball to ISO C compiler */ -/* http://snowballstem.org/ */ +/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */ #ifdef __cplusplus extern "C" { diff --git a/src/include/utils/acl.h b/src/include/utils/acl.h index 732aa01dad08f..b263d92903234 100644 --- a/src/include/utils/acl.h +++ b/src/include/utils/acl.h @@ -230,7 +230,6 @@ extern void ExecuteGrantStmt(GrantStmt *stmt); extern void ExecAlterDefaultPrivilegesStmt(ParseState *pstate, AlterDefaultPrivilegesStmt *stmt); extern void RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid); -extern void RemoveDefaultACLById(Oid defaclOid); extern AclMode pg_attribute_aclmask(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mask, AclMaskHow how); diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index a352a8b773c4f..f8595642da9b7 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -47,11 +47,11 @@ extern int namestrcmp(Name name, const char *str); extern int32 pg_atoi(const char *s, int size, int c); extern int16 pg_strtoint16(const char *s); extern int32 pg_strtoint32(const char *s); -extern void pg_itoa(int16 i, char *a); -int pg_ultoa_n(uint32 l, char *a); -int pg_ulltoa_n(uint64 l, char *a); -extern void pg_ltoa(int32 l, char *a); -extern void pg_lltoa(int64 ll, char *a); +extern int pg_itoa(int16 i, char *a); +extern int pg_ultoa_n(uint32 l, char *a); +extern int pg_ulltoa_n(uint64 l, char *a); +extern int pg_ltoa(int32 l, char *a); +extern int pg_lltoa(int64 ll, char *a); extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth); extern char *pg_ultostr(char *str, uint32 value); extern uint64 pg_strtouint64(const char *str, char **endptr, int base); diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer index 0dbdfdc1223c4..6ccc8ab916569 100644 --- a/src/interfaces/ecpg/preproc/ecpg.trailer +++ b/src/interfaces/ecpg/preproc/ecpg.trailer @@ -114,7 +114,7 @@ connection_target: opt_database_name opt_server opt_port } ; -opt_database_name: database_name { $$ = $1; } +opt_database_name: name { $$ = $1; } | /*EMPTY*/ { $$ = EMPTY; } ; @@ -962,7 +962,7 @@ dis_name: connection_object { $$ = $1; } | /* EMPTY */ { $$ = mm_strdup("\"CURRENT\""); } ; -connection_object: database_name { $$ = make3_str(mm_strdup("\""), $1, mm_strdup("\"")); } +connection_object: name { $$ = make3_str(mm_strdup("\""), $1, mm_strdup("\"")); } | DEFAULT { $$ = mm_strdup("\"DEFAULT\""); } | char_variable { $$ = $1; } ; diff --git a/src/pl/plpgsql/src/expected/plpgsql_control.out b/src/pl/plpgsql/src/expected/plpgsql_control.out index 73b23a35e5697..fbfc939eae926 100644 --- a/src/pl/plpgsql/src/expected/plpgsql_control.out +++ b/src/pl/plpgsql/src/expected/plpgsql_control.out @@ -349,7 +349,7 @@ begin end loop flbl1; end; $$ language plpgsql; -ERROR: end label "flbl1" specified for unlabelled block +ERROR: end label "flbl1" specified for unlabeled block LINE 5: end loop flbl1; ^ -- should fail: end label does not match start label @@ -374,7 +374,7 @@ begin end loop outer_label; end; $$ language plpgsql; -ERROR: end label "outer_label" specified for unlabelled block +ERROR: end label "outer_label" specified for unlabeled block LINE 6: end loop outer_label; ^ -- unlabeled exit matches no blocks diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 9a87cd70f1edc..f41d675d65634 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -27,6 +27,7 @@ #include "executor/execExpr.h" #include "executor/spi.h" #include "executor/spi_priv.h" +#include "executor/tstoreReceiver.h" #include "funcapi.h" #include "mb/stringinfo_mb.h" #include "miscadmin.h" @@ -51,14 +52,6 @@ #include "utils/syscache.h" #include "utils/typcache.h" -typedef struct -{ - int nargs; /* number of arguments */ - Oid *types; /* types of arguments */ - Datum *values; /* evaluated argument values */ - char *nulls; /* null markers (' '/'n' style) */ -} PreparedParamsData; - /* * All plpgsql function executions within a single transaction share the same * executor EState for evaluating "simple" expressions. Each function call @@ -212,21 +205,21 @@ static HTAB *shared_cast_hash = NULL; { \ if (estate->exitlabel == NULL) \ { \ - /* unlabelled EXIT terminates this loop */ \ + /* unlabeled EXIT terminates this loop */ \ rc = PLPGSQL_RC_OK; \ exit_action; \ } \ else if ((looplabel) != NULL && \ strcmp(looplabel, estate->exitlabel) == 0) \ { \ - /* labelled EXIT matching this loop, so terminate loop */ \ + /* labeled EXIT matching this loop, so terminate loop */ \ estate->exitlabel = NULL; \ rc = PLPGSQL_RC_OK; \ exit_action; \ } \ else \ { \ - /* non-matching labelled EXIT, propagate RC_EXIT out */ \ + /* non-matching labeled EXIT, propagate RC_EXIT out */ \ exit_action; \ } \ } \ @@ -234,19 +227,19 @@ static HTAB *shared_cast_hash = NULL; { \ if (estate->exitlabel == NULL) \ { \ - /* unlabelled CONTINUE matches this loop, so continue in loop */ \ + /* unlabeled CONTINUE matches this loop, so continue in loop */ \ rc = PLPGSQL_RC_OK; \ } \ else if ((looplabel) != NULL && \ strcmp(looplabel, estate->exitlabel) == 0) \ { \ - /* labelled CONTINUE matching this loop, so continue in loop */ \ + /* labeled CONTINUE matching this loop, so continue in loop */ \ estate->exitlabel = NULL; \ rc = PLPGSQL_RC_OK; \ } \ else \ { \ - /* non-matching labelled CONTINUE, propagate RC_CONTINUE out */ \ + /* non-matching labeled CONTINUE, propagate RC_CONTINUE out */ \ exit_action; \ } \ } \ @@ -441,15 +434,15 @@ static void assign_text_var(PLpgSQL_execstate *estate, PLpgSQL_var *var, const char *str); static void assign_record_var(PLpgSQL_execstate *estate, PLpgSQL_rec *rec, ExpandedRecordHeader *erh); -static PreparedParamsData *exec_eval_using_params(PLpgSQL_execstate *estate, - List *params); +static ParamListInfo exec_eval_using_params(PLpgSQL_execstate *estate, + List *params); static Portal exec_dynquery_with_params(PLpgSQL_execstate *estate, PLpgSQL_expr *dynquery, List *params, const char *portalname, int cursorOptions); static char *format_expr_params(PLpgSQL_execstate *estate, const PLpgSQL_expr *expr); static char *format_preparedparamsdata(PLpgSQL_execstate *estate, - const PreparedParamsData *ppd); + ParamListInfo paramLI); /* ---------- @@ -3513,9 +3506,11 @@ static int exec_stmt_return_query(PLpgSQL_execstate *estate, PLpgSQL_stmt_return_query *stmt) { - Portal portal; - uint64 processed = 0; - TupleConversionMap *tupmap; + int64 tcount; + DestReceiver *treceiver; + int rc; + uint64 processed; + MemoryContext stmt_mcontext = get_stmt_mcontext(estate); MemoryContext oldcontext; if (!estate->retisset) @@ -3525,60 +3520,99 @@ exec_stmt_return_query(PLpgSQL_execstate *estate, if (estate->tuple_store == NULL) exec_init_tuple_store(estate); + /* There might be some tuples in the tuplestore already */ + tcount = tuplestore_tuple_count(estate->tuple_store); + + /* + * Set up DestReceiver to transfer results directly to tuplestore, + * converting rowtype if necessary. DestReceiver lives in mcontext. + */ + oldcontext = MemoryContextSwitchTo(stmt_mcontext); + treceiver = CreateDestReceiver(DestTuplestore); + SetTuplestoreDestReceiverParams(treceiver, + estate->tuple_store, + estate->tuple_store_cxt, + false, + estate->tuple_store_desc, + gettext_noop("structure of query does not match function result type")); + MemoryContextSwitchTo(oldcontext); if (stmt->query != NULL) { /* static query */ - exec_run_select(estate, stmt->query, 0, &portal); - } - else - { - /* RETURN QUERY EXECUTE */ - Assert(stmt->dynquery != NULL); - portal = exec_dynquery_with_params(estate, stmt->dynquery, - stmt->params, NULL, - 0); - } + PLpgSQL_expr *expr = stmt->query; + ParamListInfo paramLI; - /* Use eval_mcontext for tuple conversion work */ - oldcontext = MemoryContextSwitchTo(get_eval_mcontext(estate)); + /* + * On the first call for this expression generate the plan. + */ + if (expr->plan == NULL) + exec_prepare_plan(estate, expr, CURSOR_OPT_PARALLEL_OK, true); - tupmap = convert_tuples_by_position(portal->tupDesc, - estate->tuple_store_desc, - gettext_noop("structure of query does not match function result type")); + /* + * Set up ParamListInfo to pass to executor + */ + paramLI = setup_param_list(estate, expr); - while (true) + /* + * Execute the query + */ + rc = SPI_execute_plan_with_receiver(expr->plan, paramLI, + estate->readonly_func, 0, + treceiver); + if (rc != SPI_OK_SELECT) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("query \"%s\" is not a SELECT", expr->query))); + } + else { - uint64 i; - - SPI_cursor_fetch(portal, true, 50); + /* RETURN QUERY EXECUTE */ + Datum query; + bool isnull; + Oid restype; + int32 restypmod; + char *querystr; - /* SPI will have changed CurrentMemoryContext */ - MemoryContextSwitchTo(get_eval_mcontext(estate)); + /* + * Evaluate the string expression after the EXECUTE keyword. Its + * result is the querystring we have to execute. + */ + Assert(stmt->dynquery != NULL); + query = exec_eval_expr(estate, stmt->dynquery, + &isnull, &restype, &restypmod); + if (isnull) + ereport(ERROR, + (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), + errmsg("query string argument of EXECUTE is null"))); - if (SPI_processed == 0) - break; + /* Get the C-String representation */ + querystr = convert_value_to_string(estate, query, restype); - for (i = 0; i < SPI_processed; i++) - { - HeapTuple tuple = SPI_tuptable->vals[i]; + /* copy it into the stmt_mcontext before we clean up */ + querystr = MemoryContextStrdup(stmt_mcontext, querystr); - if (tupmap) - tuple = execute_attr_map_tuple(tuple, tupmap); - tuplestore_puttuple(estate->tuple_store, tuple); - if (tupmap) - heap_freetuple(tuple); - processed++; - } + exec_eval_cleanup(estate); - SPI_freetuptable(SPI_tuptable); + /* Execute query, passing params if necessary */ + rc = SPI_execute_with_receiver(querystr, + exec_eval_using_params(estate, + stmt->params), + estate->readonly_func, + 0, + treceiver); + if (rc < 0) + elog(ERROR, "SPI_execute_with_receiver failed executing query \"%s\": %s", + querystr, SPI_result_code_string(rc)); } - SPI_freetuptable(SPI_tuptable); - SPI_cursor_close(portal); - - MemoryContextSwitchTo(oldcontext); + /* Clean up */ + treceiver->rDestroy(treceiver); exec_eval_cleanup(estate); + MemoryContextReset(stmt_mcontext); + + /* Count how many tuples we got */ + processed = tuplestore_tuple_count(estate->tuple_store) - tcount; estate->eval_processed = processed; exec_set_found(estate, processed != 0); @@ -4344,7 +4378,7 @@ exec_stmt_dynexecute(PLpgSQL_execstate *estate, int32 restypmod; char *querystr; int exec_res; - PreparedParamsData *ppd = NULL; + ParamListInfo paramLI; MemoryContext stmt_mcontext = get_stmt_mcontext(estate); /* @@ -4368,16 +4402,9 @@ exec_stmt_dynexecute(PLpgSQL_execstate *estate, /* * Execute the query without preparing a saved plan. */ - if (stmt->params) - { - ppd = exec_eval_using_params(estate, stmt->params); - exec_res = SPI_execute_with_args(querystr, - ppd->nargs, ppd->types, - ppd->values, ppd->nulls, - estate->readonly_func, 0); - } - else - exec_res = SPI_execute(querystr, estate->readonly_func, 0); + paramLI = exec_eval_using_params(estate, stmt->params); + exec_res = SPI_execute_with_receiver(querystr, paramLI, + estate->readonly_func, 0, NULL); switch (exec_res) { @@ -4429,7 +4456,7 @@ exec_stmt_dynexecute(PLpgSQL_execstate *estate, break; default: - elog(ERROR, "SPI_execute failed executing query \"%s\": %s", + elog(ERROR, "SPI_execute_with_receiver failed executing query \"%s\": %s", querystr, SPI_result_code_string(exec_res)); break; } @@ -4465,7 +4492,7 @@ exec_stmt_dynexecute(PLpgSQL_execstate *estate, char *errdetail; if (estate->func->print_strict_params) - errdetail = format_preparedparamsdata(estate, ppd); + errdetail = format_preparedparamsdata(estate, paramLI); else errdetail = NULL; @@ -4484,7 +4511,7 @@ exec_stmt_dynexecute(PLpgSQL_execstate *estate, char *errdetail; if (estate->func->print_strict_params) - errdetail = format_preparedparamsdata(estate, ppd); + errdetail = format_preparedparamsdata(estate, paramLI); else errdetail = NULL; @@ -6308,9 +6335,9 @@ exec_eval_simple_expr(PLpgSQL_execstate *estate, /* * Create a ParamListInfo to pass to SPI * - * We use a single ParamListInfo struct for all SPI calls made from this - * estate; it contains no per-param data, just hook functions, so it's - * effectively read-only for SPI. + * We use a single ParamListInfo struct for all SPI calls made to evaluate + * PLpgSQL_exprs in this estate. It contains no per-param data, just hook + * functions, so it's effectively read-only for SPI. * * An exception from pure read-only-ness is that the parserSetupArg points * to the specific PLpgSQL_expr being evaluated. This is not an issue for @@ -8575,65 +8602,68 @@ assign_record_var(PLpgSQL_execstate *estate, PLpgSQL_rec *rec, * The result data structure is created in the stmt_mcontext, and should * be freed by resetting that context. */ -static PreparedParamsData * +static ParamListInfo exec_eval_using_params(PLpgSQL_execstate *estate, List *params) { - PreparedParamsData *ppd; - MemoryContext stmt_mcontext = get_stmt_mcontext(estate); + ParamListInfo paramLI; int nargs; + MemoryContext stmt_mcontext; + MemoryContext oldcontext; int i; ListCell *lc; - ppd = (PreparedParamsData *) - MemoryContextAlloc(stmt_mcontext, sizeof(PreparedParamsData)); - nargs = list_length(params); + /* Fast path for no parameters: we can just return NULL */ + if (params == NIL) + return NULL; - ppd->nargs = nargs; - ppd->types = (Oid *) - MemoryContextAlloc(stmt_mcontext, nargs * sizeof(Oid)); - ppd->values = (Datum *) - MemoryContextAlloc(stmt_mcontext, nargs * sizeof(Datum)); - ppd->nulls = (char *) - MemoryContextAlloc(stmt_mcontext, nargs * sizeof(char)); + nargs = list_length(params); + stmt_mcontext = get_stmt_mcontext(estate); + oldcontext = MemoryContextSwitchTo(stmt_mcontext); + paramLI = makeParamList(nargs); + MemoryContextSwitchTo(oldcontext); i = 0; foreach(lc, params) { PLpgSQL_expr *param = (PLpgSQL_expr *) lfirst(lc); - bool isnull; + ParamExternData *prm = ¶mLI->params[i]; int32 ppdtypmod; - MemoryContext oldcontext; - ppd->values[i] = exec_eval_expr(estate, param, - &isnull, - &ppd->types[i], - &ppdtypmod); - ppd->nulls[i] = isnull ? 'n' : ' '; + /* + * Always mark params as const, since we only use the result with + * one-shot plans. + */ + prm->pflags = PARAM_FLAG_CONST; + + prm->value = exec_eval_expr(estate, param, + &prm->isnull, + &prm->ptype, + &ppdtypmod); oldcontext = MemoryContextSwitchTo(stmt_mcontext); - if (ppd->types[i] == UNKNOWNOID) + if (prm->ptype == UNKNOWNOID) { /* * Treat 'unknown' parameters as text, since that's what most - * people would expect. SPI_execute_with_args can coerce unknown + * people would expect. The SPI functions can coerce unknown * constants in a more intelligent way, but not unknown Params. * This code also takes care of copying into the right context. * Note we assume 'unknown' has the representation of C-string. */ - ppd->types[i] = TEXTOID; - if (!isnull) - ppd->values[i] = CStringGetTextDatum(DatumGetCString(ppd->values[i])); + prm->ptype = TEXTOID; + if (!prm->isnull) + prm->value = CStringGetTextDatum(DatumGetCString(prm->value)); } /* pass-by-ref non null values must be copied into stmt_mcontext */ - else if (!isnull) + else if (!prm->isnull) { int16 typLen; bool typByVal; - get_typlenbyval(ppd->types[i], &typLen, &typByVal); + get_typlenbyval(prm->ptype, &typLen, &typByVal); if (!typByVal) - ppd->values[i] = datumCopy(ppd->values[i], typByVal, typLen); + prm->value = datumCopy(prm->value, typByVal, typLen); } MemoryContextSwitchTo(oldcontext); @@ -8643,7 +8673,7 @@ exec_eval_using_params(PLpgSQL_execstate *estate, List *params) i++; } - return ppd; + return paramLI; } /* @@ -8689,30 +8719,15 @@ exec_dynquery_with_params(PLpgSQL_execstate *estate, /* * Open an implicit cursor for the query. We use - * SPI_cursor_open_with_args even when there are no params, because this - * avoids making and freeing one copy of the plan. + * SPI_cursor_parse_open_with_paramlist even when there are no params, + * because this avoids making and freeing one copy of the plan. */ - if (params) - { - PreparedParamsData *ppd; - - ppd = exec_eval_using_params(estate, params); - portal = SPI_cursor_open_with_args(portalname, - querystr, - ppd->nargs, ppd->types, - ppd->values, ppd->nulls, - estate->readonly_func, - cursorOptions); - } - else - { - portal = SPI_cursor_open_with_args(portalname, - querystr, - 0, NULL, - NULL, NULL, - estate->readonly_func, - cursorOptions); - } + portal = SPI_cursor_parse_open_with_paramlist(portalname, + querystr, + exec_eval_using_params(estate, + params), + estate->readonly_func, + cursorOptions); if (portal == NULL) elog(ERROR, "could not open implicit cursor for query \"%s\": %s", @@ -8782,37 +8797,44 @@ format_expr_params(PLpgSQL_execstate *estate, } /* - * Return a formatted string with information about PreparedParamsData, or NULL - * if there are no parameters. + * Return a formatted string with information about the parameter values, + * or NULL if there are no parameters. * The result is in the eval_mcontext. */ static char * format_preparedparamsdata(PLpgSQL_execstate *estate, - const PreparedParamsData *ppd) + ParamListInfo paramLI) { int paramno; StringInfoData paramstr; MemoryContext oldcontext; - if (!ppd) + if (!paramLI) return NULL; oldcontext = MemoryContextSwitchTo(get_eval_mcontext(estate)); initStringInfo(¶mstr); - for (paramno = 0; paramno < ppd->nargs; paramno++) + for (paramno = 0; paramno < paramLI->numParams; paramno++) { + ParamExternData *prm = ¶mLI->params[paramno]; + + /* + * Note: for now, this is only used on ParamListInfos produced by + * exec_eval_using_params(), so we don't worry about invoking the + * paramFetch hook or skipping unused parameters. + */ appendStringInfo(¶mstr, "%s$%d = ", paramno > 0 ? ", " : "", paramno + 1); - if (ppd->nulls[paramno] == 'n') + if (prm->isnull) appendStringInfoString(¶mstr, "NULL"); else appendStringInfoStringQuoted(¶mstr, convert_value_to_string(estate, - ppd->values[paramno], - ppd->types[paramno]), + prm->value, + prm->ptype), -1); } diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y index 6778d0e771462..5a7e1a44442b7 100644 --- a/src/pl/plpgsql/src/pl_gram.y +++ b/src/pl/plpgsql/src/pl_gram.y @@ -1725,7 +1725,7 @@ stmt_exit : exit_type opt_label opt_exitcond { /* * No label, so make sure there is some loop (an - * unlabelled EXIT does not match a block, so this + * unlabeled EXIT does not match a block, so this * is the same test for both EXIT and CONTINUE) */ if (plpgsql_ns_find_nearest_loop(plpgsql_ns_top()) == NULL) @@ -3749,7 +3749,7 @@ check_labels(const char *start_label, const char *end_label, int end_location) if (!start_label) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("end label \"%s\" specified for unlabelled block", + errmsg("end label \"%s\" specified for unlabeled block", end_label), parser_errposition(end_location))); diff --git a/src/pl/plpgsql/src/plpgsql.h b/src/pl/plpgsql/src/plpgsql.h index 1af2595e3419e..0c3d30fb1301c 100644 --- a/src/pl/plpgsql/src/plpgsql.h +++ b/src/pl/plpgsql/src/plpgsql.h @@ -833,7 +833,7 @@ typedef struct PLpgSQL_stmt_exit int lineno; unsigned int stmtid; bool is_exit; /* Is this an exit or a continue? */ - char *label; /* NULL if it's an unlabelled EXIT/CONTINUE */ + char *label; /* NULL if it's an unlabeled EXIT/CONTINUE */ PLpgSQL_expr *cond; } PLpgSQL_stmt_exit; diff --git a/src/test/isolation/expected/update-conflict-out.out b/src/test/isolation/expected/update-conflict-out.out new file mode 100644 index 0000000000000..32be3269b328b --- /dev/null +++ b/src/test/isolation/expected/update-conflict-out.out @@ -0,0 +1,27 @@ +Parsed test spec with 3 sessions + +starting permutation: foo_select bar_insert foo_insert foo_commit trouble_update bar_select bar_commit trouble_abort +step foo_select: SELECT * FROM txn0 WHERE id = 42; +id val + +step bar_insert: INSERT INTO txn0 SELECT 42, 'bar_insert'; +step foo_insert: INSERT INTO txn1 SELECT 7, 'foo_insert'; +step foo_commit: COMMIT; +step trouble_update: UPDATE txn1 SET val = 'add physical version for "bar_select"' WHERE id = 7; +step bar_select: SELECT * FROM txn1 WHERE id = 7; +ERROR: could not serialize access due to read/write dependencies among transactions +step bar_commit: COMMIT; +step trouble_abort: ABORT; + +starting permutation: foo_select bar_insert foo_insert foo_commit trouble_delete bar_select bar_commit trouble_abort +step foo_select: SELECT * FROM txn0 WHERE id = 42; +id val + +step bar_insert: INSERT INTO txn0 SELECT 42, 'bar_insert'; +step foo_insert: INSERT INTO txn1 SELECT 7, 'foo_insert'; +step foo_commit: COMMIT; +step trouble_delete: DELETE FROM txn1 WHERE id = 7; +step bar_select: SELECT * FROM txn1 WHERE id = 7; +ERROR: could not serialize access due to read/write dependencies among transactions +step bar_commit: COMMIT; +step trouble_abort: ABORT; diff --git a/src/test/isolation/isolation_schedule b/src/test/isolation/isolation_schedule index 2873cd7c216c8..218c87b24bf4b 100644 --- a/src/test/isolation/isolation_schedule +++ b/src/test/isolation/isolation_schedule @@ -18,6 +18,7 @@ test: two-ids test: multiple-row-versions test: index-only-scan test: predicate-lock-hot-tuple +test: update-conflict-out test: deadlock-simple test: deadlock-hard test: deadlock-soft diff --git a/src/test/isolation/specs/update-conflict-out.spec b/src/test/isolation/specs/update-conflict-out.spec new file mode 100644 index 0000000000000..25c27d4ca6572 --- /dev/null +++ b/src/test/isolation/specs/update-conflict-out.spec @@ -0,0 +1,54 @@ +# Test for interactions between SSI's "conflict out" handling for heapam and +# concurrently updated tuple +# +# See bug report: +# https://postgr.es/m/db7b729d-0226-d162-a126-8a8ab2dc4443%40jepsen.io + +setup +{ + CREATE TABLE txn0(id int4 PRIMARY KEY, val TEXT); + CREATE TABLE txn1(id int4 PRIMARY KEY, val TEXT); +} + +teardown +{ + DROP TABLE txn0; + DROP TABLE txn1; +} + +session "foo" +setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } +step "foo_select" { SELECT * FROM txn0 WHERE id = 42; } +step "foo_insert" { INSERT INTO txn1 SELECT 7, 'foo_insert'; } +step "foo_commit" { COMMIT; } + +session "bar" +setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } +step "bar_select" { SELECT * FROM txn1 WHERE id = 7; } +step "bar_insert" { INSERT INTO txn0 SELECT 42, 'bar_insert'; } +step "bar_commit" { COMMIT; } + +# This session creates the conditions that confused bar's "conflict out" +# handling in old releases affected by bug: +session "trouble" +setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } +step "trouble_update" { UPDATE txn1 SET val = 'add physical version for "bar_select"' WHERE id = 7; } +step "trouble_delete" { DELETE FROM txn1 WHERE id = 7; } +step "trouble_abort" { ABORT; } + +permutation "foo_select" + "bar_insert" + "foo_insert" "foo_commit" + "trouble_update" # Updates tuple... + "bar_select" # Should observe one distinct XID per version + "bar_commit" # "bar" should fail here at the latest + "trouble_abort" + +# Same as above, but "trouble" session DELETEs this time around +permutation "foo_select" + "bar_insert" + "foo_insert" "foo_commit" + "trouble_delete" # Deletes tuple... + "bar_select" # Should observe foo's XID + "bar_commit" # "bar" should fail here at the latest + "trouble_abort" diff --git a/src/test/modules/test_pg_dump/expected/test_pg_dump.out b/src/test/modules/test_pg_dump/expected/test_pg_dump.out index a50eaf6125dca..f14f3a6664614 100644 --- a/src/test/modules/test_pg_dump/expected/test_pg_dump.out +++ b/src/test/modules/test_pg_dump/expected/test_pg_dump.out @@ -1,9 +1,7 @@ CREATE ROLE regress_dump_test_role; CREATE EXTENSION test_pg_dump; ALTER EXTENSION test_pg_dump ADD DATABASE postgres; -- error -ERROR: syntax error at or near "DATABASE" -LINE 1: ALTER EXTENSION test_pg_dump ADD DATABASE postgres; - ^ +ERROR: cannot add an object of this type to an extension CREATE TABLE test_pg_dump_t1 (c1 int, junk text); ALTER TABLE test_pg_dump_t1 DROP COLUMN junk; -- to exercise dropped-col cases CREATE VIEW test_pg_dump_v1 AS SELECT * FROM test_pg_dump_t1; diff --git a/src/test/recovery/t/006_logical_decoding.pl b/src/test/recovery/t/006_logical_decoding.pl index ee05535b1c205..78229a7b92bcd 100644 --- a/src/test/recovery/t/006_logical_decoding.pl +++ b/src/test/recovery/t/006_logical_decoding.pl @@ -7,7 +7,7 @@ use warnings; use PostgresNode; use TestLib; -use Test::More tests => 13; +use Test::More tests => 14; use Config; # Initialize master node @@ -36,6 +36,15 @@ m/replication slot "test_slot" was not created in this database/, "Logical decoding correctly fails to start"); +# Check case of walsender not using a database connection. Logical +# decoding should not be allowed. +($result, $stdout, $stderr) = $node_master->psql( + 'template1', + qq[START_REPLICATION SLOT s1 LOGICAL 0/1], + replication => 'true'); +ok($stderr =~ /ERROR: logical decoding requires a database connection/, + "Logical decoding fails on non-database connection"); + $node_master->safe_psql('postgres', qq[INSERT INTO decoding_test(x,y) SELECT s, s::text FROM generate_series(1,10) s;] ); diff --git a/src/test/regress/expected/aggregates.out b/src/test/regress/expected/aggregates.out index 14cdcfcca6e51..3bd184ae294b2 100644 --- a/src/test/regress/expected/aggregates.out +++ b/src/test/regress/expected/aggregates.out @@ -127,7 +127,79 @@ SELECT var_samp(b::numeric) FROM aggtest; -- population variance is defined for a single tuple, sample variance -- is not -SELECT var_pop(1.0), var_samp(2.0); +SELECT var_pop(1.0::float8), var_samp(2.0::float8); + var_pop | var_samp +---------+---------- + 0 | +(1 row) + +SELECT stddev_pop(3.0::float8), stddev_samp(4.0::float8); + stddev_pop | stddev_samp +------------+------------- + 0 | +(1 row) + +SELECT var_pop('inf'::float8), var_samp('inf'::float8); + var_pop | var_samp +---------+---------- + NaN | +(1 row) + +SELECT stddev_pop('inf'::float8), stddev_samp('inf'::float8); + stddev_pop | stddev_samp +------------+------------- + NaN | +(1 row) + +SELECT var_pop('nan'::float8), var_samp('nan'::float8); + var_pop | var_samp +---------+---------- + NaN | +(1 row) + +SELECT stddev_pop('nan'::float8), stddev_samp('nan'::float8); + stddev_pop | stddev_samp +------------+------------- + NaN | +(1 row) + +SELECT var_pop(1.0::float4), var_samp(2.0::float4); + var_pop | var_samp +---------+---------- + 0 | +(1 row) + +SELECT stddev_pop(3.0::float4), stddev_samp(4.0::float4); + stddev_pop | stddev_samp +------------+------------- + 0 | +(1 row) + +SELECT var_pop('inf'::float4), var_samp('inf'::float4); + var_pop | var_samp +---------+---------- + NaN | +(1 row) + +SELECT stddev_pop('inf'::float4), stddev_samp('inf'::float4); + stddev_pop | stddev_samp +------------+------------- + NaN | +(1 row) + +SELECT var_pop('nan'::float4), var_samp('nan'::float4); + var_pop | var_samp +---------+---------- + NaN | +(1 row) + +SELECT stddev_pop('nan'::float4), stddev_samp('nan'::float4); + stddev_pop | stddev_samp +------------+------------- + NaN | +(1 row) + +SELECT var_pop(1.0::numeric), var_samp(2.0::numeric); var_pop | var_samp ---------+---------- 0 | @@ -139,6 +211,18 @@ SELECT stddev_pop(3.0::numeric), stddev_samp(4.0::numeric); 0 | (1 row) +SELECT var_pop('nan'::numeric), var_samp('nan'::numeric); + var_pop | var_samp +---------+---------- + NaN | +(1 row) + +SELECT stddev_pop('nan'::numeric), stddev_samp('nan'::numeric); + stddev_pop | stddev_samp +------------+------------- + NaN | +(1 row) + -- verify correct results for null and NaN inputs select sum(null::int4) from generate_series(1,3); sum @@ -299,6 +383,25 @@ SELECT corr(b, a) FROM aggtest; 0.139634516517873 (1 row) +-- check single-tuple behavior +SELECT covar_pop(1::float8,2::float8), covar_samp(3::float8,4::float8); + covar_pop | covar_samp +-----------+------------ + 0 | +(1 row) + +SELECT covar_pop(1::float8,'inf'::float8), covar_samp(3::float8,'inf'::float8); + covar_pop | covar_samp +-----------+------------ + NaN | +(1 row) + +SELECT covar_pop(1::float8,'nan'::float8), covar_samp(3::float8,'nan'::float8); + covar_pop | covar_samp +-----------+------------ + NaN | +(1 row) + -- test accum and combine functions directly CREATE TABLE regr_test (x float8, y float8); INSERT INTO regr_test VALUES (10,150),(20,250),(30,350),(80,540),(100,200); @@ -2294,29 +2397,83 @@ SET parallel_setup_cost = 0; SET parallel_tuple_cost = 0; SET min_parallel_table_scan_size = 0; SET max_parallel_workers_per_gather = 4; +SET parallel_leader_participation = off; SET enable_indexonlyscan = off; -- variance(int4) covers numeric_poly_combine -- sum(int8) covers int8_avg_combine -- regr_count(float8, float8) covers int8inc_float8_float8 and aggregates with > 1 arg EXPLAIN (COSTS OFF, VERBOSE) - SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) FROM tenk1; - QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------------------------- +SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Finalize Aggregate - Output: variance(unique1), sum((unique1)::bigint), regr_count((unique1)::double precision, (unique1)::double precision) + Output: variance(tenk1.unique1), sum((tenk1.unique1)::bigint), regr_count((tenk1.unique1)::double precision, (tenk1.unique1)::double precision) -> Gather - Output: (PARTIAL variance(unique1)), (PARTIAL sum((unique1)::bigint)), (PARTIAL regr_count((unique1)::double precision, (unique1)::double precision)) + Output: (PARTIAL variance(tenk1.unique1)), (PARTIAL sum((tenk1.unique1)::bigint)), (PARTIAL regr_count((tenk1.unique1)::double precision, (tenk1.unique1)::double precision)) Workers Planned: 4 -> Partial Aggregate - Output: PARTIAL variance(unique1), PARTIAL sum((unique1)::bigint), PARTIAL regr_count((unique1)::double precision, (unique1)::double precision) - -> Parallel Seq Scan on public.tenk1 - Output: unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even, stringu1, stringu2, string4 -(9 rows) - -SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) FROM tenk1; - variance | sum | regr_count -----------------------+----------+------------ - 8334166.666666666667 | 49995000 | 10000 + Output: PARTIAL variance(tenk1.unique1), PARTIAL sum((tenk1.unique1)::bigint), PARTIAL regr_count((tenk1.unique1)::double precision, (tenk1.unique1)::double precision) + -> Parallel Append + -> Parallel Seq Scan on public.tenk1 + Output: tenk1.unique1 + -> Parallel Seq Scan on public.tenk1 tenk1_1 + Output: tenk1_1.unique1 + -> Parallel Seq Scan on public.tenk1 tenk1_2 + Output: tenk1_2.unique1 + -> Parallel Seq Scan on public.tenk1 tenk1_3 + Output: tenk1_3.unique1 +(16 rows) + +SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; + variance | sum | regr_count +----------------------+-----------+------------ + 8333541.588539713493 | 199980000 | 40000 +(1 row) + +-- variance(int8) covers numeric_combine +-- avg(numeric) covers numeric_avg_combine +EXPLAIN (COSTS OFF, VERBOSE) +SELECT variance(unique1::int8), avg(unique1::numeric) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; + QUERY PLAN +-------------------------------------------------------------------------------------------------------- + Finalize Aggregate + Output: variance((tenk1.unique1)::bigint), avg((tenk1.unique1)::numeric) + -> Gather + Output: (PARTIAL variance((tenk1.unique1)::bigint)), (PARTIAL avg((tenk1.unique1)::numeric)) + Workers Planned: 4 + -> Partial Aggregate + Output: PARTIAL variance((tenk1.unique1)::bigint), PARTIAL avg((tenk1.unique1)::numeric) + -> Parallel Append + -> Parallel Seq Scan on public.tenk1 + Output: tenk1.unique1 + -> Parallel Seq Scan on public.tenk1 tenk1_1 + Output: tenk1_1.unique1 + -> Parallel Seq Scan on public.tenk1 tenk1_2 + Output: tenk1_2.unique1 + -> Parallel Seq Scan on public.tenk1 tenk1_3 + Output: tenk1_3.unique1 +(16 rows) + +SELECT variance(unique1::int8), avg(unique1::numeric) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; + variance | avg +----------------------+----------------------- + 8333541.588539713493 | 4999.5000000000000000 (1 row) ROLLBACK; @@ -2449,26 +2606,30 @@ set enable_sort to default; -- aggregation. Force spilling in both cases by setting work_mem low. -- set work_mem='64kB'; +create table agg_data_2k as +select g from generate_series(0, 1999) g; +analyze agg_data_2k; +create table agg_data_20k as +select g from generate_series(0, 19999) g; +analyze agg_data_20k; -- Produce results with sorting. set enable_hashagg = false; set jit_above_cost = 0; explain (costs off) select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; - QUERY PLAN ------------------------------------------------- + from agg_data_20k group by g%10000; + QUERY PLAN +-------------------------------------- GroupAggregate Group Key: ((g % 10000)) -> Sort Sort Key: ((g % 10000)) - -> Function Scan on generate_series g + -> Seq Scan on agg_data_20k (5 rows) create table agg_group_1 as select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; + from agg_data_20k group by g%10000; create table agg_group_2 as select * from (values (100), (300), (500)) as r(a), @@ -2476,37 +2637,33 @@ select * from select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g + from agg_data_2k where g < r.a group by g/2) as s; set jit_above_cost to default; create table agg_group_3 as select (g/2)::numeric as c1, sum(7::int4) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; create table agg_group_4 as select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; -- Produce results with hash aggregation set enable_hashagg = true; set enable_sort = false; set jit_above_cost = 0; explain (costs off) select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; - QUERY PLAN ------------------------------------------- + from agg_data_20k group by g%10000; + QUERY PLAN +-------------------------------- HashAggregate Group Key: (g % 10000) - -> Function Scan on generate_series g + -> Seq Scan on agg_data_20k (3 rows) create table agg_hash_1 as select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; + from agg_data_20k group by g%10000; create table agg_hash_2 as select * from (values (100), (300), (500)) as r(a), @@ -2514,18 +2671,16 @@ select * from select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g + from agg_data_2k where g < r.a group by g/2) as s; set jit_above_cost to default; create table agg_hash_3 as select (g/2)::numeric as c1, sum(7::int4) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; create table agg_hash_4 as select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; set enable_sort = true; set work_mem to default; -- Compare group aggregation results to hash aggregation results diff --git a/src/test/regress/expected/groupingsets.out b/src/test/regress/expected/groupingsets.out index 05ff204f02c67..03ada654bb572 100644 --- a/src/test/regress/expected/groupingsets.out +++ b/src/test/regress/expected/groupingsets.out @@ -1636,68 +1636,65 @@ select v||'a', case when grouping(v||'a') = 1 then 1 else 0 end, count(*) -- -- Compare results between plans using sorting and plans using hash -- aggregation. Force spilling in both cases by setting work_mem low --- and turning on enable_groupingsets_hash_disk. +-- and altering the statistics. -- -SET enable_groupingsets_hash_disk = true; +create table gs_data_1 as +select g%1000 as g1000, g%100 as g100, g%10 as g10, g + from generate_series(0,1999) g; +analyze gs_data_1; +alter table gs_data_1 set (autovacuum_enabled = 'false'); +update pg_class set reltuples = 10 where relname='gs_data_1'; SET work_mem='64kB'; -- Produce results with sorting. set enable_hashagg = false; set jit_above_cost = 0; explain (costs off) -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); - QUERY PLAN ---------------------------------------------------------------- +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); + QUERY PLAN +------------------------------------ GroupAggregate - Group Key: ((g.g % 1000)), ((g.g % 100)), ((g.g % 10)) - Group Key: ((g.g % 1000)), ((g.g % 100)) - Group Key: ((g.g % 1000)) + Group Key: g1000, g100, g10 + Group Key: g1000, g100 + Group Key: g1000 Group Key: () - Sort Key: ((g.g % 100)), ((g.g % 10)) - Group Key: ((g.g % 100)), ((g.g % 10)) - Group Key: ((g.g % 100)) - Sort Key: ((g.g % 10)), ((g.g % 1000)) - Group Key: ((g.g % 10)), ((g.g % 1000)) - Group Key: ((g.g % 10)) + Sort Key: g100, g10 + Group Key: g100, g10 + Group Key: g100 + Sort Key: g10, g1000 + Group Key: g10, g1000 + Group Key: g10 -> Sort - Sort Key: ((g.g % 1000)), ((g.g % 100)), ((g.g % 10)) - -> Function Scan on generate_series g + Sort Key: g1000, g100, g10 + -> Seq Scan on gs_data_1 (14 rows) create table gs_group_1 as -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); -- Produce results with hash aggregation. set enable_hashagg = true; set enable_sort = false; explain (costs off) -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); - QUERY PLAN ---------------------------------------------------- +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); + QUERY PLAN +------------------------------ MixedAggregate - Hash Key: (g.g % 1000), (g.g % 100), (g.g % 10) - Hash Key: (g.g % 1000), (g.g % 100) - Hash Key: (g.g % 1000) - Hash Key: (g.g % 100), (g.g % 10) - Hash Key: (g.g % 100) - Hash Key: (g.g % 10), (g.g % 1000) - Hash Key: (g.g % 10) + Hash Key: g1000, g100, g10 + Hash Key: g1000, g100 + Hash Key: g1000 + Hash Key: g100, g10 + Hash Key: g100 + Hash Key: g10, g1000 + Hash Key: g10 Group Key: () - -> Function Scan on generate_series g + -> Seq Scan on gs_data_1 (10 rows) create table gs_hash_1 as -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); set enable_sort = true; set work_mem to default; -- Compare results @@ -1710,5 +1707,4 @@ set work_mem to default; drop table gs_group_1; drop table gs_hash_1; -SET enable_groupingsets_hash_disk TO DEFAULT; -- end diff --git a/src/test/regress/expected/password.out b/src/test/regress/expected/password.out index 2b852aa324dd8..7c84c9da33777 100644 --- a/src/test/regress/expected/password.out +++ b/src/test/regress/expected/password.out @@ -5,13 +5,14 @@ SET password_encryption = 'novalue'; -- error ERROR: invalid value for parameter "password_encryption": "novalue" HINT: Available values: md5, scram-sha-256. -SET password_encryption = true; -- ok +SET password_encryption = true; -- error +ERROR: invalid value for parameter "password_encryption": "true" +HINT: Available values: md5, scram-sha-256. SET password_encryption = 'md5'; -- ok SET password_encryption = 'scram-sha-256'; -- ok -- consistency of password entries SET password_encryption = 'md5'; CREATE ROLE regress_passwd1 PASSWORD 'role_pwd1'; -SET password_encryption = 'on'; CREATE ROLE regress_passwd2 PASSWORD 'role_pwd2'; SET password_encryption = 'scram-sha-256'; CREATE ROLE regress_passwd3 PASSWORD 'role_pwd3'; diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index 7caf0c9b6b93f..3ec22c20ea1b2 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -191,7 +191,8 @@ CREATE TABLE atest12 as SELECT x AS a, 10001 - x AS b FROM generate_series(1,10000) x; CREATE INDEX ON atest12 (a); CREATE INDEX ON atest12 (abs(a)); --- results below depend on having quite accurate stats for atest12 +-- results below depend on having quite accurate stats for atest12, so... +ALTER TABLE atest12 SET (autovacuum_enabled = off); SET default_statistics_target = 10000; VACUUM ANALYZE atest12; RESET default_statistics_target; diff --git a/src/test/regress/expected/sysviews.out b/src/test/regress/expected/sysviews.out index a126f0ad613d2..01b7786f01421 100644 --- a/src/test/regress/expected/sysviews.out +++ b/src/test/regress/expected/sysviews.out @@ -74,9 +74,7 @@ select name, setting from pg_settings where name like 'enable%'; --------------------------------+--------- enable_bitmapscan | on enable_gathermerge | on - enable_groupingsets_hash_disk | off enable_hashagg | on - enable_hashagg_disk | on enable_hashjoin | on enable_incrementalsort | on enable_indexonlyscan | on @@ -92,7 +90,7 @@ select name, setting from pg_settings where name like 'enable%'; enable_seqscan | on enable_sort | on enable_tidscan | on -(20 rows) +(18 rows) -- Test that the pg_timezone_names and pg_timezone_abbrevs views are -- more-or-less working. We can't test their contents in any great detail diff --git a/src/test/regress/input/largeobject.source b/src/test/regress/input/largeobject.source index f40338ddf8875..ff42697d11238 100644 --- a/src/test/regress/input/largeobject.source +++ b/src/test/regress/input/largeobject.source @@ -180,7 +180,7 @@ UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS inte -- verify length of large object SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values; --- with the default BLKSZ, LOBLKSZ = 2048, so this positions us for a block +-- with the default BLCKSZ, LOBLKSIZE = 2048, so this positions us for a block -- edge case SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values; diff --git a/src/test/regress/output/largeobject.source b/src/test/regress/output/largeobject.source index ea712a5e2fd29..91090f0fde4fb 100644 --- a/src/test/regress/output/largeobject.source +++ b/src/test/regress/output/largeobject.source @@ -326,7 +326,7 @@ SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values; 670800 (1 row) --- with the default BLKSZ, LOBLKSZ = 2048, so this positions us for a block +-- with the default BLCKSZ, LOBLKSIZE = 2048, so this positions us for a block -- edge case SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values; lo_lseek diff --git a/src/test/regress/output/largeobject_1.source b/src/test/regress/output/largeobject_1.source index f01596cea7bed..ec01f3e47848a 100644 --- a/src/test/regress/output/largeobject_1.source +++ b/src/test/regress/output/largeobject_1.source @@ -326,7 +326,7 @@ SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values; 680800 (1 row) --- with the default BLKSZ, LOBLKSZ = 2048, so this positions us for a block +-- with the default BLCKSZ, LOBLKSIZE = 2048, so this positions us for a block -- edge case SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values; lo_lseek diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index 38b2b1e8e1ba4..f11a3b9e26e62 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -465,8 +465,7 @@ convert_sourcefiles_in(const char *source_subdir, const char *dest_dir, const ch { char testtablespace[MAXPGPATH]; char indir[MAXPGPATH]; - struct stat st; - int ret; + char outdir_sub[MAXPGPATH]; char **name; char **names; int count = 0; @@ -474,8 +473,7 @@ convert_sourcefiles_in(const char *source_subdir, const char *dest_dir, const ch snprintf(indir, MAXPGPATH, "%s/%s", inputdir, source_subdir); /* Check that indir actually exists and is a directory */ - ret = stat(indir, &st); - if (ret != 0 || !S_ISDIR(st.st_mode)) + if (!directory_exists(indir)) { /* * No warning, to avoid noise in tests that do not have these @@ -489,6 +487,11 @@ convert_sourcefiles_in(const char *source_subdir, const char *dest_dir, const ch /* Error logged in pgfnames */ exit(2); + /* Create the "dest" subdirectory if not present */ + snprintf(outdir_sub, MAXPGPATH, "%s/%s", dest_dir, dest_subdir); + if (!directory_exists(outdir_sub)) + make_directory(outdir_sub); + snprintf(testtablespace, MAXPGPATH, "%s/testtablespace", outputdir); #ifdef WIN32 diff --git a/src/test/regress/sql/aggregates.sql b/src/test/regress/sql/aggregates.sql index 9480abd577e73..044d5155073c0 100644 --- a/src/test/regress/sql/aggregates.sql +++ b/src/test/regress/sql/aggregates.sql @@ -39,8 +39,22 @@ SELECT var_samp(b::numeric) FROM aggtest; -- population variance is defined for a single tuple, sample variance -- is not -SELECT var_pop(1.0), var_samp(2.0); +SELECT var_pop(1.0::float8), var_samp(2.0::float8); +SELECT stddev_pop(3.0::float8), stddev_samp(4.0::float8); +SELECT var_pop('inf'::float8), var_samp('inf'::float8); +SELECT stddev_pop('inf'::float8), stddev_samp('inf'::float8); +SELECT var_pop('nan'::float8), var_samp('nan'::float8); +SELECT stddev_pop('nan'::float8), stddev_samp('nan'::float8); +SELECT var_pop(1.0::float4), var_samp(2.0::float4); +SELECT stddev_pop(3.0::float4), stddev_samp(4.0::float4); +SELECT var_pop('inf'::float4), var_samp('inf'::float4); +SELECT stddev_pop('inf'::float4), stddev_samp('inf'::float4); +SELECT var_pop('nan'::float4), var_samp('nan'::float4); +SELECT stddev_pop('nan'::float4), stddev_samp('nan'::float4); +SELECT var_pop(1.0::numeric), var_samp(2.0::numeric); SELECT stddev_pop(3.0::numeric), stddev_samp(4.0::numeric); +SELECT var_pop('nan'::numeric), var_samp('nan'::numeric); +SELECT stddev_pop('nan'::numeric), stddev_samp('nan'::numeric); -- verify correct results for null and NaN inputs select sum(null::int4) from generate_series(1,3); @@ -81,6 +95,11 @@ SELECT regr_slope(b, a), regr_intercept(b, a) FROM aggtest; SELECT covar_pop(b, a), covar_samp(b, a) FROM aggtest; SELECT corr(b, a) FROM aggtest; +-- check single-tuple behavior +SELECT covar_pop(1::float8,2::float8), covar_samp(3::float8,4::float8); +SELECT covar_pop(1::float8,'inf'::float8), covar_samp(3::float8,'inf'::float8); +SELECT covar_pop(1::float8,'nan'::float8), covar_samp(3::float8,'nan'::float8); + -- test accum and combine functions directly CREATE TABLE regr_test (x float8, y float8); INSERT INTO regr_test VALUES (10,150),(20,250),(30,350),(80,540),(100,200); @@ -1000,15 +1019,39 @@ SET parallel_setup_cost = 0; SET parallel_tuple_cost = 0; SET min_parallel_table_scan_size = 0; SET max_parallel_workers_per_gather = 4; +SET parallel_leader_participation = off; SET enable_indexonlyscan = off; -- variance(int4) covers numeric_poly_combine -- sum(int8) covers int8_avg_combine -- regr_count(float8, float8) covers int8inc_float8_float8 and aggregates with > 1 arg EXPLAIN (COSTS OFF, VERBOSE) - SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) FROM tenk1; - -SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) FROM tenk1; +SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; + +SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; + +-- variance(int8) covers numeric_combine +-- avg(numeric) covers numeric_avg_combine +EXPLAIN (COSTS OFF, VERBOSE) +SELECT variance(unique1::int8), avg(unique1::numeric) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; + +SELECT variance(unique1::int8), avg(unique1::numeric) +FROM (SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1 + UNION ALL SELECT * FROM tenk1) u; ROLLBACK; @@ -1059,6 +1102,14 @@ set enable_sort to default; set work_mem='64kB'; +create table agg_data_2k as +select g from generate_series(0, 1999) g; +analyze agg_data_2k; + +create table agg_data_20k as +select g from generate_series(0, 19999) g; +analyze agg_data_20k; + -- Produce results with sorting. set enable_hashagg = false; @@ -1067,13 +1118,11 @@ set jit_above_cost = 0; explain (costs off) select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; + from agg_data_20k group by g%10000; create table agg_group_1 as select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; + from agg_data_20k group by g%10000; create table agg_group_2 as select * from @@ -1082,7 +1131,7 @@ select * from select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g + from agg_data_2k where g < r.a group by g/2) as s; @@ -1090,13 +1139,11 @@ set jit_above_cost to default; create table agg_group_3 as select (g/2)::numeric as c1, sum(7::int4) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; create table agg_group_4 as select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; -- Produce results with hash aggregation @@ -1107,13 +1154,11 @@ set jit_above_cost = 0; explain (costs off) select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; + from agg_data_20k group by g%10000; create table agg_hash_1 as select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 - from generate_series(0, 19999) g - group by g%10000; + from agg_data_20k group by g%10000; create table agg_hash_2 as select * from @@ -1122,7 +1167,7 @@ select * from select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g + from agg_data_2k where g < r.a group by g/2) as s; @@ -1130,13 +1175,11 @@ set jit_above_cost to default; create table agg_hash_3 as select (g/2)::numeric as c1, sum(7::int4) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; create table agg_hash_4 as select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 - from generate_series(0, 1999) g - group by g/2; + from agg_data_2k group by g/2; set enable_sort = true; set work_mem to default; diff --git a/src/test/regress/sql/groupingsets.sql b/src/test/regress/sql/groupingsets.sql index 77e196798ace3..e6c28743a4411 100644 --- a/src/test/regress/sql/groupingsets.sql +++ b/src/test/regress/sql/groupingsets.sql @@ -444,10 +444,17 @@ select v||'a', case when grouping(v||'a') = 1 then 1 else 0 end, count(*) -- -- Compare results between plans using sorting and plans using hash -- aggregation. Force spilling in both cases by setting work_mem low --- and turning on enable_groupingsets_hash_disk. +-- and altering the statistics. -- -SET enable_groupingsets_hash_disk = true; +create table gs_data_1 as +select g%1000 as g1000, g%100 as g100, g%10 as g10, g + from generate_series(0,1999) g; + +analyze gs_data_1; +alter table gs_data_1 set (autovacuum_enabled = 'false'); +update pg_class set reltuples = 10 where relname='gs_data_1'; + SET work_mem='64kB'; -- Produce results with sorting. @@ -456,16 +463,12 @@ set enable_hashagg = false; set jit_above_cost = 0; explain (costs off) -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); create table gs_group_1 as -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); -- Produce results with hash aggregation. @@ -473,17 +476,12 @@ set enable_hashagg = true; set enable_sort = false; explain (costs off) -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); create table gs_hash_1 as -select g100, g10, sum(g::numeric), count(*), max(g::text) from - (select g%1000 as g1000, g%100 as g100, g%10 as g10, g - from generate_series(0,1999) g) s -group by cube (g1000, g100,g10); - +select g100, g10, sum(g::numeric), count(*), max(g::text) +from gs_data_1 group by cube (g1000, g100,g10); set enable_sort = true; set work_mem to default; @@ -497,6 +495,4 @@ set work_mem to default; drop table gs_group_1; drop table gs_hash_1; -SET enable_groupingsets_hash_disk TO DEFAULT; - -- end diff --git a/src/test/regress/sql/password.sql b/src/test/regress/sql/password.sql index 1e7e19eafa872..98f49916e5d5f 100644 --- a/src/test/regress/sql/password.sql +++ b/src/test/regress/sql/password.sql @@ -4,14 +4,13 @@ -- Tests for GUC password_encryption SET password_encryption = 'novalue'; -- error -SET password_encryption = true; -- ok +SET password_encryption = true; -- error SET password_encryption = 'md5'; -- ok SET password_encryption = 'scram-sha-256'; -- ok -- consistency of password entries SET password_encryption = 'md5'; CREATE ROLE regress_passwd1 PASSWORD 'role_pwd1'; -SET password_encryption = 'on'; CREATE ROLE regress_passwd2 PASSWORD 'role_pwd2'; SET password_encryption = 'scram-sha-256'; CREATE ROLE regress_passwd3 PASSWORD 'role_pwd3'; diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql index 0ab5245b1ebf9..3550f61587a84 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -136,7 +136,8 @@ CREATE TABLE atest12 as SELECT x AS a, 10001 - x AS b FROM generate_series(1,10000) x; CREATE INDEX ON atest12 (a); CREATE INDEX ON atest12 (abs(a)); --- results below depend on having quite accurate stats for atest12 +-- results below depend on having quite accurate stats for atest12, so... +ALTER TABLE atest12 SET (autovacuum_enabled = off); SET default_statistics_target = 10000; VACUUM ANALYZE atest12; RESET default_statistics_target; diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index c21c94dc1f76e..20da7985c1011 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -138,14 +138,14 @@ sub mkvcbuild } our @pgcommonfrontendfiles = ( - @pgcommonallfiles, qw(fe_archive.c fe_memutils.c - file_utils.c logging.c restricted_token.c)); + @pgcommonallfiles, qw(fe_memutils.c file_utils.c + logging.c restricted_token.c)); our @pgcommonbkndfiles = @pgcommonallfiles; our @pgfeutilsfiles = qw( - cancel.c conditional.c mbprint.c print.c psqlscan.l psqlscan.c - simple_list.c string_utils.c recovery_gen.c); + archive.c cancel.c conditional.c mbprint.c print.c psqlscan.l + psqlscan.c simple_list.c string_utils.c recovery_gen.c); $libpgport = $solution->AddProject('libpgport', 'lib', 'misc'); $libpgport->AddDefine('FRONTEND'); diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index 4a53a004b7828..3365ee578c3db 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -571,8 +571,6 @@ sub upgradecheck my $outputdir = "$tmp_root/regress"; my @EXTRA_REGRESS_OPTS = ("--outputdir=$outputdir"); mkdir "$outputdir" || die $!; - mkdir "$outputdir/sql" || die $!; - mkdir "$outputdir/expected" || die $!; mkdir "$outputdir/testtablespace" || die $!; my $logdir = "$topdir/src/bin/pg_upgrade/log"; diff --git a/src/tools/valgrind.supp b/src/tools/valgrind.supp index acdb6206dd90c..e3a179d210be3 100644 --- a/src/tools/valgrind.supp +++ b/src/tools/valgrind.supp @@ -134,20 +134,6 @@ fun:IsBinaryCoercible } -# Atomic writes to 64bit atomic vars uses compare/exchange to -# guarantee atomic writes of 64bit variables. pg_atomic_write is used -# during initialization of the atomic variable; that leads to an -# initial read of the old, undefined, memory value. But that's just to -# make sure the swap works correctly. -{ - uninitialized_atomic_init_u64 - Memcheck:Cond - fun:pg_atomic_exchange_u64_impl - fun:pg_atomic_write_u64_impl - fun:pg_atomic_init_u64_impl -} - - # Python's allocator does some low-level tricks for efficiency. Those # can be disabled for better instrumentation; but few people testing # postgres will have such a build of python. So add broad