diff --git a/contrib/amcheck/expected/check_btree.out b/contrib/amcheck/expected/check_btree.out
index 13848b7449b7f..5a3f1ef737cf8 100644
--- a/contrib/amcheck/expected/check_btree.out
+++ b/contrib/amcheck/expected/check_btree.out
@@ -97,8 +97,8 @@ SELECT bt_index_parent_check('bttest_b_idx');
SELECT * FROM pg_locks
WHERE relation = ANY(ARRAY['bttest_a', 'bttest_a_idx', 'bttest_b', 'bttest_b_idx']::regclass[])
AND pid = pg_backend_pid();
- locktype | database | relation | page | tuple | virtualxid | transactionid | classid | objid | objsubid | virtualtransaction | pid | mode | granted | fastpath
-----------+----------+----------+------+-------+------------+---------------+---------+-------+----------+--------------------+-----+------+---------+----------
+ locktype | database | relation | page | tuple | virtualxid | transactionid | classid | objid | objsubid | virtualtransaction | pid | mode | granted | fastpath | waitstart
+----------+----------+----------+------+-------+------------+---------------+---------+-------+----------+--------------------+-----+------+---------+----------+-----------
(0 rows)
COMMIT;
diff --git a/contrib/amcheck/verify_nbtree.c b/contrib/amcheck/verify_nbtree.c
index b8c7793d9e06a..4db1a64d5142e 100644
--- a/contrib/amcheck/verify_nbtree.c
+++ b/contrib/amcheck/verify_nbtree.c
@@ -535,7 +535,7 @@ bt_check_every_level(Relation rel, Relation heaprel, bool heapkeyspace,
if (metad->btm_fastroot != metad->btm_root)
ereport(DEBUG1,
(errcode(ERRCODE_NO_DATA),
- errmsg("harmless fast root mismatch in index %s",
+ errmsg_internal("harmless fast root mismatch in index %s",
RelationGetRelationName(rel)),
errdetail_internal("Fast root block %u (level %u) differs from true root block %u (level %u).",
metad->btm_fastroot, metad->btm_fastlevel,
@@ -721,7 +721,7 @@ bt_check_level_from_leftmost(BtreeCheckState *state, BtreeLevel level)
else
ereport(DEBUG1,
(errcode(ERRCODE_NO_DATA),
- errmsg("block %u of index \"%s\" ignored",
+ errmsg_internal("block %u of index \"%s\" ignored",
current, RelationGetRelationName(state->rel))));
goto nextpage;
}
@@ -979,7 +979,7 @@ bt_recheck_sibling_links(BtreeCheckState *state,
/* Report split in left sibling, not target (or new target) */
ereport(DEBUG1,
(errcode(ERRCODE_INTERNAL_ERROR),
- errmsg("harmless concurrent page split detected in index \"%s\"",
+ errmsg_internal("harmless concurrent page split detected in index \"%s\"",
RelationGetRelationName(state->rel)),
errdetail_internal("Block=%u new right sibling=%u original right sibling=%u.",
leftcurrent, newtargetblock,
@@ -1605,7 +1605,7 @@ bt_right_page_check_scankey(BtreeCheckState *state)
targetnext = opaque->btpo_next;
ereport(DEBUG1,
(errcode(ERRCODE_NO_DATA),
- errmsg("level %u leftmost page of index \"%s\" was found deleted or half dead",
+ errmsg_internal("level %u leftmost page of index \"%s\" was found deleted or half dead",
opaque->btpo.level, RelationGetRelationName(state->rel)),
errdetail_internal("Deleted page found when building scankey from right sibling.")));
@@ -1733,7 +1733,7 @@ bt_right_page_check_scankey(BtreeCheckState *state)
*/
ereport(DEBUG1,
(errcode(ERRCODE_NO_DATA),
- errmsg("%s block %u of index \"%s\" has no first data item",
+ errmsg_internal("%s block %u of index \"%s\" has no first data item",
P_ISLEAF(opaque) ? "leaf" : "internal", targetnext,
RelationGetRelationName(state->rel))));
return NULL;
@@ -2287,7 +2287,7 @@ bt_downlink_missing_check(BtreeCheckState *state, bool rightsplit,
{
ereport(DEBUG1,
(errcode(ERRCODE_NO_DATA),
- errmsg("harmless interrupted page split detected in index %s",
+ errmsg_internal("harmless interrupted page split detected in index %s",
RelationGetRelationName(state->rel)),
errdetail_internal("Block=%u level=%u left sibling=%u page lsn=%X/%X.",
blkno, opaque->btpo.level,
diff --git a/contrib/pageinspect/expected/gist.out b/contrib/pageinspect/expected/gist.out
index 5f7d8cea71b83..86c9e9caa9dce 100644
--- a/contrib/pageinspect/expected/gist.out
+++ b/contrib/pageinspect/expected/gist.out
@@ -31,25 +31,25 @@ SELECT * FROM gist_page_opaque_info(get_raw_page('test_gist_idx', 2));
COMMIT;
SELECT * FROM gist_page_items(get_raw_page('test_gist_idx', 0), 'test_gist_idx');
- itemoffset | ctid | itemlen | keys
-------------+-----------+---------+-------------------
- 1 | (1,65535) | 40 | (p)=((166,166))
- 2 | (2,65535) | 40 | (p)=((332,332))
- 3 | (3,65535) | 40 | (p)=((498,498))
- 4 | (4,65535) | 40 | (p)=((664,664))
- 5 | (5,65535) | 40 | (p)=((830,830))
- 6 | (6,65535) | 40 | (p)=((996,996))
- 7 | (7,65535) | 40 | (p)=((1000,1000))
+ itemoffset | ctid | itemlen | dead | keys
+------------+-----------+---------+------+-------------------
+ 1 | (1,65535) | 40 | f | (p)=((166,166))
+ 2 | (2,65535) | 40 | f | (p)=((332,332))
+ 3 | (3,65535) | 40 | f | (p)=((498,498))
+ 4 | (4,65535) | 40 | f | (p)=((664,664))
+ 5 | (5,65535) | 40 | f | (p)=((830,830))
+ 6 | (6,65535) | 40 | f | (p)=((996,996))
+ 7 | (7,65535) | 40 | f | (p)=((1000,1000))
(7 rows)
SELECT * FROM gist_page_items(get_raw_page('test_gist_idx', 1), 'test_gist_idx') LIMIT 5;
- itemoffset | ctid | itemlen | keys
-------------+-------+---------+-------------
- 1 | (0,1) | 40 | (p)=((1,1))
- 2 | (0,2) | 40 | (p)=((2,2))
- 3 | (0,3) | 40 | (p)=((3,3))
- 4 | (0,4) | 40 | (p)=((4,4))
- 5 | (0,5) | 40 | (p)=((5,5))
+ itemoffset | ctid | itemlen | dead | keys
+------------+-------+---------+------+-------------
+ 1 | (0,1) | 40 | f | (p)=((1,1))
+ 2 | (0,2) | 40 | f | (p)=((2,2))
+ 3 | (0,3) | 40 | f | (p)=((3,3))
+ 4 | (0,4) | 40 | f | (p)=((4,4))
+ 5 | (0,5) | 40 | f | (p)=((5,5))
(5 rows)
-- gist_page_items_bytea prints the raw key data as a bytea. The output of that is
diff --git a/contrib/pageinspect/gistfuncs.c b/contrib/pageinspect/gistfuncs.c
index d5da1ea839a57..eb9f6303df63f 100644
--- a/contrib/pageinspect/gistfuncs.c
+++ b/contrib/pageinspect/gistfuncs.c
@@ -103,6 +103,7 @@ gist_page_items_bytea(PG_FUNCTION_ARGS)
MemoryContext oldcontext;
Page page;
OffsetNumber offset;
+ OffsetNumber maxoff = InvalidOffsetNumber;
if (!superuser())
ereport(ERROR,
@@ -135,15 +136,18 @@ gist_page_items_bytea(PG_FUNCTION_ARGS)
page = get_page_from_raw(raw_page);
+ /* Avoid bogus PageGetMaxOffsetNumber() call with deleted pages */
if (GistPageIsDeleted(page))
elog(NOTICE, "page is deleted");
+ else
+ maxoff = PageGetMaxOffsetNumber(page);
for (offset = FirstOffsetNumber;
- offset <= PageGetMaxOffsetNumber(page);
+ offset <= maxoff;
offset++)
{
- Datum values[4];
- bool nulls[4];
+ Datum values[5];
+ bool nulls[5];
ItemId id;
IndexTuple itup;
bytea *tuple_bytea;
@@ -166,7 +170,8 @@ gist_page_items_bytea(PG_FUNCTION_ARGS)
tuple_bytea = (bytea *) palloc(tuple_len + VARHDRSZ);
SET_VARSIZE(tuple_bytea, tuple_len + VARHDRSZ);
memcpy(VARDATA(tuple_bytea), itup, tuple_len);
- values[3] = PointerGetDatum(tuple_bytea);
+ values[3] = BoolGetDatum(ItemIdIsDead(id));
+ values[4] = PointerGetDatum(tuple_bytea);
tuplestore_putvalues(tupstore, tupdesc, values, nulls);
}
@@ -187,6 +192,7 @@ gist_page_items(PG_FUNCTION_ARGS)
MemoryContext oldcontext;
Page page;
OffsetNumber offset;
+ OffsetNumber maxoff = InvalidOffsetNumber;
if (!superuser())
ereport(ERROR,
@@ -222,15 +228,18 @@ gist_page_items(PG_FUNCTION_ARGS)
page = get_page_from_raw(raw_page);
+ /* Avoid bogus PageGetMaxOffsetNumber() call with deleted pages */
if (GistPageIsDeleted(page))
elog(NOTICE, "page is deleted");
+ else
+ maxoff = PageGetMaxOffsetNumber(page);
for (offset = FirstOffsetNumber;
- offset <= PageGetMaxOffsetNumber(page);
+ offset <= maxoff;
offset++)
{
- Datum values[4];
- bool nulls[4];
+ Datum values[5];
+ bool nulls[5];
ItemId id;
IndexTuple itup;
Datum itup_values[INDEX_MAX_KEYS];
@@ -252,14 +261,15 @@ gist_page_items(PG_FUNCTION_ARGS)
values[0] = DatumGetInt16(offset);
values[1] = ItemPointerGetDatum(&itup->t_tid);
values[2] = Int32GetDatum((int) IndexTupleSize(itup));
+ values[3] = BoolGetDatum(ItemIdIsDead(id));
key_desc = BuildIndexValueDescription(indexRel, itup_values, itup_isnull);
if (key_desc)
- values[3] = CStringGetTextDatum(key_desc);
+ values[4] = CStringGetTextDatum(key_desc);
else
{
- values[3] = (Datum) 0;
- nulls[3] = true;
+ values[4] = (Datum) 0;
+ nulls[4] = true;
}
tuplestore_putvalues(tupstore, tupdesc, values, nulls);
diff --git a/contrib/pageinspect/pageinspect--1.8--1.9.sql b/contrib/pageinspect/pageinspect--1.8--1.9.sql
index b4248d791f0d1..79a42a7b11e03 100644
--- a/contrib/pageinspect/pageinspect--1.8--1.9.sql
+++ b/contrib/pageinspect/pageinspect--1.8--1.9.sql
@@ -22,6 +22,7 @@ CREATE FUNCTION gist_page_items_bytea(IN page bytea,
OUT itemoffset smallint,
OUT ctid tid,
OUT itemlen smallint,
+ OUT dead boolean,
OUT key_data bytea)
RETURNS SETOF record
AS 'MODULE_PATHNAME', 'gist_page_items_bytea'
@@ -35,6 +36,7 @@ CREATE FUNCTION gist_page_items(IN page bytea,
OUT itemoffset smallint,
OUT ctid tid,
OUT itemlen smallint,
+ OUT dead boolean,
OUT keys text)
RETURNS SETOF record
AS 'MODULE_PATHNAME', 'gist_page_items'
diff --git a/contrib/pg_prewarm/autoprewarm.c b/contrib/pg_prewarm/autoprewarm.c
index 4c08d2b386b9c..b3f73ea92d651 100644
--- a/contrib/pg_prewarm/autoprewarm.c
+++ b/contrib/pg_prewarm/autoprewarm.c
@@ -697,7 +697,7 @@ apw_dump_now(bool is_bgworker, bool dump_unlogged)
apw_state->pid_using_dumpfile = InvalidPid;
ereport(DEBUG1,
- (errmsg("wrote block details for %d blocks", num_blocks)));
+ (errmsg_internal("wrote block details for %d blocks", num_blocks)));
return num_blocks;
}
diff --git a/contrib/pgcrypto/internal-sha2.c b/contrib/pgcrypto/internal-sha2.c
index 0fe53e15afabb..ecf3004e95b96 100644
--- a/contrib/pgcrypto/internal-sha2.c
+++ b/contrib/pgcrypto/internal-sha2.c
@@ -118,7 +118,7 @@ int_sha2_finish(PX_MD *h, uint8 *dst)
{
pg_cryptohash_ctx *ctx = (pg_cryptohash_ctx *) h->p.ptr;
- if (pg_cryptohash_final(ctx, dst) < 0)
+ if (pg_cryptohash_final(ctx, dst, h->result_size(h)) < 0)
elog(ERROR, "could not finalize %s context", "SHA2");
}
diff --git a/contrib/pgcrypto/internal.c b/contrib/pgcrypto/internal.c
index ef6ce2fb1ef94..dd45fee7ed69e 100644
--- a/contrib/pgcrypto/internal.c
+++ b/contrib/pgcrypto/internal.c
@@ -106,7 +106,7 @@ int_md5_finish(PX_MD *h, uint8 *dst)
{
pg_cryptohash_ctx *ctx = (pg_cryptohash_ctx *) h->p.ptr;
- if (pg_cryptohash_final(ctx, dst) < 0)
+ if (pg_cryptohash_final(ctx, dst, h->result_size(h)) < 0)
elog(ERROR, "could not finalize %s context", "MD5");
}
@@ -156,7 +156,7 @@ int_sha1_finish(PX_MD *h, uint8 *dst)
{
pg_cryptohash_ctx *ctx = (pg_cryptohash_ctx *) h->p.ptr;
- if (pg_cryptohash_final(ctx, dst) < 0)
+ if (pg_cryptohash_final(ctx, dst, h->result_size(h)) < 0)
elog(ERROR, "could not finalize %s context", "SHA1");
}
diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c
index 69179d4104d5c..21fdeff8afd54 100644
--- a/contrib/pgstattuple/pgstattuple.c
+++ b/contrib/pgstattuple/pgstattuple.c
@@ -430,7 +430,7 @@ pgstat_btree_page(pgstattuple_type *stat, Relation rel, BlockNumber blkno,
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
if (P_IGNORE(opaque))
{
- /* recyclable page */
+ /* deleted or half-dead page */
stat->free_space += BLCKSZ;
}
else if (P_ISLEAF(opaque))
@@ -440,7 +440,7 @@ pgstat_btree_page(pgstattuple_type *stat, Relation rel, BlockNumber blkno,
}
else
{
- /* root or node */
+ /* internal page */
}
}
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index b09dce63f5ffa..0649b6b81cd92 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -613,6 +613,24 @@ SELECT t1."C 1", t2.c1, t3.c1 FROM "S 1"."T 1" t1 full join ft1 t2 full join ft2
RESET enable_hashjoin;
RESET enable_nestloop;
+-- Test executing assertion in estimate_path_cost_size() that makes sure that
+-- retrieved_rows for foreign rel re-used to cost pre-sorted foreign paths is
+-- a sensible value even when the rel has tuples=0
+CREATE TABLE loct_empty (c1 int NOT NULL, c2 text);
+CREATE FOREIGN TABLE ft_empty (c1 int NOT NULL, c2 text)
+ SERVER loopback OPTIONS (table_name 'loct_empty');
+INSERT INTO loct_empty
+ SELECT id, 'AAA' || to_char(id, 'FM000') FROM generate_series(1, 100) id;
+DELETE FROM loct_empty;
+ANALYZE ft_empty;
+EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM ft_empty ORDER BY c1;
+ QUERY PLAN
+-------------------------------------------------------------------------------
+ Foreign Scan on public.ft_empty
+ Output: c1, c2
+ Remote SQL: SELECT c1, c2 FROM public.loct_empty ORDER BY c1 ASC NULLS LAST
+(3 rows)
+
-- ===================================================================
-- WHERE with remotely-executable conditions
-- ===================================================================
@@ -8928,7 +8946,7 @@ DO $d$
END;
$d$;
ERROR: invalid option "password"
-HINT: Valid options in this context are: service, passfile, channel_binding, connect_timeout, dbname, host, hostaddr, port, options, application_name, keepalives, keepalives_idle, keepalives_interval, keepalives_count, tcp_user_timeout, sslmode, sslcompression, sslcert, sslkey, sslrootcert, sslcrl, requirepeer, ssl_min_protocol_version, ssl_max_protocol_version, gssencmode, krbsrvname, gsslib, target_session_attrs, use_remote_estimate, fdw_startup_cost, fdw_tuple_cost, extensions, updatable, fetch_size, batch_size
+HINT: Valid options in this context are: service, passfile, channel_binding, connect_timeout, dbname, host, hostaddr, port, options, application_name, keepalives, keepalives_idle, keepalives_interval, keepalives_count, tcp_user_timeout, sslmode, sslcompression, sslcert, sslkey, sslrootcert, sslcrl, sslcrldir, requirepeer, ssl_min_protocol_version, ssl_max_protocol_version, gssencmode, krbsrvname, gsslib, target_session_attrs, use_remote_estimate, fdw_startup_cost, fdw_tuple_cost, extensions, updatable, fetch_size, batch_size
CONTEXT: SQL statement "ALTER SERVER loopback_nopw OPTIONS (ADD password 'dummypw')"
PL/pgSQL function inline_code_block line 3 at EXECUTE
-- If we add a password for our user mapping instead, we should get a different
@@ -9396,5 +9414,26 @@ SELECT COUNT(*) FROM batch_table;
66
(1 row)
+-- Check that enabling batched inserts doesn't interfere with cross-partition
+-- updates
+CREATE TABLE batch_cp_upd_test (a int) PARTITION BY LIST (a);
+CREATE TABLE batch_cp_upd_test1 (LIKE batch_cp_upd_test);
+CREATE FOREIGN TABLE batch_cp_upd_test1_f
+ PARTITION OF batch_cp_upd_test
+ FOR VALUES IN (1)
+ SERVER loopback
+ OPTIONS (table_name 'batch_cp_upd_test1', batch_size '10');
+CREATE TABLE batch_cp_up_test1 PARTITION OF batch_cp_upd_test
+ FOR VALUES IN (2);
+INSERT INTO batch_cp_upd_test VALUES (1), (2);
+-- The following moves a row from the local partition to the foreign one
+UPDATE batch_cp_upd_test t SET a = 1 FROM (VALUES (1), (2)) s(a) WHERE t.a = s.a;
+SELECT tableoid::regclass, * FROM batch_cp_upd_test;
+ tableoid | a
+----------------------+---
+ batch_cp_upd_test1_f | 1
+ batch_cp_upd_test1_f | 1
+(2 rows)
+
-- Clean up
-DROP TABLE batch_table CASCADE;
+DROP TABLE batch_table, batch_cp_upd_test CASCADE;
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index 2ce42ce3f113d..35b48575c5935 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -1934,17 +1934,26 @@ static int
postgresGetForeignModifyBatchSize(ResultRelInfo *resultRelInfo)
{
int batch_size;
+ PgFdwModifyState *fmstate = resultRelInfo->ri_FdwState ?
+ (PgFdwModifyState *) resultRelInfo->ri_FdwState :
+ NULL;
/* should be called only once */
Assert(resultRelInfo->ri_BatchSize == 0);
+ /*
+ * Should never get called when the insert is being performed as part of
+ * a row movement operation.
+ */
+ Assert(fmstate == NULL || fmstate->aux_fmstate == NULL);
+
/*
* In EXPLAIN without ANALYZE, ri_fdwstate is NULL, so we have to lookup
* the option directly in server/table options. Otherwise just use the
* value we determined earlier.
*/
- if (resultRelInfo->ri_FdwState)
- batch_size = ((PgFdwModifyState *) resultRelInfo->ri_FdwState)->batch_size;
+ if (fmstate)
+ batch_size = fmstate->batch_size;
else
batch_size = get_batch_size_option(resultRelInfo->ri_RelationDesc);
@@ -2025,7 +2034,7 @@ postgresBeginForeignInsert(ModifyTableState *mtstate,
PgFdwModifyState *fmstate;
ModifyTable *plan = castNode(ModifyTable, mtstate->ps.plan);
EState *estate = mtstate->ps.state;
- Index resultRelation = resultRelInfo->ri_RangeTableIndex;
+ Index resultRelation;
Relation rel = resultRelInfo->ri_RelationDesc;
RangeTblEntry *rte;
TupleDesc tupdesc = RelationGetDescr(rel);
@@ -2077,7 +2086,8 @@ postgresBeginForeignInsert(ModifyTableState *mtstate,
}
/*
- * If the foreign table is a partition, we need to create a new RTE
+ * If the foreign table is a partition that doesn't have a corresponding
+ * RTE entry, we need to create a new RTE
* describing the foreign table for use by deparseInsertSql and
* create_foreign_modify() below, after first copying the parent's RTE and
* modifying some fields to describe the foreign partition to work on.
@@ -2085,9 +2095,11 @@ postgresBeginForeignInsert(ModifyTableState *mtstate,
* correspond to this partition if it is one of the UPDATE subplan target
* rels; in that case, we can just use the existing RTE as-is.
*/
- rte = exec_rt_fetch(resultRelation, estate);
- if (rte->relid != RelationGetRelid(rel))
+ if (resultRelInfo->ri_RangeTableIndex == 0)
{
+ ResultRelInfo *rootResultRelInfo = resultRelInfo->ri_RootResultRelInfo;
+
+ rte = exec_rt_fetch(rootResultRelInfo->ri_RangeTableIndex, estate);
rte = copyObject(rte);
rte->relid = RelationGetRelid(rel);
rte->relkind = RELKIND_FOREIGN_TABLE;
@@ -2099,8 +2111,15 @@ postgresBeginForeignInsert(ModifyTableState *mtstate,
* Vars contained in those expressions.
*/
if (plan && plan->operation == CMD_UPDATE &&
- resultRelation == plan->rootRelation)
+ rootResultRelInfo->ri_RangeTableIndex == plan->rootRelation)
resultRelation = mtstate->resultRelInfo[0].ri_RangeTableIndex;
+ else
+ resultRelation = rootResultRelInfo->ri_RangeTableIndex;
+ }
+ else
+ {
+ resultRelation = resultRelInfo->ri_RangeTableIndex;
+ rte = exec_rt_fetch(resultRelation, estate);
}
/* Construct the SQL command string. */
@@ -2923,7 +2942,7 @@ estimate_path_cost_size(PlannerInfo *root,
*/
if (fpinfo->rel_startup_cost >= 0 && fpinfo->rel_total_cost >= 0)
{
- Assert(fpinfo->retrieved_rows >= 1);
+ Assert(fpinfo->retrieved_rows >= 0);
rows = fpinfo->rows;
retrieved_rows = fpinfo->retrieved_rows;
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 319c15d635c06..2b525ea44a88b 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -309,6 +309,18 @@ SELECT t1."C 1", t2.c1, t3.c1 FROM "S 1"."T 1" t1 full join ft1 t2 full join ft2
RESET enable_hashjoin;
RESET enable_nestloop;
+-- Test executing assertion in estimate_path_cost_size() that makes sure that
+-- retrieved_rows for foreign rel re-used to cost pre-sorted foreign paths is
+-- a sensible value even when the rel has tuples=0
+CREATE TABLE loct_empty (c1 int NOT NULL, c2 text);
+CREATE FOREIGN TABLE ft_empty (c1 int NOT NULL, c2 text)
+ SERVER loopback OPTIONS (table_name 'loct_empty');
+INSERT INTO loct_empty
+ SELECT id, 'AAA' || to_char(id, 'FM000') FROM generate_series(1, 100) id;
+DELETE FROM loct_empty;
+ANALYZE ft_empty;
+EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM ft_empty ORDER BY c1;
+
-- ===================================================================
-- WHERE with remotely-executable conditions
-- ===================================================================
@@ -2897,5 +2909,22 @@ CREATE TABLE batch_table_p2
INSERT INTO batch_table SELECT * FROM generate_series(1, 66) i;
SELECT COUNT(*) FROM batch_table;
+-- Check that enabling batched inserts doesn't interfere with cross-partition
+-- updates
+CREATE TABLE batch_cp_upd_test (a int) PARTITION BY LIST (a);
+CREATE TABLE batch_cp_upd_test1 (LIKE batch_cp_upd_test);
+CREATE FOREIGN TABLE batch_cp_upd_test1_f
+ PARTITION OF batch_cp_upd_test
+ FOR VALUES IN (1)
+ SERVER loopback
+ OPTIONS (table_name 'batch_cp_upd_test1', batch_size '10');
+CREATE TABLE batch_cp_up_test1 PARTITION OF batch_cp_upd_test
+ FOR VALUES IN (2);
+INSERT INTO batch_cp_upd_test VALUES (1), (2);
+
+-- The following moves a row from the local partition to the foreign one
+UPDATE batch_cp_upd_test t SET a = 1 FROM (VALUES (1), (2)) s(a) WHERE t.a = s.a;
+SELECT tableoid::regclass, * FROM batch_cp_upd_test;
+
-- Clean up
-DROP TABLE batch_table CASCADE;
+DROP TABLE batch_table, batch_cp_upd_test CASCADE;
diff --git a/contrib/uuid-ossp/uuid-ossp.c b/contrib/uuid-ossp/uuid-ossp.c
index 49a4a5926455c..f9335f28631c2 100644
--- a/contrib/uuid-ossp/uuid-ossp.c
+++ b/contrib/uuid-ossp/uuid-ossp.c
@@ -324,7 +324,8 @@ uuid_generate_internal(int v, unsigned char *ns, const char *ptr, int len)
pg_cryptohash_update(ctx, (unsigned char *) ptr, len) < 0)
elog(ERROR, "could not update %s context", "MD5");
/* we assume sizeof MD5 result is 16, same as UUID size */
- if (pg_cryptohash_final(ctx, (unsigned char *) &uu) < 0)
+ if (pg_cryptohash_final(ctx, (unsigned char *) &uu,
+ sizeof(uu)) < 0)
elog(ERROR, "could not finalize %s context", "MD5");
pg_cryptohash_free(ctx);
}
@@ -338,7 +339,7 @@ uuid_generate_internal(int v, unsigned char *ns, const char *ptr, int len)
if (pg_cryptohash_update(ctx, ns, sizeof(uu)) < 0 ||
pg_cryptohash_update(ctx, (unsigned char *) ptr, len) < 0)
elog(ERROR, "could not update %s context", "SHA1");
- if (pg_cryptohash_final(ctx, sha1result) < 0)
+ if (pg_cryptohash_final(ctx, sha1result, sizeof(sha1result)) < 0)
elog(ERROR, "could not finalize %s context", "SHA1");
pg_cryptohash_free(ctx);
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index ea222c04640b1..db29905e91ffa 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -7673,6 +7673,7 @@ SCRAM-SHA-256$<iteration count>:&l
State code:
i = initialize,
d = data is being copied,
+ f = finished table copy,
s = synchronized,
r = ready (normal replication)
@@ -10604,6 +10605,19 @@ SCRAM-SHA-256$<iteration count>:&l
lock table
+
+
+
+ waitstarttimestamptz
+
+
+ Time when the server process started waiting for this lock,
+ or null if the lock is held.
+ Note that this can be null for a very short period of time after
+ the wait started even though granted
+ is false.
+
+
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 5ef1c7ad3c53e..e81141e45cf7a 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -1216,7 +1216,41 @@ include_dir 'conf.d'
Relative paths are relative to the data directory.
This parameter can only be set in the postgresql.conf
file or on the server command line.
- The default is empty, meaning no CRL file is loaded.
+ The default is empty, meaning no CRL file is loaded (unless
+ is set).
+
+
+
+
+
+ ssl_crl_dir (string)
+
+ ssl_crl_dir configuration parameter
+
+
+
+
+ Specifies the name of the directory containing the SSL server
+ certificate revocation list (CRL). Relative paths are relative to the
+ data directory. This parameter can only be set in
+ the postgresql.conf file or on the server command
+ line. The default is empty, meaning no CRLs are used (unless
+ is set).
+
+
+
+ The directory needs to be prepared with the OpenSSL command
+ openssl rehash or c_rehash. See
+ its documentation for details.
+
+
+
+ When using this setting, CRLs in the specified directory are loaded
+ on-demand at connection time. New CRLs can be added to the directory
+ and will be used immediately. This is unlike , which causes the CRL in the file to be
+ loaded at server start time or when the configuration is reloaded.
+ Both settings can be used together.
@@ -2928,7 +2962,7 @@ include_dir 'conf.d'
Not all of these choices are available on all platforms.
The default is the first method in the above list that is supported
by the platform, except that fdatasync is the default on
- Linux. The default is not necessarily ideal; it might be
+ Linux and FreeBSD. The default is not necessarily ideal; it might be
necessary to change this setting or other aspects of your system
configuration in order to create a crash-safe configuration or
achieve optimal performance.
diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index 0fef9bfcbe5d9..9310a7116628f 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -120,7 +120,7 @@ EXEC SQL CONNECT TO targetAS
- unix:postgresql://hostname:port/dbname?options
+ unix:postgresql://localhost:port/dbname?options
@@ -143,17 +143,26 @@ EXEC SQL CONNECT TO targetAS
- If you specify the connection target literally (that is, not
- through a variable reference) and you don't quote the value, then
- the case-insensitivity rules of normal SQL are applied. In that
- case you can also double-quote the individual parameters separately
- as needed. In practice, it is probably less error-prone to use a
- (single-quoted) string literal or a variable reference. The
- connection target DEFAULT initiates a connection
+ The connection target DEFAULT initiates a connection
to the default database under the default user name. No separate
user name or connection name can be specified in that case.
+
+ If you specify the connection target directly (that is, not as a string
+ literal or variable reference), then the components of the target are
+ passed through normal SQL parsing; this means that, for example,
+ the hostname must look like one or more SQL
+ identifiers separated by dots, and those identifiers will be
+ case-folded unless double-quoted. Values of
+ any options must be SQL identifiers,
+ integers, or variable references. Of course, you can put nearly
+ anything into an SQL identifier by double-quoting it.
+ In practice, it is probably less error-prone to use a (single-quoted)
+ string literal or a variable reference than to write the connection
+ target directly.
+
+
There are also different ways to specify the user name:
@@ -201,6 +210,15 @@ EXEC SQL CONNECT TO targetAS
write & within a value.
+
+ Notice that when specifying a socket connection
+ (with the unix: prefix), the host name must be
+ exactly localhost. To select a non-default
+ socket directory, write the directory's pathname as the value of
+ a host option in
+ the options part of the target.
+
+
The connection-name is used to handle
multiple connections in one program. It can be omitted if a
@@ -210,24 +228,12 @@ EXEC SQL CONNECT TO targetAS
chapter).
-
- If untrusted users have access to a database that has not adopted a
- secure schema usage pattern,
- begin each session by removing publicly-writable schemas
- from search_path. For example,
- add options=-c search_path=
- to options, or
- issue EXEC SQL SELECT pg_catalog.set_config('search_path', '',
- false); after connecting. This consideration is not specific to
- ECPG; it applies to every interface for executing arbitrary SQL commands.
-
-
Here are some examples of CONNECT statements:
EXEC SQL CONNECT TO mydb@sql.mydomain.com;
-EXEC SQL CONNECT TO unix:postgresql://sql.mydomain.com/mydb AS myconnection USER john;
+EXEC SQL CONNECT TO tcp:postgresql://sql.mydomain.com/mydb AS myconnection USER john;
EXEC SQL BEGIN DECLARE SECTION;
const char *target = "mydb@sql.mydomain.com";
@@ -238,8 +244,8 @@ EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO :target USER :user USING :passwd;
/* or EXEC SQL CONNECT TO :target USER :user/:passwd; */
- The last form makes use of the variant referred to above as
- character variable reference. You will see in later sections how C
+ The last example makes use of the feature referred to above as
+ character variable references. You will see in later sections how C
variables can be used in SQL statements when you prefix them with a
colon.
@@ -251,6 +257,18 @@ EXEC SQL CONNECT TO :target USER :user USING :passwd;
example above to encapsulate the connection target string
somewhere.
+
+
+ If untrusted users have access to a database that has not adopted a
+ secure schema usage pattern,
+ begin each session by removing publicly-writable schemas
+ from search_path. For example,
+ add options=-c search_path=
+ to options, or
+ issue EXEC SQL SELECT pg_catalog.set_config('search_path', '',
+ false); after connecting. This consideration is not specific to
+ ECPG; it applies to every interface for executing arbitrary SQL commands.
+
diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5fc94..2e73d296d24bc 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -619,7 +619,7 @@ TupleTableSlot **
ExecForeignBatchInsert(EState *estate,
ResultRelInfo *rinfo,
TupleTableSlot **slots,
- TupleTableSlot *planSlots,
+ TupleTableSlot **planSlots,
int *numSlots);
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index b7150510aba46..1ab31a9056195 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -25102,11 +25102,11 @@ SELECT collation for ('foo' COLLATE "de_DE");
pg_wal_lsn_diff
- pg_wal_lsn_diff ( lsnpg_lsn, lsnpg_lsn )
+ pg_wal_lsn_diff ( lsn1pg_lsn, lsn2pg_lsn )
numeric
- Calculates the difference in bytes between two write-ahead log
+ Calculates the difference in bytes (lsn1 - lsn2) between two write-ahead log
locations. This can be used
with pg_stat_replication or some of the
functions shown in to
diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml
index 36ec17a4c606e..41001982528bd 100644
--- a/doc/src/sgml/information_schema.sgml
+++ b/doc/src/sgml/information_schema.sgml
@@ -4841,6 +4841,126 @@ ORDER BY c.ordinal_position;
+
+ routine_column_usage
+
+
+ The view routine_column_usage is meant to identify all
+ columns that are used by a function or procedure. This information is
+ currently not tracked by PostgreSQL.
+
+
+
+ routine_column_usage Columns
+
+
+
+
+
+ Column Type
+
+
+ Description
+
+
+
+
+
+
+
+ specific_catalogsql_identifier
+
+
+ Name of the database containing the function (always the current database)
+
+
+
+
+
+ specific_schemasql_identifier
+
+
+ Name of the schema containing the function
+
+
+
+
+
+ specific_namesql_identifier
+
+
+ The specific name of the function. See for more information.
+
+
+
+
+
+ routine_catalogsql_identifier
+
+
+ Name of the database containing the function (always the current database)
+
+
+
+
+
+ routine_schemasql_identifier
+
+
+ Name of the schema containing the function
+
+
+
+
+
+ routine_namesql_identifier
+
+
+ Name of the function (might be duplicated in case of overloading)
+
+
+
+
+
+ table_catalogsql_identifier
+
+
+ Name of the database that contains the table that is used by the
+ function (always the current database)
+
+
+
+
+
+ table_schemasql_identifier
+
+
+ Name of the schema that contains the table that is used by the function
+
+
+
+
+
+ table_namesql_identifier
+
+
+ Name of the table that is used by the function
+
+
+
+
+
+ column_namesql_identifier
+
+
+ Name of the column that is used by the function
+
+
+
+
+
+
+
routine_privileges
@@ -4960,6 +5080,329 @@ ORDER BY c.ordinal_position;
+
+ routine_routine_usage
+
+
+ The view routine_routine_usage is meant to identify all
+ functions or procedures that are used by another (or the same) function or
+ procedure, either in the body or in parameter default expressions.
+ Currently, only functions used in parameter default expressions are
+ tracked. An entry is included here only if the used function is owned by a
+ currently enabled role. (There is no such restriction on the using
+ function.)
+
+
+
+ Note that the entries for both functions in the view refer to the
+ specific name of the routine, even though the column names
+ are used in a way that is inconsistent with other information schema views
+ about routines. This is per SQL standard, although it is arguably a
+ misdesign. See for more information
+ about specific names.
+
+
+
+ routine_routine_usage Columns
+
+
+
+
+
+ Column Type
+
+
+ Description
+
+
+
+
+
+
+
+ specific_catalogsql_identifier
+
+
+ Name of the database containing the using function (always the current database)
+
+
+
+
+
+ specific_schemasql_identifier
+
+
+ Name of the schema containing the using function
+
+
+
+
+
+ specific_namesql_identifier
+
+
+ The specific name of the using function.
+
+
+
+
+
+ routine_catalogsql_identifier
+
+
+ Name of the database that contains the function that is used by the
+ first function (always the current database)
+
+
+
+
+
+ routine_schemasql_identifier
+
+
+ Name of the schema that contains the function that is used by the first
+ function
+
+
+
+
+
+ routine_namesql_identifier
+
+
+ The specific name of the function that is used by the
+ first function.
+
+
+
+
+
+
+
+
+ routine_sequence_usage
+
+
+ The view routine_sequence_usage is meant to identify all
+ sequences that are used by a function or procedure, either in the body or
+ in parameter default expressions. Currently, only sequences used in
+ parameter default expressions are tracked. A sequence is only included if
+ that sequence is owned by a currently enabled role.
+
+
+
+ routine_sequence_usage Columns
+
+
+
+
+
+ Column Type
+
+
+ Description
+
+
+
+
+
+
+
+ specific_catalogsql_identifier
+
+
+ Name of the database containing the function (always the current database)
+
+
+
+
+
+ specific_schemasql_identifier
+
+
+ Name of the schema containing the function
+
+
+
+
+
+ specific_namesql_identifier
+
+
+ The specific name of the function. See for more information.
+
+
+
+
+
+ routine_catalogsql_identifier
+
+
+ Name of the database containing the function (always the current database)
+
+
+
+
+
+ routine_schemasql_identifier
+
+
+ Name of the schema containing the function
+
+
+
+
+
+ routine_namesql_identifier
+
+
+ Name of the function (might be duplicated in case of overloading)
+
+
+
+
+
+ schema_catalogsql_identifier
+
+
+ Name of the database that contains the sequence that is used by the
+ function (always the current database)
+
+
+
+
+
+ sequence_schemasql_identifier
+
+
+ Name of the schema that contains the sequence that is used by the function
+
+
+
+
+
+ sequence_namesql_identifier
+
+
+ Name of the sequence that is used by the function
+
+
+
+
+
+
+
+
+ routine_table_usage
+
+
+ The view routine_table_usage is meant to identify all
+ tables that are used by a function or procedure. This information is
+ currently not tracked by PostgreSQL.
+
+
+
+ routine_table_usage Columns
+
+
+
+
+
+ Column Type
+
+
+ Description
+
+
+
+
+
+
+
+ specific_catalogsql_identifier
+
+
+ Name of the database containing the function (always the current database)
+
+
+
+
+
+ specific_schemasql_identifier
+
+
+ Name of the schema containing the function
+
+
+
+
+
+ specific_namesql_identifier
+
+
+ The specific name of the function. See for more information.
+
+
+
+
+
+ routine_catalogsql_identifier
+
+
+ Name of the database containing the function (always the current database)
+
+
+
+
+
+ routine_schemasql_identifier
+
+
+ Name of the schema containing the function
+
+
+
+
+
+ routine_namesql_identifier
+
+
+ Name of the function (might be duplicated in case of overloading)
+
+
+
+
+
+ table_catalogsql_identifier
+
+
+ Name of the database that contains the table that is used by the
+ function (always the current database)
+
+
+
+
+
+ table_schemasql_identifier
+
+
+ Name of the schema that contains the table that is used by the function
+
+
+
+
+
+ table_namesql_identifier
+
+
+ Name of the table that is used by the function
+
+
+
+
+
+
+
routines
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index b7a82453f0da1..5e25f20843c11 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -1723,12 +1723,38 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname
This parameter specifies the file name of the SSL certificate
revocation list (CRL). Certificates listed in this file, if it
exists, will be rejected while attempting to authenticate the
- server's certificate. The default is
+ server's certificate. If neither
+ nor
+ is set, this setting is
+ taken as
~/.postgresql/root.crl.
+
+ sslcrldir
+
+
+ This parameter specifies the directory name of the SSL certificate
+ revocation list (CRL). Certificates listed in the files in this
+ directory, if it exists, will be rejected while attempting to
+ authenticate the server's certificate.
+
+
+
+ The directory needs to be prepared with the OpenSSL command
+ openssl rehash or c_rehash. See
+ its documentation for details.
+
+
+
+ Both sslcrl and sslcrldir can be
+ specified together.
+
+
+
+
requirepeer
diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml
index a560ad69b44bb..d0742f2c526b1 100644
--- a/doc/src/sgml/logical-replication.sgml
+++ b/doc/src/sgml/logical-replication.sgml
@@ -186,9 +186,10 @@
Each subscription will receive changes via one replication slot (see
- ). Additional temporary
- replication slots may be required for the initial data synchronization
- of pre-existing table data.
+ ). Additional replication
+ slots may be required for the initial data synchronization of
+ pre-existing table data and those will be dropped at the end of data
+ synchronization.
@@ -248,13 +249,23 @@
As mentioned earlier, each (active) subscription receives changes from a
- replication slot on the remote (publishing) side. Normally, the remote
- replication slot is created automatically when the subscription is created
- using CREATE SUBSCRIPTION and it is dropped
- automatically when the subscription is dropped using DROP
- SUBSCRIPTION. In some situations, however, it can be useful or
- necessary to manipulate the subscription and the underlying replication
- slot separately. Here are some scenarios:
+ replication slot on the remote (publishing) side.
+
+
+ Additional table synchronization slots are normally transient, created
+ internally to perform initial table synchronization and dropped
+ automatically when they are no longer needed. These table synchronization
+ slots have generated names: pg_%u_sync_%u_%llu
+ (parameters: Subscription oid,
+ Table relid, system identifier sysid)
+
+
+ Normally, the remote replication slot is created automatically when the
+ subscription is created using CREATE SUBSCRIPTION and it
+ is dropped automatically when the subscription is dropped using
+ DROP SUBSCRIPTION. In some situations, however, it can
+ be useful or necessary to manipulate the subscription and the underlying
+ replication slot separately. Here are some scenarios:
@@ -294,8 +305,9 @@
using ALTER SUBSCRIPTION before attempting to drop
the subscription. If the remote database instance no longer exists, no
further action is then necessary. If, however, the remote database
- instance is just unreachable, the replication slot should then be
- dropped manually; otherwise it would continue to reserve WAL and might
+ instance is just unreachable, the replication slot (and any still
+ remaining table synchronization slots) should then be
+ dropped manually; otherwise it/they would continue to reserve WAL and might
eventually cause the disk to fill up. Such cases should be carefully
investigated.
@@ -468,16 +480,19 @@
Initial Snapshot
- The initial data in existing subscribed tables are snapshotted and
- copied in a parallel instance of a special kind of apply process.
- This process will create its own temporary replication slot and
- copy the existing data. Once existing data is copied, the worker
- enters synchronization mode, which ensures that the table is brought
- up to a synchronized state with the main apply process by streaming
- any changes that happened during the initial data copy using standard
- logical replication. Once the synchronization is done, the control
- of the replication of the table is given back to the main apply
- process where the replication continues as normal.
+ The initial data in existing subscribed tables are snapshotted and
+ copied in a parallel instance of a special kind of apply process.
+ This process will create its own replication slot and copy the existing
+ data. As soon as the copy is finished the table contents will become
+ visible to other backends. Once existing data is copied, the worker
+ enters synchronization mode, which ensures that the table is brought
+ up to a synchronized state with the main apply process by streaming
+ any changes that happened during the initial data copy using standard
+ logical replication. During this synchronization phase, the changes
+ are applied and committed in the same order as they happened on the
+ publisher. Once the synchronization is done, the control of the
+ replication of the table is given back to the main apply process where
+ the replication continues as normal.
diff --git a/doc/src/sgml/pageinspect.sgml b/doc/src/sgml/pageinspect.sgml
index a0be779940d66..c733341984843 100644
--- a/doc/src/sgml/pageinspect.sgml
+++ b/doc/src/sgml/pageinspect.sgml
@@ -714,15 +714,15 @@ test=# SELECT * FROM gist_page_opaque_info(get_raw_page('test_gist_idx', 2));
the data stored in a page of a GiST index. For example:
test=# SELECT * FROM gist_page_items(get_raw_page('test_gist_idx', 0), 'test_gist_idx');
- itemoffset | ctid | itemlen | keys
-------------+-----------+---------+-------------------
- 1 | (1,65535) | 40 | (p)=((166,166))
- 2 | (2,65535) | 40 | (p)=((332,332))
- 3 | (3,65535) | 40 | (p)=((498,498))
- 4 | (4,65535) | 40 | (p)=((664,664))
- 5 | (5,65535) | 40 | (p)=((830,830))
- 6 | (6,65535) | 40 | (p)=((996,996))
- 7 | (7,65535) | 40 | (p)=((1000,1000))
+ itemoffset | ctid | itemlen | dead | keys
+------------+-----------+---------+------+-------------------
+ 1 | (1,65535) | 40 | f | (p)=((166,166))
+ 2 | (2,65535) | 40 | f | (p)=((332,332))
+ 3 | (3,65535) | 40 | f | (p)=((498,498))
+ 4 | (4,65535) | 40 | f | (p)=((664,664))
+ 5 | (5,65535) | 40 | f | (p)=((830,830))
+ 6 | (6,65535) | 40 | f | (p)=((996,996))
+ 7 | (7,65535) | 40 | f | (p)=((1000,1000))
(7 rows)
@@ -745,15 +745,15 @@ test=# SELECT * FROM gist_page_items(get_raw_page('test_gist_idx', 0), 'test_gis
example:
test=# SELECT * FROM gist_page_items_bytea(get_raw_page('test_gist_idx', 0));
- itemoffset | ctid | itemlen | key_data
-------------+-----------+---------+-------------------------------------------&zwsp;-----------------------------------------
- 1 | (1,65535) | 40 | \x00000100ffff28000000000000c0644000000000&zwsp;00c06440000000000000f03f000000000000f03f
- 2 | (2,65535) | 40 | \x00000200ffff28000000000000c0744000000000&zwsp;00c074400000000000e064400000000000e06440
- 3 | (3,65535) | 40 | \x00000300ffff28000000000000207f4000000000&zwsp;00207f400000000000d074400000000000d07440
- 4 | (4,65535) | 40 | \x00000400ffff28000000000000c0844000000000&zwsp;00c084400000000000307f400000000000307f40
- 5 | (5,65535) | 40 | \x00000500ffff28000000000000f0894000000000&zwsp;00f089400000000000c884400000000000c88440
- 6 | (6,65535) | 40 | \x00000600ffff28000000000000208f4000000000&zwsp;00208f400000000000f889400000000000f88940
- 7 | (7,65535) | 40 | \x00000700ffff28000000000000408f4000000000&zwsp;00408f400000000000288f400000000000288f40
+ itemoffset | ctid | itemlen | dead | key_data
+------------+-----------+---------+------+-----------------------------------------&zwsp;-------------------------------------------
+ 1 | (1,65535) | 40 | f | \x00000100ffff28000000000000c0644000000000&zwsp;00c06440000000000000f03f000000000000f03f
+ 2 | (2,65535) | 40 | f | \x00000200ffff28000000000000c0744000000000&zwsp;00c074400000000000e064400000000000e06440
+ 3 | (3,65535) | 40 | f | \x00000300ffff28000000000000207f4000000000&zwsp;00207f400000000000d074400000000000d07440
+ 4 | (4,65535) | 40 | f | \x00000400ffff28000000000000c0844000000000&zwsp;00c084400000000000307f400000000000307f40
+ 5 | (5,65535) | 40 | f | \x00000500ffff28000000000000f0894000000000&zwsp;00f089400000000000c884400000000000c88440
+ 6 | (6,65535) | 40 | f | \x00000600ffff28000000000000208f4000000000&zwsp;00208f400000000000f889400000000000f88940
+ 7 | (7,65535) | 40 | f | \x00000700ffff28000000000000408f4000000000&zwsp;00408f400000000000288f400000000000288f40
(7 rows)
diff --git a/doc/src/sgml/ref/alter_index.sgml b/doc/src/sgml/ref/alter_index.sgml
index 214005a86c5fb..4b446384c262b 100644
--- a/doc/src/sgml/ref/alter_index.sgml
+++ b/doc/src/sgml/ref/alter_index.sgml
@@ -24,7 +24,7 @@ PostgreSQL documentation
ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
ALTER INDEX name ATTACH PARTITION index_name
-ALTER INDEX name DEPENDS ON EXTENSION extension_name
+ALTER INDEX name [ NO ] DEPENDS ON EXTENSION extension_name
ALTER INDEX name ALTER COLLATION collation_name REFRESH VERSION
ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter [= value] [, ... ] )
ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
diff --git a/doc/src/sgml/ref/alter_materialized_view.sgml b/doc/src/sgml/ref/alter_materialized_view.sgml
index bf379db77e38d..27f60f6df59d0 100644
--- a/doc/src/sgml/ref/alter_materialized_view.sgml
+++ b/doc/src/sgml/ref/alter_materialized_view.sgml
@@ -24,7 +24,7 @@ PostgreSQL documentation
ALTER MATERIALIZED VIEW [ IF EXISTS ] nameaction [, ... ]
ALTER MATERIALIZED VIEW name
- DEPENDS ON EXTENSION extension_name
+ [ NO ] DEPENDS ON EXTENSION extension_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
diff --git a/doc/src/sgml/ref/alter_procedure.sgml b/doc/src/sgml/ref/alter_procedure.sgml
index 5c176fb5d8760..9cbe2c7ceafa3 100644
--- a/doc/src/sgml/ref/alter_procedure.sgml
+++ b/doc/src/sgml/ref/alter_procedure.sgml
@@ -30,7 +30,7 @@ ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
SET SCHEMA new_schema
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
- DEPENDS ON EXTENSION extension_name
+ [ NO ] DEPENDS ON EXTENSION extension_namewhere action is one of:
diff --git a/doc/src/sgml/ref/alter_routine.sgml b/doc/src/sgml/ref/alter_routine.sgml
index 36acaff3198d6..aab4a497938f6 100644
--- a/doc/src/sgml/ref/alter_routine.sgml
+++ b/doc/src/sgml/ref/alter_routine.sgml
@@ -30,7 +30,7 @@ ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
SET SCHEMA new_schema
ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
- DEPENDS ON EXTENSION extension_name
+ [ NO ] DEPENDS ON EXTENSION extension_namewhere action is one of:
diff --git a/doc/src/sgml/ref/alter_subscription.sgml b/doc/src/sgml/ref/alter_subscription.sgml
index db5e59f707c6a..bcb0acf28d8f9 100644
--- a/doc/src/sgml/ref/alter_subscription.sgml
+++ b/doc/src/sgml/ref/alter_subscription.sgml
@@ -48,6 +48,24 @@ ALTER SUBSCRIPTION name RENAME TO <
(Currently, all subscription owners must be superusers, so the owner checks
will be bypassed in practice. But this might change in the future.)
+
+
+ When refreshing a publication we remove the relations that are no longer
+ part of the publication and we also remove the tablesync slots if there are
+ any. It is necessary to remove tablesync slots so that the resources
+ allocated for the subscription on the remote host are released. If due to
+ network breakdown or some other error, PostgreSQL
+ is unable to remove the slots, an ERROR will be reported. To proceed in this
+ situation, either the user need to retry the operation or disassociate the
+ slot from the subscription and drop the subscription as explained in
+ .
+
+
+
+ Commands ALTER SUBSCRIPTION ... REFRESH PUBLICATION and
+ ALTER SUBSCRIPTION ... SET PUBLICATION ... with refresh
+ option as true cannot be executed inside a transaction block.
+
diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml
index 569f4c9da7b58..3b2b227683a2f 100644
--- a/doc/src/sgml/ref/create_table.sgml
+++ b/doc/src/sgml/ref/create_table.sgml
@@ -958,7 +958,7 @@ WITH ( MODULUS numeric_literal, REM
When placed on a partitioned table, PRIMARY KEY
- constraints share the restrictions previously decribed
+ constraints share the restrictions previously described
for UNIQUE constraints.
diff --git a/doc/src/sgml/ref/drop_subscription.sgml b/doc/src/sgml/ref/drop_subscription.sgml
index adbdeafb4e18c..aee961554635a 100644
--- a/doc/src/sgml/ref/drop_subscription.sgml
+++ b/doc/src/sgml/ref/drop_subscription.sgml
@@ -79,7 +79,8 @@ DROP SUBSCRIPTION [ IF EXISTS ] name
When dropping a subscription that is associated with a replication slot on
the remote host (the normal state), DROP SUBSCRIPTION
- will connect to the remote host and try to drop the replication slot as
+ will connect to the remote host and try to drop the replication slot (and
+ any remaining table synchronization slots) as
part of its operation. This is necessary so that the resources allocated
for the subscription on the remote host are released. If this fails,
either because the remote host is not reachable or because the remote
@@ -89,7 +90,8 @@ DROP SUBSCRIPTION [ IF EXISTS ] nameALTER SUBSCRIPTION ... SET (slot_name = NONE).
After that, DROP SUBSCRIPTION will no longer attempt any
actions on a remote host. Note that if the remote replication slot still
- exists, it should then be dropped manually; otherwise it will continue to
+ exists, it (and any related table synchronization slots) should then be
+ dropped manually; otherwise it/they will continue to
reserve WAL and might eventually cause the disk to fill up. See
also .
diff --git a/doc/src/sgml/ref/vacuum.sgml b/doc/src/sgml/ref/vacuum.sgml
index 21ab57d880489..4bb624979bdf4 100644
--- a/doc/src/sgml/ref/vacuum.sgml
+++ b/doc/src/sgml/ref/vacuum.sgml
@@ -33,6 +33,7 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ boolean ]
SKIP_LOCKED [ boolean ]
INDEX_CLEANUP [ boolean ]
+ PROCESS_TOAST [ boolean ]
TRUNCATE [ boolean ]
PARALLEL integer
@@ -210,6 +211,20 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [
diff --git a/src/backend/access/common/tupconvert.c b/src/backend/access/common/tupconvert.c
index 4229c9bf76425..e055df2f32397 100644
--- a/src/backend/access/common/tupconvert.c
+++ b/src/backend/access/common/tupconvert.c
@@ -226,6 +226,57 @@ execute_attr_map_slot(AttrMap *attrMap,
return out_slot;
}
+/*
+ * Perform conversion of bitmap of columns according to the map.
+ *
+ * The input and output bitmaps are offset by
+ * FirstLowInvalidHeapAttributeNumber to accommodate system cols, like the
+ * column-bitmaps in RangeTblEntry.
+ */
+Bitmapset *
+execute_attr_map_cols(AttrMap *attrMap, Bitmapset *in_cols)
+{
+ Bitmapset *out_cols;
+ int out_attnum;
+
+ /* fast path for the common trivial case */
+ if (in_cols == NULL)
+ return NULL;
+
+ /*
+ * For each output column, check which input column it corresponds to.
+ */
+ out_cols = NULL;
+
+ for (out_attnum = FirstLowInvalidHeapAttributeNumber;
+ out_attnum <= attrMap->maplen;
+ out_attnum++)
+ {
+ int in_attnum;
+
+ if (out_attnum < 0)
+ {
+ /* System column. No mapping. */
+ in_attnum = out_attnum;
+ }
+ else if (out_attnum == 0)
+ continue;
+ else
+ {
+ /* normal user column */
+ in_attnum = attrMap->attnums[out_attnum - 1];
+
+ if (in_attnum == 0)
+ continue;
+ }
+
+ if (bms_is_member(in_attnum - FirstLowInvalidHeapAttributeNumber, in_cols))
+ out_cols = bms_add_member(out_cols, out_attnum - FirstLowInvalidHeapAttributeNumber);
+ }
+
+ return out_cols;
+}
+
/*
* Free a TupleConversionMap structure.
*/
diff --git a/src/backend/access/gin/ginvacuum.c b/src/backend/access/gin/ginvacuum.c
index 35b85a9bff0c0..a0453b36cde5b 100644
--- a/src/backend/access/gin/ginvacuum.c
+++ b/src/backend/access/gin/ginvacuum.c
@@ -189,7 +189,7 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
* address.
*/
GinPageSetDeleted(page);
- GinPageSetDeleteXid(page, ReadNewTransactionId());
+ GinPageSetDeleteXid(page, ReadNextTransactionId());
MarkBufferDirty(pBuffer);
MarkBufferDirty(lBuffer);
diff --git a/src/backend/access/gist/README b/src/backend/access/gist/README
index fffdfff6e17a0..8ca0cf78cc97f 100644
--- a/src/backend/access/gist/README
+++ b/src/backend/access/gist/README
@@ -92,10 +92,10 @@ index child page to be split between the time we make a queue entry for it
(while visiting its parent page) and the time we actually reach and scan
the child page. To avoid missing the entries that were moved to the right
sibling, we detect whether a split has occurred by comparing the child
-page's NSN to the LSN that the parent had when visited. If it did, the
-sibling page is immediately added to the front of the queue, ensuring that
-its items will be scanned in the same order as if they were still on the
-original child page.
+page's NSN (node sequence number, a special-purpose LSN) to the LSN that
+the parent had when visited. If it did, the sibling page is immediately
+added to the front of the queue, ensuring that its items will be scanned
+in the same order as if they were still on the original child page.
As is usual in Postgres, the search algorithm only guarantees to find index
entries that existed before the scan started; index entries added during
diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c
index cf53dad474372..a3ec9f2cfe424 100644
--- a/src/backend/access/gist/gistutil.c
+++ b/src/backend/access/gist/gistutil.c
@@ -914,7 +914,7 @@ gistPageRecyclable(Page page)
*/
FullTransactionId deletexid_full = GistPageGetDeleteXid(page);
- return GlobalVisIsRemovableFullXid(NULL, deletexid_full);
+ return GlobalVisCheckRemovableFullXid(NULL, deletexid_full);
}
return false;
}
diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c
index 94a7e12763931..ddecb8ab18ef4 100644
--- a/src/backend/access/gist/gistvacuum.c
+++ b/src/backend/access/gist/gistvacuum.c
@@ -546,9 +546,6 @@ gistvacuum_delete_empty_pages(IndexVacuumInfo *info, GistVacState *vstate)
ReleaseBuffer(buffer);
- /* update stats */
- vstate->stats->pages_removed += deleted;
-
/*
* We can stop the scan as soon as we have seen the downlinks, even if
* we were not able to remove them all.
diff --git a/src/backend/access/gist/gistxlog.c b/src/backend/access/gist/gistxlog.c
index c1d4b5d4f2321..f2eda79bc1ab9 100644
--- a/src/backend/access/gist/gistxlog.c
+++ b/src/backend/access/gist/gistxlog.c
@@ -388,7 +388,7 @@ gistRedoPageReuse(XLogReaderState *record)
* pages in the index via the FSM. That's all they do though.
*
* latestRemovedXid was the page's deleteXid. The
- * GlobalVisIsRemovableFullXid(deleteXid) test in gistPageRecyclable()
+ * GlobalVisCheckRemovableFullXid(deleteXid) test in gistPageRecyclable()
* conceptually mirrors the PGPROC->xmin > limitXmin test in
* GetConflictingVirtualXIDs(). Consequently, one XID value achieves the
* same exclusion effect on primary and standby.
diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c
index e3a716a2a2f24..8bb38d6406e5e 100644
--- a/src/backend/access/heap/pruneheap.c
+++ b/src/backend/access/heap/pruneheap.c
@@ -213,11 +213,12 @@ heap_page_prune_opt(Relation relation, Buffer buffer)
* send its own new total to pgstats, and we don't want this delta applied
* on top of that.)
*
+ * Sets latestRemovedXid for caller on return.
+ *
* off_loc is the offset location required by the caller to use in error
* callback.
*
- * Returns the number of tuples deleted from the page and sets
- * latestRemovedXid.
+ * Returns the number of tuples deleted from the page during this call.
*/
int
heap_page_prune(Relation relation, Buffer buffer,
diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c
index f3d2265fad7e4..0bb78162f546d 100644
--- a/src/backend/access/heap/vacuumlazy.c
+++ b/src/backend/access/heap/vacuumlazy.c
@@ -765,9 +765,9 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats,
next_fsm_block_to_vacuum;
double num_tuples, /* total number of nonremovable tuples */
live_tuples, /* live tuples (reltuples estimate) */
- tups_vacuumed, /* tuples cleaned up by vacuum */
+ tups_vacuumed, /* tuples cleaned up by current vacuum */
nkeep, /* dead-but-not-removable tuples */
- nunused; /* unused line pointers */
+ nunused; /* # existing unused line pointers */
IndexBulkDeleteResult **indstats;
int i;
PGRUsage ru0;
@@ -1234,10 +1234,11 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats,
/*
* Prune all HOT-update chains in this page.
*
- * We count tuples removed by the pruning step as removed by VACUUM.
+ * We count tuples removed by the pruning step as removed by VACUUM
+ * (existing LP_DEAD line pointers don't count).
*/
- tups_vacuumed += heap_page_prune(onerel, buf, vistest, false,
- InvalidTransactionId, 0,
+ tups_vacuumed += heap_page_prune(onerel, buf, vistest,
+ InvalidTransactionId, 0, false,
&vacrelstats->latestRemovedXid,
&vacrelstats->offnum);
@@ -1286,10 +1287,13 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats,
ItemPointerSet(&(tuple.t_self), blkno, offnum);
/*
- * DEAD line pointers are to be vacuumed normally; but we don't
+ * LP_DEAD line pointers are to be vacuumed normally; but we don't
* count them in tups_vacuumed, else we'd be double-counting (at
* least in the common case where heap_page_prune() just freed up
- * a non-HOT tuple).
+ * a non-HOT tuple). Note also that the final tups_vacuumed value
+ * might be very low for tables where opportunistic page pruning
+ * happens to occur very frequently (via heap_page_prune_opt()
+ * calls that free up non-HOT tuples).
*/
if (ItemIdIsDead(itemid))
{
@@ -1742,10 +1746,6 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats,
vacrelstats->relname,
tups_vacuumed, vacuumed_pages)));
- /*
- * This is pretty messy, but we split it up so that we can skip emitting
- * individual parts of the message when not applicable.
- */
initStringInfo(&buf);
appendStringInfo(&buf,
_("%.0f dead row versions cannot be removed yet, oldest xmin: %u\n"),
diff --git a/src/backend/access/nbtree/README b/src/backend/access/nbtree/README
index 92205325fbe4a..46d49bf025126 100644
--- a/src/backend/access/nbtree/README
+++ b/src/backend/access/nbtree/README
@@ -214,6 +214,34 @@ page). Since we hold a lock on the lower page (per L&Y) until we have
re-found the parent item that links to it, we can be assured that the
parent item does still exist and can't have been deleted.
+VACUUM's linear scan, concurrent page splits
+--------------------------------------------
+
+VACUUM accesses the index by doing a linear scan to search for deletable
+TIDs, while considering the possibility of deleting empty pages in
+passing. This is in physical/block order, not logical/keyspace order.
+The tricky part of this is avoiding missing any deletable tuples in the
+presence of concurrent page splits: a page split could easily move some
+tuples from a page not yet passed over by the sequential scan to a
+lower-numbered page already passed over.
+
+To implement this, we provide a "vacuum cycle ID" mechanism that makes it
+possible to determine whether a page has been split since the current
+btbulkdelete cycle started. If btbulkdelete finds a page that has been
+split since it started, and has a right-link pointing to a lower page
+number, then it temporarily suspends its sequential scan and visits that
+page instead. It must continue to follow right-links and vacuum dead
+tuples until reaching a page that either hasn't been split since
+btbulkdelete started, or is above the location of the outer sequential
+scan. Then it can resume the sequential scan. This ensures that all
+tuples are visited. It may be that some tuples are visited twice, but
+that has no worse effect than an inaccurate index tuple count (and we
+can't guarantee an accurate count anyway in the face of concurrent
+activity). Note that this still works if the has-been-recently-split test
+has a small probability of false positives, so long as it never gives a
+false negative. This makes it possible to implement the test with a small
+counter value stored on each index page.
+
Deleting entire pages during VACUUM
-----------------------------------
@@ -301,19 +329,26 @@ down in the chain. This is repeated until there are no internal pages left
in the chain. Finally, the half-dead leaf page itself is unlinked from its
siblings.
-A deleted page cannot be reclaimed immediately, since there may be other
+A deleted page cannot be recycled immediately, since there may be other
processes waiting to reference it (ie, search processes that just left the
parent, or scans moving right or left from one of the siblings). These
-processes must observe that the page is marked dead and recover
-accordingly. Searches and forward scans simply follow the right-link
-until they find a non-dead page --- this will be where the deleted page's
-key-space moved to.
+processes must be able to observe a deleted page for some time after the
+deletion operation, in order to be able to at least recover from it (they
+recover by moving right, as with concurrent page splits). Searchers never
+have to worry about concurrent page recycling.
+
+See "Placing deleted pages in the FSM" section below for a description of
+when and how deleted pages become safe for VACUUM to make recyclable.
+
+Page deletion and backwards scans
+---------------------------------
Moving left in a backward scan is complicated because we must consider
the possibility that the left sibling was just split (meaning we must find
the rightmost page derived from the left sibling), plus the possibility
that the page we were just on has now been deleted and hence isn't in the
sibling chain at all anymore. So the move-left algorithm becomes:
+
0. Remember the page we are on as the "original page".
1. Follow the original page's left-link (we're done if this is zero).
2. If the current page is live and its right-link matches the "original
@@ -330,31 +365,15 @@ sibling chain at all anymore. So the move-left algorithm becomes:
current left-link). If it is dead, move right until a non-dead page
is found (there must be one, since rightmost pages are never deleted),
mark that as the new "original page", and return to step 1.
+
This algorithm is correct because the live page found by step 4 will have
the same left keyspace boundary as the page we started from. Therefore,
when we ultimately exit, it must be on a page whose right keyspace
boundary matches the left boundary of where we started --- which is what
we need to be sure we don't miss or re-scan any items.
-A deleted page can only be reclaimed once there is no scan or search that
-has a reference to it; until then, it must stay in place with its
-right-link undisturbed. We implement this by waiting until all active
-snapshots and registered snapshots as of the deletion are gone; which is
-overly strong, but is simple to implement within Postgres. When marked
-dead, a deleted page is labeled with the next-transaction counter value.
-VACUUM can reclaim the page for re-use when this transaction number is
-guaranteed to be "visible to everyone". As collateral damage, this
-implementation also waits for running XIDs with no snapshots and for
-snapshots taken until the next transaction to allocate an XID commits.
-
-Reclaiming a page doesn't actually change its state on disk --- we simply
-record it in the shared-memory free space map, from which it will be
-handed out the next time a new page is needed for a page split. The
-deleted page's contents will be overwritten by the split operation.
-(Note: if we find a deleted page with an extremely old transaction
-number, it'd be worthwhile to re-mark it with FrozenTransactionId so that
-a later xid wraparound can't cause us to think the page is unreclaimable.
-But in more normal situations this would be a waste of a disk write.)
+Page deletion and tree height
+-----------------------------
Because we never delete the rightmost page of any level (and in particular
never delete the root), it's impossible for the height of the tree to
@@ -374,32 +393,42 @@ as part of the atomic update for the delete (either way, the metapage has
to be the last page locked in the update to avoid deadlock risks). This
avoids race conditions if two such operations are executing concurrently.
-VACUUM needs to do a linear scan of an index to search for deleted pages
-that can be reclaimed because they are older than all open transactions.
-For efficiency's sake, we'd like to use the same linear scan to search for
-deletable tuples. Before Postgres 8.2, btbulkdelete scanned the leaf pages
-in index order, but it is possible to visit them in physical order instead.
-The tricky part of this is to avoid missing any deletable tuples in the
-presence of concurrent page splits: a page split could easily move some
-tuples from a page not yet passed over by the sequential scan to a
-lower-numbered page already passed over. (This wasn't a concern for the
-index-order scan, because splits always split right.) To implement this,
-we provide a "vacuum cycle ID" mechanism that makes it possible to
-determine whether a page has been split since the current btbulkdelete
-cycle started. If btbulkdelete finds a page that has been split since
-it started, and has a right-link pointing to a lower page number, then
-it temporarily suspends its sequential scan and visits that page instead.
-It must continue to follow right-links and vacuum dead tuples until
-reaching a page that either hasn't been split since btbulkdelete started,
-or is above the location of the outer sequential scan. Then it can resume
-the sequential scan. This ensures that all tuples are visited. It may be
-that some tuples are visited twice, but that has no worse effect than an
-inaccurate index tuple count (and we can't guarantee an accurate count
-anyway in the face of concurrent activity). Note that this still works
-if the has-been-recently-split test has a small probability of false
-positives, so long as it never gives a false negative. This makes it
-possible to implement the test with a small counter value stored on each
-index page.
+Placing deleted pages in the FSM
+--------------------------------
+
+Recycling a page is decoupled from page deletion. A deleted page can only
+be put in the FSM to be recycled once there is no possible scan or search
+that has a reference to it; until then, it must stay in place with its
+sibling links undisturbed, as a tombstone that allows concurrent searches
+to detect and then recover from concurrent deletions (which are rather
+like concurrent page splits to searchers). This design is an
+implementation of what Lanin and Shasha call "the drain technique".
+
+We implement the technique by waiting until all active snapshots and
+registered snapshots as of the page deletion are gone; which is overly
+strong, but is simple to implement within Postgres. When marked fully
+dead, a deleted page is labeled with the next-transaction counter value.
+VACUUM can reclaim the page for re-use when the stored XID is guaranteed
+to be "visible to everyone". As collateral damage, we wait for snapshots
+taken until the next transaction to allocate an XID commits. We also wait
+for running XIDs with no snapshots.
+
+The need for this additional indirection after a page deletion operation
+takes place is a natural consequence of the highly permissive rules for
+index scans with Lehman and Yao's design. In general an index scan
+doesn't have to hold a lock or even a pin on any page when it descends the
+tree (nothing that you'd usually think of as an interlock is held "between
+levels"). At the same time, index scans cannot be allowed to land on a
+truly unrelated page due to concurrent recycling (not to be confused with
+concurrent deletion), because that results in wrong answers to queries.
+Simpler approaches to page deletion that don't need to defer recycling are
+possible, but none seem compatible with Lehman and Yao's design.
+
+Placing an already-deleted page in the FSM to be recycled when needed
+doesn't actually change the state of the page. The page will be changed
+whenever it is subsequently taken from the FSM for reuse. The deleted
+page's contents will be overwritten by the split operation (it will become
+the new right sibling page).
Fastpath For Index Insertion
----------------------------
diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c
index 41dc3f8fdff6c..8c326a4774cbe 100644
--- a/src/backend/access/nbtree/nbtpage.c
+++ b/src/backend/access/nbtree/nbtpage.c
@@ -1978,9 +1978,6 @@ _bt_pagedel(Relation rel, Buffer leafbuf, TransactionId *oldestBtpoXact)
* Then unlink it from its siblings. Each call to
* _bt_unlink_halfdead_page unlinks the topmost page from the subtree,
* making it shallower. Iterate until the leafbuf page is deleted.
- *
- * _bt_unlink_halfdead_page should never fail, since we established
- * that deletion is generally safe in _bt_mark_page_halfdead.
*/
rightsib_empty = false;
Assert(P_ISLEAF(opaque) && P_ISHALFDEAD(opaque));
@@ -1991,7 +1988,15 @@ _bt_pagedel(Relation rel, Buffer leafbuf, TransactionId *oldestBtpoXact)
&rightsib_empty, oldestBtpoXact,
&ndeleted))
{
- /* _bt_unlink_halfdead_page failed, released buffer */
+ /*
+ * _bt_unlink_halfdead_page should never fail, since we
+ * established that deletion is generally safe in
+ * _bt_mark_page_halfdead -- index must be corrupt.
+ *
+ * Note that _bt_unlink_halfdead_page already released the
+ * lock and pin on leafbuf for us.
+ */
+ Assert(false);
return ndeleted;
}
}
@@ -2261,7 +2266,7 @@ _bt_mark_page_halfdead(Relation rel, Buffer leafbuf, BTStack stack)
*
* We maintain *oldestBtpoXact for pages that are deleted by the current
* VACUUM operation here. This must be handled here because we conservatively
- * assume that there needs to be a new call to ReadNewTransactionId() each
+ * assume that there needs to be a new call to ReadNextTransactionId() each
* time a page gets deleted. See comments about the underlying assumption
* below.
*
@@ -2355,11 +2360,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
* So, first lock the leaf page, if it's not the target. Then find and
* write-lock the current left sibling of the target page. The sibling
* that was current a moment ago could have split, so we may have to move
- * right. This search could fail if either the sibling or the target page
- * was deleted by someone else meanwhile; if so, give up. (Right now,
- * that should never happen, since page deletion is only done in VACUUM
- * and there shouldn't be multiple VACUUMs concurrently on the same
- * table.)
+ * right.
*/
if (target != leafblkno)
_bt_lockbuf(rel, leafbuf, BT_WRITE);
@@ -2370,23 +2371,26 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
while (P_ISDELETED(opaque) || opaque->btpo_next != target)
{
- /* step right one page */
- leftsib = opaque->btpo_next;
- _bt_relbuf(rel, lbuf);
+ bool leftsibvalid = true;
/*
- * It'd be good to check for interrupts here, but it's not easy to
- * do so because a lock is always held. This block isn't
- * frequently reached, so hopefully the consequences of not
- * checking interrupts aren't too bad.
+ * Before we follow the link from the page that was the left
+ * sibling mere moments ago, validate its right link. This
+ * reduces the opportunities for loop to fail to ever make any
+ * progress in the presence of index corruption.
+ *
+ * Note: we rely on the assumption that there can only be one
+ * vacuum process running at a time (against the same index).
*/
+ if (P_RIGHTMOST(opaque) || P_ISDELETED(opaque) ||
+ leftsib == opaque->btpo_next)
+ leftsibvalid = false;
+
+ leftsib = opaque->btpo_next;
+ _bt_relbuf(rel, lbuf);
- if (leftsib == P_NONE)
+ if (!leftsibvalid)
{
- ereport(LOG,
- (errmsg("no left sibling (concurrent deletion?) of block %u in \"%s\"",
- target,
- RelationGetRelationName(rel))));
if (target != leafblkno)
{
/* we have only a pin on target, but pin+lock on leafbuf */
@@ -2398,8 +2402,20 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
/* we have only a pin on leafbuf */
ReleaseBuffer(leafbuf);
}
+
+ ereport(LOG,
+ (errcode(ERRCODE_INDEX_CORRUPTED),
+ errmsg_internal("valid left sibling for deletion target could not be located: "
+ "left sibling %u of target %u with leafblkno %u and scanblkno %u in index \"%s\"",
+ leftsib, target, leafblkno, scanblkno,
+ RelationGetRelationName(rel))));
+
return false;
}
+
+ CHECK_FOR_INTERRUPTS();
+
+ /* step right one page */
lbuf = _bt_getbuf(rel, leftsib, BT_WRITE);
page = BufferGetPage(lbuf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -2408,11 +2424,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
else
lbuf = InvalidBuffer;
- /*
- * Next write-lock the target page itself. It's okay to take a write lock
- * rather than a superexclusive lock, since no scan will stop on an empty
- * page.
- */
+ /* Next write-lock the target page itself */
_bt_lockbuf(rel, buf, BT_WRITE);
page = BufferGetPage(buf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -2547,7 +2559,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
* Mark the page itself deleted. It can be recycled when all current
* transactions are gone. Storing GetTopTransactionId() would work, but
* we're in VACUUM and would not otherwise have an XID. Having already
- * updated links to the target, ReadNewTransactionId() suffices as an
+ * updated links to the target, ReadNextTransactionId() suffices as an
* upper bound. Any scan having retained a now-stale link is advertising
* in its PGPROC an xmin less than or equal to the value we read here. It
* will continue to do so, holding back the xmin horizon, for the duration
@@ -2558,7 +2570,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
Assert(P_ISHALFDEAD(opaque) || !P_ISLEAF(opaque));
opaque->btpo_flags &= ~BTP_HALF_DEAD;
opaque->btpo_flags |= BTP_DELETED;
- opaque->btpo.xact = ReadNewTransactionId();
+ opaque->btpo.xact = ReadNextTransactionId();
/*
* Remove the remaining tuples on the page. This keeps things simple for
diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c
index 9f42461e12c2c..48e8d66286087 100644
--- a/src/backend/access/transam/commit_ts.c
+++ b/src/backend/access/transam/commit_ts.c
@@ -733,7 +733,7 @@ ActivateCommitTs(void)
if (ShmemVariableCache->oldestCommitTsXid == InvalidTransactionId)
{
ShmemVariableCache->oldestCommitTsXid =
- ShmemVariableCache->newestCommitTsXid = ReadNewTransactionId();
+ ShmemVariableCache->newestCommitTsXid = ReadNextTransactionId();
}
LWLockRelease(CommitTsLock);
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 7dcfa02323698..1f9f1a1fa10ca 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -2277,7 +2277,7 @@ SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid,
/* Log the info */
ereport(DEBUG1,
- (errmsg("MultiXactId wrap limit is %u, limited by database with OID %u",
+ (errmsg_internal("MultiXactId wrap limit is %u, limited by database with OID %u",
multiWrapLimit, oldest_datoid)));
/*
@@ -2611,7 +2611,7 @@ SetOffsetVacuumLimit(bool is_startup)
if (oldestOffsetKnown)
ereport(DEBUG1,
- (errmsg("oldest MultiXactId member is at offset %u",
+ (errmsg_internal("oldest MultiXactId member is at offset %u",
oldestOffset)));
else
ereport(LOG,
@@ -2640,7 +2640,7 @@ SetOffsetVacuumLimit(bool is_startup)
(errmsg("MultiXact member wraparound protections are now enabled")));
ereport(DEBUG1,
- (errmsg("MultiXact member stop limit is now %u based on MultiXact %u",
+ (errmsg_internal("MultiXact member stop limit is now %u based on MultiXact %u",
offsetStopLimit, oldestMultiXactId)));
}
else if (prevOldestOffsetKnown)
diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c
index e49e06e896414..82149ad7821cd 100644
--- a/src/backend/access/transam/slru.c
+++ b/src/backend/access/transam/slru.c
@@ -1315,7 +1315,7 @@ SlruInternalDeleteSegment(SlruCtl ctl, int segno)
/* Unlink the file. */
SlruFileName(ctl, path, segno);
- ereport(DEBUG2, (errmsg("removing file \"%s\"", path)));
+ ereport(DEBUG2, (errmsg_internal("removing file \"%s\"", path)));
unlink(path);
}
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c
index fc18b778324dd..70d22577ceee7 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -873,8 +873,15 @@ PGPROC *
TwoPhaseGetDummyProc(TransactionId xid, bool lock_held)
{
GlobalTransaction gxact = TwoPhaseGetGXact(xid, lock_held);
+ PGPROC *dummy = &ProcGlobal->allProcs[gxact->pgprocno];
- return &ProcGlobal->allProcs[gxact->pgprocno];
+ /*
+ * Initialize atomic variable in dummy proc so that GetLockStatusData()
+ * can read it later.
+ */
+ pg_atomic_init_u64(&dummy->waitStart, 0);
+
+ return dummy;
}
/************************************************************************/
diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c
index 2264c2c849cac..142da4aaff3cc 100644
--- a/src/backend/access/transam/varsup.c
+++ b/src/backend/access/transam/varsup.c
@@ -425,7 +425,7 @@ SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Oid oldest_datoid)
/* Log the info */
ereport(DEBUG1,
- (errmsg("transaction ID wrap limit is %u, limited by database with OID %u",
+ (errmsg_internal("transaction ID wrap limit is %u, limited by database with OID %u",
xidWrapLimit, oldest_datoid)));
/*
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index a2068e3fd45d8..4e6a3df6b8742 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -548,7 +548,7 @@ GetStableLatestTransactionId(void)
lxid = MyProc->lxid;
stablexid = GetTopTransactionIdIfAny();
if (!TransactionIdIsValid(stablexid))
- stablexid = ReadNewTransactionId();
+ stablexid = ReadNextTransactionId();
}
Assert(TransactionIdIsValid(stablexid));
@@ -2432,15 +2432,6 @@ PrepareTransaction(void)
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot PREPARE a transaction that has exported snapshots")));
- /*
- * Don't allow PREPARE but for transaction that has/might kill logical
- * replication workers.
- */
- if (XactManipulatesLogicalReplicationWorkers())
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot PREPARE a transaction that has manipulated logical replication workers")));
-
/* Prevent cancel/die interrupt while cleaning up */
HOLD_INTERRUPTS();
@@ -3114,6 +3105,13 @@ CommitTransactionCommand(void)
Assert(s->parent == NULL);
CommitTransaction();
s->blockState = TBLOCK_DEFAULT;
+ if (s->chain)
+ {
+ StartTransaction();
+ s->blockState = TBLOCK_INPROGRESS;
+ s->chain = false;
+ RestoreTransactionCharacteristics();
+ }
}
else if (s->blockState == TBLOCK_PREPARE)
{
@@ -4899,7 +4897,6 @@ CommitSubTransaction(void)
AtEOSubXact_HashTables(true, s->nestingLevel);
AtEOSubXact_PgStat(true, s->nestingLevel);
AtSubCommit_Snapshot(s->nestingLevel);
- AtEOSubXact_ApplyLauncher(true, s->nestingLevel);
/*
* We need to restore the upper transaction's read-only state, in case the
@@ -5059,7 +5056,6 @@ AbortSubTransaction(void)
AtEOSubXact_HashTables(false, s->nestingLevel);
AtEOSubXact_PgStat(false, s->nestingLevel);
AtSubAbort_Snapshot(s->nestingLevel);
- AtEOSubXact_ApplyLauncher(false, s->nestingLevel);
}
/*
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index f03bd473e2b30..e0c37f73f3e97 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -2837,7 +2837,7 @@ UpdateMinRecoveryPoint(XLogRecPtr lsn, bool force)
minRecoveryPointTLI = newMinRecoveryPointTLI;
ereport(DEBUG2,
- (errmsg("updated min recovery point to %X/%X on timeline %u",
+ (errmsg_internal("updated min recovery point to %X/%X on timeline %u",
(uint32) (minRecoveryPoint >> 32),
(uint32) minRecoveryPoint,
newMinRecoveryPointTLI)));
@@ -4209,7 +4209,7 @@ RemoveXlogFile(const char *segname, XLogSegNo recycleSegNo,
true, recycleSegNo, true))
{
ereport(DEBUG2,
- (errmsg("recycled write-ahead log file \"%s\"",
+ (errmsg_internal("recycled write-ahead log file \"%s\"",
segname)));
CheckpointStats.ckpt_segs_recycled++;
/* Needn't recheck that slot on future iterations */
@@ -4221,7 +4221,7 @@ RemoveXlogFile(const char *segname, XLogSegNo recycleSegNo,
int rc;
ereport(DEBUG2,
- (errmsg("removing write-ahead log file \"%s\"",
+ (errmsg_internal("removing write-ahead log file \"%s\"",
segname)));
#ifdef WIN32
@@ -6597,7 +6597,7 @@ StartupXLOG(void)
memcpy(&checkPoint, XLogRecGetData(xlogreader), sizeof(CheckPoint));
wasShutdown = ((record->xl_info & ~XLR_INFO_MASK) == XLOG_CHECKPOINT_SHUTDOWN);
ereport(DEBUG1,
- (errmsg("checkpoint record is at %X/%X",
+ (errmsg_internal("checkpoint record is at %X/%X",
(uint32) (checkPointLoc >> 32), (uint32) checkPointLoc)));
InRecovery = true; /* force recovery even if SHUTDOWNED */
@@ -6730,7 +6730,7 @@ StartupXLOG(void)
if (record != NULL)
{
ereport(DEBUG1,
- (errmsg("checkpoint record is at %X/%X",
+ (errmsg_internal("checkpoint record is at %X/%X",
(uint32) (checkPointLoc >> 32), (uint32) checkPointLoc)));
}
else
@@ -7118,7 +7118,7 @@ StartupXLOG(void)
int nxids;
ereport(DEBUG1,
- (errmsg("initializing for hot standby")));
+ (errmsg_internal("initializing for hot standby")));
InitRecoveryTransactionEnvironment();
@@ -7998,17 +7998,16 @@ StartupXLOG(void)
* All done with end-of-recovery actions.
*
* Now allow backends to write WAL and update the control file status in
- * consequence. The boolean flag allowing backends to write WAL is
- * updated while holding ControlFileLock to prevent other backends to look
- * at an inconsistent state of the control file in shared memory. There
- * is still a small window during which backends can write WAL and the
- * control file is still referring to a system not in DB_IN_PRODUCTION
+ * consequence. SharedRecoveryState, that controls if backends can write
+ * WAL, is updated while holding ControlFileLock to prevent other backends
+ * to look at an inconsistent state of the control file in shared memory.
+ * There is still a small window during which backends can write WAL and
+ * the control file is still referring to a system not in DB_IN_PRODUCTION
* state while looking at the on-disk control file.
*
- * Also, although the boolean flag to allow WAL is probably atomic in
- * itself, we use the info_lck here to ensure that there are no race
- * conditions concerning visibility of other recent updates to shared
- * memory.
+ * Also, we use info_lck to update SharedRecoveryState to ensure that
+ * there are no race conditions concerning visibility of other recent
+ * updates to shared memory.
*/
LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
ControlFile->state = DB_IN_PRODUCTION;
@@ -8934,7 +8933,7 @@ CreateCheckPoint(int flags)
WALInsertLockRelease();
END_CRIT_SECTION();
ereport(DEBUG1,
- (errmsg("checkpoint skipped because system is idle")));
+ (errmsg_internal("checkpoint skipped because system is idle")));
return;
}
}
@@ -9400,7 +9399,7 @@ CreateRestartPoint(int flags)
if (!RecoveryInProgress())
{
ereport(DEBUG2,
- (errmsg("skipping restartpoint, recovery has already ended")));
+ (errmsg_internal("skipping restartpoint, recovery has already ended")));
return false;
}
@@ -9422,7 +9421,7 @@ CreateRestartPoint(int flags)
lastCheckPoint.redo <= ControlFile->checkPointCopy.redo)
{
ereport(DEBUG2,
- (errmsg("skipping restartpoint, already performed at %X/%X",
+ (errmsg_internal("skipping restartpoint, already performed at %X/%X",
(uint32) (lastCheckPoint.redo >> 32),
(uint32) lastCheckPoint.redo)));
@@ -11764,12 +11763,12 @@ read_backup_label(XLogRecPtr *checkPointLoc, bool *backupEndRequired,
*/
if (fscanf(lfp, "START TIME: %127[^\n]\n", backuptime) == 1)
ereport(DEBUG1,
- (errmsg("backup time %s in file \"%s\"",
+ (errmsg_internal("backup time %s in file \"%s\"",
backuptime, BACKUP_LABEL_FILE)));
if (fscanf(lfp, "LABEL: %1023[^\n]\n", backuplabel) == 1)
ereport(DEBUG1,
- (errmsg("backup label %s in file \"%s\"",
+ (errmsg_internal("backup label %s in file \"%s\"",
backuplabel, BACKUP_LABEL_FILE)));
/*
@@ -11786,7 +11785,7 @@ read_backup_label(XLogRecPtr *checkPointLoc, bool *backupEndRequired,
tli_from_file, tli_from_walseg)));
ereport(DEBUG1,
- (errmsg("backup timeline %u in file \"%s\"",
+ (errmsg_internal("backup timeline %u in file \"%s\"",
tli_from_file, BACKUP_LABEL_FILE)));
}
diff --git a/src/backend/access/transam/xlogfuncs.c b/src/backend/access/transam/xlogfuncs.c
index 5e1aab319dda8..d8c5bf6dc2958 100644
--- a/src/backend/access/transam/xlogfuncs.c
+++ b/src/backend/access/transam/xlogfuncs.c
@@ -781,6 +781,9 @@ pg_promote(PG_FUNCTION_ARGS)
}
ereport(WARNING,
- (errmsg("server did not promote within %d seconds", wait_seconds)));
+ (errmsg_plural("server did not promote within %d second",
+ "server did not promote within %d seconds",
+ wait_seconds,
+ wait_seconds)));
PG_RETURN_BOOL(false);
}
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 132573362497e..8d8e926c21c79 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -1198,7 +1198,7 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
* log_min_messages are different.
*/
ereport(DEBUG2,
- (errmsg("drop auto-cascades to %s",
+ (errmsg_internal("drop auto-cascades to %s",
objDesc)));
}
else if (behavior == DROP_RESTRICT)
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 1cb9172a5f31d..b4ab0b88ad09e 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -1884,6 +1884,62 @@ index_concurrently_swap(Oid newIndexId, Oid oldIndexId, const char *oldName)
/* Copy data of pg_statistic from the old index to the new one */
CopyStatistics(oldIndexId, newIndexId);
+ /* Copy pg_attribute.attstattarget for each index attribute */
+ {
+ HeapTuple attrTuple;
+ Relation pg_attribute;
+ SysScanDesc scan;
+ ScanKeyData key[1];
+
+ pg_attribute = table_open(AttributeRelationId, RowExclusiveLock);
+ ScanKeyInit(&key[0],
+ Anum_pg_attribute_attrelid,
+ BTEqualStrategyNumber, F_OIDEQ,
+ ObjectIdGetDatum(newIndexId));
+ scan = systable_beginscan(pg_attribute, AttributeRelidNumIndexId,
+ true, NULL, 1, key);
+
+ while (HeapTupleIsValid((attrTuple = systable_getnext(scan))))
+ {
+ Form_pg_attribute att = (Form_pg_attribute) GETSTRUCT(attrTuple);
+ Datum repl_val[Natts_pg_attribute];
+ bool repl_null[Natts_pg_attribute];
+ bool repl_repl[Natts_pg_attribute];
+ int attstattarget;
+ HeapTuple newTuple;
+
+ /* Ignore dropped columns */
+ if (att->attisdropped)
+ continue;
+
+ /*
+ * Get attstattarget from the old index and refresh the new value.
+ */
+ attstattarget = get_attstattarget(oldIndexId, att->attnum);
+
+ /* no need for a refresh if both match */
+ if (attstattarget == att->attstattarget)
+ continue;
+
+ memset(repl_val, 0, sizeof(repl_val));
+ memset(repl_null, false, sizeof(repl_null));
+ memset(repl_repl, false, sizeof(repl_repl));
+
+ repl_repl[Anum_pg_attribute_attstattarget - 1] = true;
+ repl_val[Anum_pg_attribute_attstattarget - 1] = Int32GetDatum(attstattarget);
+
+ newTuple = heap_modify_tuple(attrTuple,
+ RelationGetDescr(pg_attribute),
+ repl_val, repl_null, repl_repl);
+ CatalogTupleUpdate(pg_attribute, &newTuple->t_self, newTuple);
+
+ heap_freetuple(newTuple);
+ }
+
+ systable_endscan(scan);
+ table_close(pg_attribute, RowExclusiveLock);
+ }
+
/* Close relations */
table_close(pg_class, RowExclusiveLock);
table_close(pg_index, RowExclusiveLock);
@@ -3025,14 +3081,12 @@ index_build(Relation heapRelation,
if (indexInfo->ii_ParallelWorkers == 0)
ereport(DEBUG1,
- (errmsg("building index \"%s\" on table \"%s\" serially",
+ (errmsg_internal("building index \"%s\" on table \"%s\" serially",
RelationGetRelationName(indexRelation),
RelationGetRelationName(heapRelation))));
else
ereport(DEBUG1,
- (errmsg_plural("building index \"%s\" on table \"%s\" with request for %d parallel worker",
- "building index \"%s\" on table \"%s\" with request for %d parallel workers",
- indexInfo->ii_ParallelWorkers,
+ (errmsg_internal("building index \"%s\" on table \"%s\" with request for %d parallel workers",
RelationGetRelationName(indexRelation),
RelationGetRelationName(heapRelation),
indexInfo->ii_ParallelWorkers)));
diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql
index 4907855043d87..513cb9a69cf91 100644
--- a/src/backend/catalog/information_schema.sql
+++ b/src/backend/catalog/information_schema.sql
@@ -1325,7 +1325,33 @@ GRANT SELECT ON role_column_grants TO PUBLIC;
* ROUTINE_COLUMN_USAGE view
*/
--- not tracked by PostgreSQL
+CREATE VIEW routine_column_usage AS
+ SELECT CAST(current_database() AS sql_identifier) AS specific_catalog,
+ CAST(np.nspname AS sql_identifier) AS specific_schema,
+ CAST(nameconcatoid(p.proname, p.oid) AS sql_identifier) AS specific_name,
+ CAST(current_database() AS sql_identifier) AS routine_catalog,
+ CAST(np.nspname AS sql_identifier) AS routine_schema,
+ CAST(p.proname AS sql_identifier) AS routine_name,
+ CAST(current_database() AS sql_identifier) AS table_catalog,
+ CAST(nt.nspname AS sql_identifier) AS table_schema,
+ CAST(t.relname AS sql_identifier) AS table_name,
+ CAST(a.attname AS sql_identifier) AS column_name
+
+ FROM pg_namespace np, pg_proc p, pg_depend d,
+ pg_class t, pg_namespace nt, pg_attribute a
+
+ WHERE np.oid = p.pronamespace
+ AND p.oid = d.objid
+ AND d.classid = 'pg_catalog.pg_proc'::regclass
+ AND d.refobjid = t.oid
+ AND d.refclassid = 'pg_catalog.pg_class'::regclass
+ AND t.relnamespace = nt.oid
+ AND t.relkind IN ('r', 'v', 'f', 'p')
+ AND t.oid = a.attrelid
+ AND d.refobjsubid = a.attnum
+ AND pg_has_role(t.relowner, 'USAGE');
+
+GRANT SELECT ON routine_column_usage TO PUBLIC;
/*
@@ -1408,7 +1434,27 @@ GRANT SELECT ON role_routine_grants TO PUBLIC;
* ROUTINE_ROUTINE_USAGE view
*/
--- not tracked by PostgreSQL
+CREATE VIEW routine_routine_usage AS
+ SELECT CAST(current_database() AS sql_identifier) AS specific_catalog,
+ CAST(np.nspname AS sql_identifier) AS specific_schema,
+ CAST(nameconcatoid(p.proname, p.oid) AS sql_identifier) AS specific_name,
+ CAST(current_database() AS sql_identifier) AS routine_catalog,
+ CAST(np1.nspname AS sql_identifier) AS routine_schema,
+ CAST(nameconcatoid(p1.proname, p1.oid) AS sql_identifier) AS routine_name
+
+ FROM pg_namespace np, pg_proc p, pg_depend d,
+ pg_proc p1, pg_namespace np1
+
+ WHERE np.oid = p.pronamespace
+ AND p.oid = d.objid
+ AND d.classid = 'pg_catalog.pg_proc'::regclass
+ AND d.refobjid = p1.oid
+ AND d.refclassid = 'pg_catalog.pg_proc'::regclass
+ AND p1.pronamespace = np1.oid
+ AND p.prokind IN ('f', 'p') AND p1.prokind IN ('f', 'p')
+ AND pg_has_role(p1.proowner, 'USAGE');
+
+GRANT SELECT ON routine_routine_usage TO PUBLIC;
/*
@@ -1416,7 +1462,30 @@ GRANT SELECT ON role_routine_grants TO PUBLIC;
* ROUTINE_SEQUENCE_USAGE view
*/
--- not tracked by PostgreSQL
+CREATE VIEW routine_sequence_usage AS
+ SELECT CAST(current_database() AS sql_identifier) AS specific_catalog,
+ CAST(np.nspname AS sql_identifier) AS specific_schema,
+ CAST(nameconcatoid(p.proname, p.oid) AS sql_identifier) AS specific_name,
+ CAST(current_database() AS sql_identifier) AS routine_catalog,
+ CAST(np.nspname AS sql_identifier) AS routine_schema,
+ CAST(p.proname AS sql_identifier) AS routine_name,
+ CAST(current_database() AS sql_identifier) AS sequence_catalog,
+ CAST(ns.nspname AS sql_identifier) AS sequence_schema,
+ CAST(s.relname AS sql_identifier) AS sequence_name
+
+ FROM pg_namespace np, pg_proc p, pg_depend d,
+ pg_class s, pg_namespace ns
+
+ WHERE np.oid = p.pronamespace
+ AND p.oid = d.objid
+ AND d.classid = 'pg_catalog.pg_proc'::regclass
+ AND d.refobjid = s.oid
+ AND d.refclassid = 'pg_catalog.pg_class'::regclass
+ AND s.relnamespace = ns.oid
+ AND s.relkind = 'S'
+ AND pg_has_role(s.relowner, 'USAGE');
+
+GRANT SELECT ON routine_sequence_usage TO PUBLIC;
/*
@@ -1424,7 +1493,30 @@ GRANT SELECT ON role_routine_grants TO PUBLIC;
* ROUTINE_TABLE_USAGE view
*/
--- not tracked by PostgreSQL
+CREATE VIEW routine_table_usage AS
+ SELECT CAST(current_database() AS sql_identifier) AS specific_catalog,
+ CAST(np.nspname AS sql_identifier) AS specific_schema,
+ CAST(nameconcatoid(p.proname, p.oid) AS sql_identifier) AS specific_name,
+ CAST(current_database() AS sql_identifier) AS routine_catalog,
+ CAST(np.nspname AS sql_identifier) AS routine_schema,
+ CAST(p.proname AS sql_identifier) AS routine_name,
+ CAST(current_database() AS sql_identifier) AS table_catalog,
+ CAST(nt.nspname AS sql_identifier) AS table_schema,
+ CAST(t.relname AS sql_identifier) AS table_name
+
+ FROM pg_namespace np, pg_proc p, pg_depend d,
+ pg_class t, pg_namespace nt
+
+ WHERE np.oid = p.pronamespace
+ AND p.oid = d.objid
+ AND d.classid = 'pg_catalog.pg_proc'::regclass
+ AND d.refobjid = t.oid
+ AND d.refclassid = 'pg_catalog.pg_class'::regclass
+ AND t.relnamespace = nt.oid
+ AND t.relkind IN ('r', 'v', 'f', 'p')
+ AND pg_has_role(t.relowner, 'USAGE');
+
+GRANT SELECT ON routine_table_usage TO PUBLIC;
/*
diff --git a/src/backend/catalog/pg_inherits.c b/src/backend/catalog/pg_inherits.c
index f3783961b7a11..5ab79028274a7 100644
--- a/src/backend/catalog/pg_inherits.c
+++ b/src/backend/catalog/pg_inherits.c
@@ -3,8 +3,8 @@
* pg_inherits.c
* routines to support manipulation of the pg_inherits relation
*
- * Note: currently, this module only contains inquiry functions; the actual
- * creation and deletion of pg_inherits entries is done in tablecmds.c.
+ * Note: currently, this module mostly contains inquiry functions; actual
+ * creation and deletion of pg_inherits entries is mostly done in tablecmds.c.
* Perhaps someday that code should be moved here, but it'd have to be
* disentangled from other stuff such as pg_depend updates.
*
@@ -277,9 +277,11 @@ has_subclass(Oid relationId)
}
/*
- * has_superclass - does this relation inherit from another? The caller
- * should hold a lock on the given relation so that it can't be concurrently
- * added to or removed from an inheritance hierarchy.
+ * has_superclass - does this relation inherit from another?
+ *
+ * Unlike has_subclass, this can be relied on to give an accurate answer.
+ * However, the caller must hold a lock on the given relation so that it
+ * can't be concurrently added to or removed from an inheritance hierarchy.
*/
bool
has_superclass(Oid relationId)
diff --git a/src/backend/catalog/pg_subscription.c b/src/backend/catalog/pg_subscription.c
index 44cb285b68650..c32fc8137d8ef 100644
--- a/src/backend/catalog/pg_subscription.c
+++ b/src/backend/catalog/pg_subscription.c
@@ -29,6 +29,7 @@
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/lsyscache.h"
#include "utils/pg_lsn.h"
#include "utils/rel.h"
#include "utils/syscache.h"
@@ -337,6 +338,13 @@ GetSubscriptionRelState(Oid subid, Oid relid, XLogRecPtr *sublsn)
char substate;
bool isnull;
Datum d;
+ Relation rel;
+
+ /*
+ * This is to avoid the race condition with AlterSubscription which tries
+ * to remove this relstate.
+ */
+ rel = table_open(SubscriptionRelRelationId, AccessShareLock);
/* Try finding the mapping. */
tup = SearchSysCache2(SUBSCRIPTIONRELMAP,
@@ -363,6 +371,8 @@ GetSubscriptionRelState(Oid subid, Oid relid, XLogRecPtr *sublsn)
/* Cleanup */
ReleaseSysCache(tup);
+ table_close(rel, AccessShareLock);
+
return substate;
}
@@ -403,6 +413,34 @@ RemoveSubscriptionRel(Oid subid, Oid relid)
scan = table_beginscan_catalog(rel, nkeys, skey);
while (HeapTupleIsValid(tup = heap_getnext(scan, ForwardScanDirection)))
{
+ Form_pg_subscription_rel subrel;
+
+ subrel = (Form_pg_subscription_rel) GETSTRUCT(tup);
+
+ /*
+ * We don't allow to drop the relation mapping when the table
+ * synchronization is in progress unless the caller updates the
+ * corresponding subscription as well. This is to ensure that we don't
+ * leave tablesync slots or origins in the system when the
+ * corresponding table is dropped.
+ */
+ if (!OidIsValid(subid) && subrel->srsubstate != SUBREL_STATE_READY)
+ {
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("could not drop relation mapping for subscription \"%s\"",
+ get_subscription_name(subrel->srsubid, false)),
+ errdetail("Table synchronization for relation \"%s\" is in progress and is in state \"%c\".",
+ get_rel_name(relid), subrel->srsubstate),
+ /*
+ * translator: first %s is a SQL ALTER command and second %s is a
+ * SQL DROP command
+ */
+ errhint("Use %s to enable subscription if not already enabled or use %s to drop the subscription.",
+ "ALTER SUBSCRIPTION ... ENABLE",
+ "DROP SUBSCRIPTION ...")));
+ }
+
CatalogTupleDelete(rel, &tup->t_self);
}
table_endscan(scan);
diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt
index 86519ad2974a0..a24387c1e7645 100644
--- a/src/backend/catalog/sql_features.txt
+++ b/src/backend/catalog/sql_features.txt
@@ -243,7 +243,7 @@ F312 MERGE statement NO consider INSERT ... ON CONFLICT DO UPDATE
F313 Enhanced MERGE statement NO
F314 MERGE statement with DELETE branch NO
F321 User authorization YES
-F341 Usage tables NO no ROUTINE_*_USAGE tables
+F341 Usage tables YES
F361 Subprogram support YES
F381 Extended schema manipulation YES
F381 Extended schema manipulation 01 ALTER TABLE statement: ALTER COLUMN clause YES
diff --git a/src/backend/commands/copyfrom.c b/src/backend/commands/copyfrom.c
index c39cc736ed2bc..796ca7b3f7b3a 100644
--- a/src/backend/commands/copyfrom.c
+++ b/src/backend/commands/copyfrom.c
@@ -666,6 +666,7 @@ CopyFrom(CopyFromState cstate)
mtstate->ps.state = estate;
mtstate->operation = CMD_INSERT;
mtstate->resultRelInfo = resultRelInfo;
+ mtstate->rootResultRelInfo = resultRelInfo;
if (resultRelInfo->ri_FdwRoutine != NULL &&
resultRelInfo->ri_FdwRoutine->BeginForeignInsert != NULL)
diff --git a/src/backend/commands/copyfromparse.c b/src/backend/commands/copyfromparse.c
index b843d315b175d..315b16fd7af79 100644
--- a/src/backend/commands/copyfromparse.c
+++ b/src/backend/commands/copyfromparse.c
@@ -1084,7 +1084,7 @@ CopyReadLineText(CopyFromState cstate)
break;
}
else if (!cstate->opts.csv_mode)
-
+ {
/*
* If we are here, it means we found a backslash followed by
* something other than a period. In non-CSV mode, anything
@@ -1095,8 +1095,16 @@ CopyReadLineText(CopyFromState cstate)
* backslashes are not special, so we want to process the
* character after the backslash just like a normal character,
* so we don't increment in those cases.
+ *
+ * Set 'c' to skip whole character correctly in multi-byte
+ * encodings. If we don't have the whole character in the
+ * buffer yet, we might loop back to process it, after all,
+ * but that's OK because multi-byte characters cannot have any
+ * special meaning.
*/
raw_buf_ptr++;
+ c = c2;
+ }
}
/*
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 5d7eb3574c823..f80e379973aab 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -3694,7 +3694,7 @@ show_modifytable_info(ModifyTableState *mtstate, List *ancestors,
/* Should we explicitly label target relations? */
labeltargets = (mtstate->mt_nplans > 1 ||
(mtstate->mt_nplans == 1 &&
- mtstate->resultRelInfo->ri_RangeTableIndex != node->nominalRelation));
+ mtstate->resultRelInfo[0].ri_RangeTableIndex != node->nominalRelation));
if (labeltargets)
ExplainOpenGroup("Target Tables", "Target Tables", false, es);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 127ba7835dab1..e1bed087d7cb9 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1085,7 +1085,7 @@ DefineIndex(Oid relationId,
}
ereport(DEBUG1,
- (errmsg("%s %s will create implicit index \"%s\" for table \"%s\"",
+ (errmsg_internal("%s %s will create implicit index \"%s\" for table \"%s\"",
is_alter_table ? "ALTER TABLE / ADD" : "CREATE TABLE /",
constraint_type,
indexRelationName, RelationGetRelationName(rel))));
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c
index 082f7855b89c1..bfd3514546a54 100644
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -34,6 +34,7 @@
#include "nodes/makefuncs.h"
#include "replication/logicallauncher.h"
#include "replication/origin.h"
+#include "replication/slot.h"
#include "replication/walreceiver.h"
#include "replication/walsender.h"
#include "replication/worker_internal.h"
@@ -46,6 +47,8 @@
#include "utils/syscache.h"
static List *fetch_table_list(WalReceiverConn *wrconn, List *publications);
+static void ReportSlotConnectionError(List *rstates, Oid subid, char *slotname, char *err);
+
/*
* Common option parsing function for CREATE and ALTER SUBSCRIPTION commands.
@@ -566,107 +569,209 @@ AlterSubscription_refresh(Subscription *sub, bool copy_data)
Oid *pubrel_local_oids;
ListCell *lc;
int off;
+ int remove_rel_len;
+ Relation rel = NULL;
+ typedef struct SubRemoveRels
+ {
+ Oid relid;
+ char state;
+ } SubRemoveRels;
+ SubRemoveRels *sub_remove_rels;
/* Load the library providing us libpq calls. */
load_file("libpqwalreceiver", false);
- /* Try to connect to the publisher. */
- wrconn = walrcv_connect(sub->conninfo, true, sub->name, &err);
- if (!wrconn)
- ereport(ERROR,
- (errmsg("could not connect to the publisher: %s", err)));
-
- /* Get the table list from publisher. */
- pubrel_names = fetch_table_list(wrconn, sub->publications);
+ PG_TRY();
+ {
+ /* Try to connect to the publisher. */
+ wrconn = walrcv_connect(sub->conninfo, true, sub->name, &err);
+ if (!wrconn)
+ ereport(ERROR,
+ (errmsg("could not connect to the publisher: %s", err)));
- /* We are done with the remote side, close connection. */
- walrcv_disconnect(wrconn);
+ /* Get the table list from publisher. */
+ pubrel_names = fetch_table_list(wrconn, sub->publications);
- /* Get local table list. */
- subrel_states = GetSubscriptionRelations(sub->oid);
+ /* Get local table list. */
+ subrel_states = GetSubscriptionRelations(sub->oid);
- /*
- * Build qsorted array of local table oids for faster lookup. This can
- * potentially contain all tables in the database so speed of lookup is
- * important.
- */
- subrel_local_oids = palloc(list_length(subrel_states) * sizeof(Oid));
- off = 0;
- foreach(lc, subrel_states)
- {
- SubscriptionRelState *relstate = (SubscriptionRelState *) lfirst(lc);
+ /*
+ * Build qsorted array of local table oids for faster lookup. This can
+ * potentially contain all tables in the database so speed of lookup
+ * is important.
+ */
+ subrel_local_oids = palloc(list_length(subrel_states) * sizeof(Oid));
+ off = 0;
+ foreach(lc, subrel_states)
+ {
+ SubscriptionRelState *relstate = (SubscriptionRelState *) lfirst(lc);
- subrel_local_oids[off++] = relstate->relid;
- }
- qsort(subrel_local_oids, list_length(subrel_states),
- sizeof(Oid), oid_cmp);
+ subrel_local_oids[off++] = relstate->relid;
+ }
+ qsort(subrel_local_oids, list_length(subrel_states),
+ sizeof(Oid), oid_cmp);
+
+ /*
+ * Rels that we want to remove from subscription and drop any slots
+ * and origins corresponding to them.
+ */
+ sub_remove_rels = palloc(list_length(subrel_states) * sizeof(SubRemoveRels));
+
+ /*
+ * Walk over the remote tables and try to match them to locally known
+ * tables. If the table is not known locally create a new state for
+ * it.
+ *
+ * Also builds array of local oids of remote tables for the next step.
+ */
+ off = 0;
+ pubrel_local_oids = palloc(list_length(pubrel_names) * sizeof(Oid));
+
+ foreach(lc, pubrel_names)
+ {
+ RangeVar *rv = (RangeVar *) lfirst(lc);
+ Oid relid;
- /*
- * Walk over the remote tables and try to match them to locally known
- * tables. If the table is not known locally create a new state for it.
- *
- * Also builds array of local oids of remote tables for the next step.
- */
- off = 0;
- pubrel_local_oids = palloc(list_length(pubrel_names) * sizeof(Oid));
+ relid = RangeVarGetRelid(rv, AccessShareLock, false);
- foreach(lc, pubrel_names)
- {
- RangeVar *rv = (RangeVar *) lfirst(lc);
- Oid relid;
+ /* Check for supported relkind. */
+ CheckSubscriptionRelkind(get_rel_relkind(relid),
+ rv->schemaname, rv->relname);
- relid = RangeVarGetRelid(rv, AccessShareLock, false);
+ pubrel_local_oids[off++] = relid;
- /* Check for supported relkind. */
- CheckSubscriptionRelkind(get_rel_relkind(relid),
- rv->schemaname, rv->relname);
+ if (!bsearch(&relid, subrel_local_oids,
+ list_length(subrel_states), sizeof(Oid), oid_cmp))
+ {
+ AddSubscriptionRelState(sub->oid, relid,
+ copy_data ? SUBREL_STATE_INIT : SUBREL_STATE_READY,
+ InvalidXLogRecPtr);
+ ereport(DEBUG1,
+ (errmsg_internal("table \"%s.%s\" added to subscription \"%s\"",
+ rv->schemaname, rv->relname, sub->name)));
+ }
+ }
- pubrel_local_oids[off++] = relid;
+ /*
+ * Next remove state for tables we should not care about anymore using
+ * the data we collected above
+ */
+ qsort(pubrel_local_oids, list_length(pubrel_names),
+ sizeof(Oid), oid_cmp);
- if (!bsearch(&relid, subrel_local_oids,
- list_length(subrel_states), sizeof(Oid), oid_cmp))
+ remove_rel_len = 0;
+ for (off = 0; off < list_length(subrel_states); off++)
{
- AddSubscriptionRelState(sub->oid, relid,
- copy_data ? SUBREL_STATE_INIT : SUBREL_STATE_READY,
- InvalidXLogRecPtr);
- ereport(DEBUG1,
- (errmsg("table \"%s.%s\" added to subscription \"%s\"",
- rv->schemaname, rv->relname, sub->name)));
- }
- }
+ Oid relid = subrel_local_oids[off];
- /*
- * Next remove state for tables we should not care about anymore using the
- * data we collected above
- */
- qsort(pubrel_local_oids, list_length(pubrel_names),
- sizeof(Oid), oid_cmp);
+ if (!bsearch(&relid, pubrel_local_oids,
+ list_length(pubrel_names), sizeof(Oid), oid_cmp))
+ {
+ char state;
+ XLogRecPtr statelsn;
+
+ /*
+ * Lock pg_subscription_rel with AccessExclusiveLock to
+ * prevent any race conditions with the apply worker
+ * re-launching workers at the same time this code is trying
+ * to remove those tables.
+ *
+ * Even if new worker for this particular rel is restarted it
+ * won't be able to make any progress as we hold exclusive
+ * lock on subscription_rel till the transaction end. It will
+ * simply exit as there is no corresponding rel entry.
+ *
+ * This locking also ensures that the state of rels won't
+ * change till we are done with this refresh operation.
+ */
+ if (!rel)
+ rel = table_open(SubscriptionRelRelationId, AccessExclusiveLock);
+
+ /* Last known rel state. */
+ state = GetSubscriptionRelState(sub->oid, relid, &statelsn);
+
+ sub_remove_rels[remove_rel_len].relid = relid;
+ sub_remove_rels[remove_rel_len++].state = state;
+
+ RemoveSubscriptionRel(sub->oid, relid);
+
+ logicalrep_worker_stop(sub->oid, relid);
+
+ /*
+ * For READY state, we would have already dropped the
+ * tablesync origin.
+ */
+ if (state != SUBREL_STATE_READY)
+ {
+ char originname[NAMEDATALEN];
+
+ /*
+ * Drop the tablesync's origin tracking if exists.
+ *
+ * It is possible that the origin is not yet created for
+ * tablesync worker, this can happen for the states before
+ * SUBREL_STATE_FINISHEDCOPY. The apply worker can also
+ * concurrently try to drop the origin and by this time
+ * the origin might be already removed. For these reasons,
+ * passing missing_ok = true.
+ */
+ ReplicationOriginNameForTablesync(sub->oid, relid, originname,
+ sizeof(originname));
+ replorigin_drop_by_name(originname, true, false);
+ }
- for (off = 0; off < list_length(subrel_states); off++)
- {
- Oid relid = subrel_local_oids[off];
+ ereport(DEBUG1,
+ (errmsg_internal("table \"%s.%s\" removed from subscription \"%s\"",
+ get_namespace_name(get_rel_namespace(relid)),
+ get_rel_name(relid),
+ sub->name)));
+ }
+ }
- if (!bsearch(&relid, pubrel_local_oids,
- list_length(pubrel_names), sizeof(Oid), oid_cmp))
+ /*
+ * Drop the tablesync slots associated with removed tables. This has
+ * to be at the end because otherwise if there is an error while doing
+ * the database operations we won't be able to rollback dropped slots.
+ */
+ for (off = 0; off < remove_rel_len; off++)
{
- RemoveSubscriptionRel(sub->oid, relid);
-
- logicalrep_worker_stop_at_commit(sub->oid, relid);
-
- ereport(DEBUG1,
- (errmsg("table \"%s.%s\" removed from subscription \"%s\"",
- get_namespace_name(get_rel_namespace(relid)),
- get_rel_name(relid),
- sub->name)));
+ if (sub_remove_rels[off].state != SUBREL_STATE_READY &&
+ sub_remove_rels[off].state != SUBREL_STATE_SYNCDONE)
+ {
+ char syncslotname[NAMEDATALEN] = {0};
+
+ /*
+ * For READY/SYNCDONE states we know the tablesync slot has
+ * already been dropped by the tablesync worker.
+ *
+ * For other states, there is no certainty, maybe the slot
+ * does not exist yet. Also, if we fail after removing some of
+ * the slots, next time, it will again try to drop already
+ * dropped slots and fail. For these reasons, we allow
+ * missing_ok = true for the drop.
+ */
+ ReplicationSlotNameForTablesync(sub->oid, sub_remove_rels[off].relid,
+ syncslotname, sizeof(syncslotname));
+ ReplicationSlotDropAtPubNode(wrconn, syncslotname, true);
+ }
}
}
+ PG_FINALLY();
+ {
+ if (wrconn)
+ walrcv_disconnect(wrconn);
+ }
+ PG_END_TRY();
+
+ if (rel)
+ table_close(rel, NoLock);
}
/*
* Alter the existing subscription.
*/
ObjectAddress
-AlterSubscription(AlterSubscriptionStmt *stmt)
+AlterSubscription(AlterSubscriptionStmt *stmt, bool isTopLevel)
{
Relation rel;
ObjectAddress myself;
@@ -848,6 +953,8 @@ AlterSubscription(AlterSubscriptionStmt *stmt)
errmsg("ALTER SUBSCRIPTION with refresh is not allowed for disabled subscriptions"),
errhint("Use ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH (refresh = false).")));
+ PreventInTransactionBlock(isTopLevel, "ALTER SUBSCRIPTION with refresh");
+
/* Make sure refresh sees the new list of publications. */
sub->publications = stmt->publication;
@@ -877,6 +984,8 @@ AlterSubscription(AlterSubscriptionStmt *stmt)
NULL, NULL, /* no "binary" */
NULL, NULL); /* no "streaming" */
+ PreventInTransactionBlock(isTopLevel, "ALTER SUBSCRIPTION ... REFRESH");
+
AlterSubscription_refresh(sub, copy_data);
break;
@@ -926,10 +1035,9 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
ListCell *lc;
char originname[NAMEDATALEN];
char *err = NULL;
- RepOriginId originid;
WalReceiverConn *wrconn = NULL;
- StringInfoData cmd;
Form_pg_subscription form;
+ List *rstates;
/*
* Lock pg_subscription with AccessExclusiveLock to ensure that the
@@ -1042,6 +1150,37 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
}
list_free(subworkers);
+ /*
+ * Cleanup of tablesync replication origins.
+ *
+ * Any READY-state relations would already have dealt with clean-ups.
+ *
+ * Note that the state can't change because we have already stopped both
+ * the apply and tablesync workers and they can't restart because of
+ * exclusive lock on the subscription.
+ */
+ rstates = GetSubscriptionNotReadyRelations(subid);
+ foreach(lc, rstates)
+ {
+ SubscriptionRelState *rstate = (SubscriptionRelState *) lfirst(lc);
+ Oid relid = rstate->relid;
+
+ /* Only cleanup resources of tablesync workers */
+ if (!OidIsValid(relid))
+ continue;
+
+ /*
+ * Drop the tablesync's origin tracking if exists.
+ *
+ * It is possible that the origin is not yet created for tablesync
+ * worker so passing missing_ok = true. This can happen for the states
+ * before SUBREL_STATE_FINISHEDCOPY.
+ */
+ ReplicationOriginNameForTablesync(subid, relid, originname,
+ sizeof(originname));
+ replorigin_drop_by_name(originname, true, false);
+ }
+
/* Clean up dependencies */
deleteSharedDependencyRecordsFor(SubscriptionRelationId, subid, 0);
@@ -1050,38 +1189,117 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
/* Remove the origin tracking if exists. */
snprintf(originname, sizeof(originname), "pg_%u", subid);
- originid = replorigin_by_name(originname, true);
- if (originid != InvalidRepOriginId)
- replorigin_drop(originid, false);
+ replorigin_drop_by_name(originname, true, false);
/*
* If there is no slot associated with the subscription, we can finish
* here.
*/
- if (!slotname)
+ if (!slotname && rstates == NIL)
{
table_close(rel, NoLock);
return;
}
/*
- * Otherwise drop the replication slot at the publisher node using the
- * replication connection.
+ * Try to acquire the connection necessary for dropping slots.
+ *
+ * Note: If the slotname is NONE/NULL then we allow the command to finish
+ * and users need to manually cleanup the apply and tablesync worker slots
+ * later.
+ *
+ * This has to be at the end because otherwise if there is an error while
+ * doing the database operations we won't be able to rollback dropped
+ * slot.
*/
load_file("libpqwalreceiver", false);
- initStringInfo(&cmd);
- appendStringInfo(&cmd, "DROP_REPLICATION_SLOT %s WAIT", quote_identifier(slotname));
-
wrconn = walrcv_connect(conninfo, true, subname, &err);
if (wrconn == NULL)
- ereport(ERROR,
- (errmsg("could not connect to publisher when attempting to "
- "drop the replication slot \"%s\"", slotname),
- errdetail("The error was: %s", err),
- /* translator: %s is an SQL ALTER command */
- errhint("Use %s to disassociate the subscription from the slot.",
- "ALTER SUBSCRIPTION ... SET (slot_name = NONE)")));
+ {
+ if (!slotname)
+ {
+ /* be tidy */
+ list_free(rstates);
+ table_close(rel, NoLock);
+ return;
+ }
+ else
+ {
+ ReportSlotConnectionError(rstates, subid, slotname, err);
+ }
+ }
+
+ PG_TRY();
+ {
+ foreach(lc, rstates)
+ {
+ SubscriptionRelState *rstate = (SubscriptionRelState *) lfirst(lc);
+ Oid relid = rstate->relid;
+
+ /* Only cleanup resources of tablesync workers */
+ if (!OidIsValid(relid))
+ continue;
+
+ /*
+ * Drop the tablesync slots associated with removed tables.
+ *
+ * For SYNCDONE/READY states, the tablesync slot is known to have
+ * already been dropped by the tablesync worker.
+ *
+ * For other states, there is no certainty, maybe the slot does
+ * not exist yet. Also, if we fail after removing some of the
+ * slots, next time, it will again try to drop already dropped
+ * slots and fail. For these reasons, we allow missing_ok = true
+ * for the drop.
+ */
+ if (rstate->state != SUBREL_STATE_SYNCDONE)
+ {
+ char syncslotname[NAMEDATALEN] = {0};
+
+ ReplicationSlotNameForTablesync(subid, relid, syncslotname,
+ sizeof(syncslotname));
+ ReplicationSlotDropAtPubNode(wrconn, syncslotname, true);
+ }
+ }
+
+ list_free(rstates);
+
+ /*
+ * If there is a slot associated with the subscription, then drop the
+ * replication slot at the publisher.
+ */
+ if (slotname)
+ ReplicationSlotDropAtPubNode(wrconn, slotname, false);
+
+ }
+ PG_FINALLY();
+ {
+ walrcv_disconnect(wrconn);
+ }
+ PG_END_TRY();
+
+ table_close(rel, NoLock);
+}
+
+/*
+ * Drop the replication slot at the publisher node using the replication
+ * connection.
+ *
+ * missing_ok - if true then only issue a LOG message if the slot doesn't
+ * exist.
+ */
+void
+ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok)
+{
+ StringInfoData cmd;
+
+ Assert(wrconn);
+
+ load_file("libpqwalreceiver", false);
+
+ initStringInfo(&cmd);
+ appendStringInfo(&cmd, "DROP_REPLICATION_SLOT %s WAIT", quote_identifier(slotname));
PG_TRY();
{
@@ -1089,27 +1307,39 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
res = walrcv_exec(wrconn, cmd.data, 0, NULL);
- if (res->status != WALRCV_OK_COMMAND)
- ereport(ERROR,
+ if (res->status == WALRCV_OK_COMMAND)
+ {
+ /* NOTICE. Success. */
+ ereport(NOTICE,
+ (errmsg("dropped replication slot \"%s\" on publisher",
+ slotname)));
+ }
+ else if (res->status == WALRCV_ERROR &&
+ missing_ok &&
+ res->sqlstate == ERRCODE_UNDEFINED_OBJECT)
+ {
+ /* LOG. Error, but missing_ok = true. */
+ ereport(LOG,
(errmsg("could not drop the replication slot \"%s\" on publisher",
slotname),
errdetail("The error was: %s", res->err)));
+ }
else
- ereport(NOTICE,
- (errmsg("dropped replication slot \"%s\" on publisher",
- slotname)));
+ {
+ /* ERROR. */
+ ereport(ERROR,
+ (errmsg("could not drop the replication slot \"%s\" on publisher",
+ slotname),
+ errdetail("The error was: %s", res->err)));
+ }
walrcv_clear_result(res);
}
PG_FINALLY();
{
- walrcv_disconnect(wrconn);
+ pfree(cmd.data);
}
PG_END_TRY();
-
- pfree(cmd.data);
-
- table_close(rel, NoLock);
}
/*
@@ -1278,3 +1508,46 @@ fetch_table_list(WalReceiverConn *wrconn, List *publications)
return tablelist;
}
+
+/*
+ * This is to report the connection failure while dropping replication slots.
+ * Here, we report the WARNING for all tablesync slots so that user can drop
+ * them manually, if required.
+ */
+static void
+ReportSlotConnectionError(List *rstates, Oid subid, char *slotname, char *err)
+{
+ ListCell *lc;
+
+ foreach(lc, rstates)
+ {
+ SubscriptionRelState *rstate = (SubscriptionRelState *) lfirst(lc);
+ Oid relid = rstate->relid;
+
+ /* Only cleanup resources of tablesync workers */
+ if (!OidIsValid(relid))
+ continue;
+
+ /*
+ * Caller needs to ensure that relstate doesn't change underneath us.
+ * See DropSubscription where we get the relstates.
+ */
+ if (rstate->state != SUBREL_STATE_SYNCDONE)
+ {
+ char syncslotname[NAMEDATALEN] = {0};
+
+ ReplicationSlotNameForTablesync(subid, relid, syncslotname,
+ sizeof(syncslotname));
+ elog(WARNING, "could not drop tablesync replication slot \"%s\"",
+ syncslotname);
+ }
+ }
+
+ ereport(ERROR,
+ (errmsg("could not connect to publisher when attempting to "
+ "drop the replication slot \"%s\"", slotname),
+ errdetail("The error was: %s", err),
+ /* translator: %s is an SQL ALTER command */
+ errhint("Use %s to disassociate the subscription from the slot.",
+ "ALTER SUBSCRIPTION ... SET (slot_name = NONE)")));
+}
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 420991e31539c..b2457a6924564 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -5399,11 +5399,11 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode)
if (newrel)
ereport(DEBUG1,
- (errmsg("rewriting table \"%s\"",
+ (errmsg_internal("rewriting table \"%s\"",
RelationGetRelationName(oldrel))));
else
ereport(DEBUG1,
- (errmsg("verifying table \"%s\"",
+ (errmsg_internal("verifying table \"%s\"",
RelationGetRelationName(oldrel))));
if (newrel)
@@ -7016,7 +7016,7 @@ NotNullImpliedByRelConstraints(Relation rel, Form_pg_attribute attr)
if (ConstraintImpliedByRelConstraint(rel, list_make1(nnulltest), NIL))
{
ereport(DEBUG1,
- (errmsg("existing constraints on column \"%s.%s\" are sufficient to prove that it does not contain nulls",
+ (errmsg_internal("existing constraints on column \"%s.%s\" are sufficient to prove that it does not contain nulls",
RelationGetRelationName(rel), NameStr(attr->attname))));
return true;
}
@@ -10565,7 +10565,7 @@ validateForeignKeyConstraint(char *conname,
MemoryContext perTupCxt;
ereport(DEBUG1,
- (errmsg("validating foreign key constraint \"%s\"", conname)));
+ (errmsg_internal("validating foreign key constraint \"%s\"", conname)));
/*
* Build a trigger call structure; we'll need it either way.
@@ -16294,11 +16294,11 @@ QueuePartitionConstraintValidation(List **wqueue, Relation scanrel,
{
if (!validate_default)
ereport(DEBUG1,
- (errmsg("partition constraint for table \"%s\" is implied by existing constraints",
+ (errmsg_internal("partition constraint for table \"%s\" is implied by existing constraints",
RelationGetRelationName(scanrel))));
else
ereport(DEBUG1,
- (errmsg("updated partition constraint for default partition \"%s\" is implied by existing constraints",
+ (errmsg_internal("updated partition constraint for default partition \"%s\" is implied by existing constraints",
RelationGetRelationName(scanrel))));
return;
}
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 2d687f6dfb6bb..8908847c6c690 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -70,14 +70,6 @@ int SessionReplicationRole = SESSION_REPLICATION_ROLE_ORIGIN;
/* How many levels deep into trigger execution are we? */
static int MyTriggerDepth = 0;
-/*
- * The authoritative version of this macro is in executor/execMain.c. Be sure
- * to keep everything in sync.
- */
-#define GetAllUpdatedColumns(relinfo, estate) \
- (bms_union(exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->updatedCols, \
- exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->extraUpdatedCols))
-
/* Local function prototypes */
static void SetTriggerFlags(TriggerDesc *trigdesc, Trigger *trigger);
static bool GetTupleForTrigger(EState *estate,
@@ -2643,7 +2635,10 @@ ExecBSUpdateTriggers(EState *estate, ResultRelInfo *relinfo)
CMD_UPDATE))
return;
- updatedCols = GetAllUpdatedColumns(relinfo, estate);
+ /* statement-level triggers operate on the parent table */
+ Assert(relinfo->ri_RootResultRelInfo == NULL);
+
+ updatedCols = ExecGetAllUpdatedCols(relinfo, estate);
LocTriggerData.type = T_TriggerData;
LocTriggerData.tg_event = TRIGGER_EVENT_UPDATE |
@@ -2684,10 +2679,13 @@ ExecASUpdateTriggers(EState *estate, ResultRelInfo *relinfo,
{
TriggerDesc *trigdesc = relinfo->ri_TrigDesc;
+ /* statement-level triggers operate on the parent table */
+ Assert(relinfo->ri_RootResultRelInfo == NULL);
+
if (trigdesc && trigdesc->trig_update_after_statement)
AfterTriggerSaveEvent(estate, relinfo, TRIGGER_EVENT_UPDATE,
false, NULL, NULL, NIL,
- GetAllUpdatedColumns(relinfo, estate),
+ ExecGetAllUpdatedCols(relinfo, estate),
transition_capture);
}
@@ -2757,7 +2755,7 @@ ExecBRUpdateTriggers(EState *estate, EPQState *epqstate,
TRIGGER_EVENT_ROW |
TRIGGER_EVENT_BEFORE;
LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
- updatedCols = GetAllUpdatedColumns(relinfo, estate);
+ updatedCols = ExecGetAllUpdatedCols(relinfo, estate);
LocTriggerData.tg_updatedcols = updatedCols;
for (i = 0; i < trigdesc->numtriggers; i++)
{
@@ -2858,7 +2856,7 @@ ExecARUpdateTriggers(EState *estate, ResultRelInfo *relinfo,
AfterTriggerSaveEvent(estate, relinfo, TRIGGER_EVENT_UPDATE,
true, oldslot, newslot, recheckIndexes,
- GetAllUpdatedColumns(relinfo, estate),
+ ExecGetAllUpdatedCols(relinfo, estate),
transition_capture);
}
}
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 462f9a0f8225c..c064352e237fb 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -104,6 +104,7 @@ ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel)
bool freeze = false;
bool full = false;
bool disable_page_skipping = false;
+ bool process_toast = true;
ListCell *lc;
/* Set default value */
@@ -140,6 +141,8 @@ ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel)
disable_page_skipping = defGetBoolean(opt);
else if (strcmp(opt->defname, "index_cleanup") == 0)
params.index_cleanup = get_vacopt_ternary_value(opt);
+ else if (strcmp(opt->defname, "process_toast") == 0)
+ process_toast = defGetBoolean(opt);
else if (strcmp(opt->defname, "truncate") == 0)
params.truncate = get_vacopt_ternary_value(opt);
else if (strcmp(opt->defname, "parallel") == 0)
@@ -189,13 +192,13 @@ ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel)
(analyze ? VACOPT_ANALYZE : 0) |
(freeze ? VACOPT_FREEZE : 0) |
(full ? VACOPT_FULL : 0) |
- (disable_page_skipping ? VACOPT_DISABLE_PAGE_SKIPPING : 0);
+ (disable_page_skipping ? VACOPT_DISABLE_PAGE_SKIPPING : 0) |
+ (process_toast ? VACOPT_PROCESS_TOAST : 0);
/* sanity checks on options */
Assert(params.options & (VACOPT_VACUUM | VACOPT_ANALYZE));
Assert((params.options & VACOPT_VACUUM) ||
!(params.options & (VACOPT_FULL | VACOPT_FREEZE)));
- Assert(!(params.options & VACOPT_SKIPTOAST));
if ((params.options & VACOPT_FULL) && params.nworkers > 0)
ereport(ERROR,
@@ -318,6 +321,13 @@ vacuum(List *relations, VacuumParams *params,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL")));
+ /* sanity check for PROCESS_TOAST */
+ if ((params->options & VACOPT_FULL) != 0 &&
+ (params->options & VACOPT_PROCESS_TOAST) == 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("PROCESS_TOAST required with VACUUM FULL")));
+
/*
* Send info about dead objects to the statistics collector, unless we are
* in autovacuum --- autovacuum.c does this for itself.
@@ -1004,7 +1014,7 @@ vacuum_set_xid_limits(Relation rel,
* autovacuum_freeze_max_age / 2 XIDs old), complain and force a minimum
* freeze age of zero.
*/
- safeLimit = ReadNewTransactionId() - autovacuum_freeze_max_age;
+ safeLimit = ReadNextTransactionId() - autovacuum_freeze_max_age;
if (!TransactionIdIsNormal(safeLimit))
safeLimit = FirstNormalTransactionId;
@@ -1087,7 +1097,7 @@ vacuum_set_xid_limits(Relation rel,
* Compute XID limit causing a full-table vacuum, being careful not to
* generate a "permanent" XID.
*/
- limit = ReadNewTransactionId() - freezetable;
+ limit = ReadNextTransactionId() - freezetable;
if (!TransactionIdIsNormal(limit))
limit = FirstNormalTransactionId;
@@ -1304,7 +1314,7 @@ vac_update_relstats(Relation relation,
if (TransactionIdIsNormal(frozenxid) &&
pgcform->relfrozenxid != frozenxid &&
(TransactionIdPrecedes(pgcform->relfrozenxid, frozenxid) ||
- TransactionIdPrecedes(ReadNewTransactionId(),
+ TransactionIdPrecedes(ReadNextTransactionId(),
pgcform->relfrozenxid)))
{
pgcform->relfrozenxid = frozenxid;
@@ -1391,7 +1401,7 @@ vac_update_datfrozenxid(void)
* validly see during the scan. These are conservative values, but it's
* not really worth trying to be more exact.
*/
- lastSaneFrozenXid = ReadNewTransactionId();
+ lastSaneFrozenXid = ReadNextTransactionId();
lastSaneMinMulti = ReadNextMultiXactId();
/*
@@ -1567,7 +1577,7 @@ vac_truncate_clog(TransactionId frozenXID,
TransactionId lastSaneFrozenXid,
MultiXactId lastSaneMinMulti)
{
- TransactionId nextXID = ReadNewTransactionId();
+ TransactionId nextXID = ReadNextTransactionId();
Relation relation;
TableScanDesc scan;
HeapTuple tuple;
@@ -1895,7 +1905,8 @@ vacuum_rel(Oid relid, RangeVar *relation, VacuumParams *params)
* us to process it. In VACUUM FULL, though, the toast table is
* automatically rebuilt by cluster_rel so we shouldn't recurse to it.
*/
- if (!(params->options & VACOPT_SKIPTOAST) && !(params->options & VACOPT_FULL))
+ if ((params->options & VACOPT_PROCESS_TOAST) != 0 &&
+ (params->options & VACOPT_FULL) == 0)
toast_relid = onerel->rd_rel->reltoastrelid;
else
toast_relid = InvalidOid;
diff --git a/src/backend/executor/execIndexing.c b/src/backend/executor/execIndexing.c
index 1f0fe145ce8eb..afe7ce87d4ccb 100644
--- a/src/backend/executor/execIndexing.c
+++ b/src/backend/executor/execIndexing.c
@@ -124,15 +124,6 @@ typedef enum
CEOUC_LIVELOCK_PREVENTING_WAIT
} CEOUC_WAIT_MODE;
-/*
- * The authoritative version of these macro are in executor/execMain.c. Be
- * sure to keep everything in sync.
- */
-#define GetUpdatedColumns(relinfo, estate) \
- (exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->updatedCols)
-#define GetExtraUpdatedColumns(relinfo, estate) \
- (exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->extraUpdatedCols)
-
static bool check_exclusion_or_unique_constraint(Relation heap, Relation index,
IndexInfo *indexInfo,
ItemPointer tupleid,
@@ -944,8 +935,8 @@ static bool
index_unchanged_by_update(ResultRelInfo *resultRelInfo, EState *estate,
IndexInfo *indexInfo, Relation indexRelation)
{
- Bitmapset *updatedCols = GetUpdatedColumns(resultRelInfo, estate);
- Bitmapset *extraUpdatedCols = GetExtraUpdatedColumns(resultRelInfo, estate);
+ Bitmapset *updatedCols = ExecGetUpdatedCols(resultRelInfo, estate);
+ Bitmapset *extraUpdatedCols = ExecGetExtraUpdatedCols(resultRelInfo, estate);
Bitmapset *allUpdatedCols;
bool hasexpression = false;
List *idxExprs;
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index f4dd47acc76ac..c74ce36ffbab6 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -100,20 +100,6 @@ static char *ExecBuildSlotValueDescription(Oid reloid,
int maxfieldlen);
static void EvalPlanQualStart(EPQState *epqstate, Plan *planTree);
-/*
- * Note that variants of these macros exists in commands/trigger.c and in
- * execIndexing.c. There does not appear to be any good header to put it
- * into, given the structures that it uses, so we let them be duplicated. Be
- * sure to keep everything in sync.
- */
-#define GetInsertedColumns(relinfo, estate) \
- (exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->insertedCols)
-#define GetUpdatedColumns(relinfo, estate) \
- (exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->updatedCols)
-#define GetAllUpdatedColumns(relinfo, estate) \
- (bms_union(exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->updatedCols, \
- exec_rt_fetch((relinfo)->ri_RangeTableIndex, estate)->extraUpdatedCols))
-
/* end of local decls */
@@ -1196,7 +1182,7 @@ void
InitResultRelInfo(ResultRelInfo *resultRelInfo,
Relation resultRelationDesc,
Index resultRelationIndex,
- Relation partition_root,
+ ResultRelInfo *partition_root_rri,
int instrument_options)
{
MemSet(resultRelInfo, 0, sizeof(ResultRelInfo));
@@ -1242,7 +1228,7 @@ InitResultRelInfo(ResultRelInfo *resultRelInfo,
resultRelInfo->ri_ReturningSlot = NULL;
resultRelInfo->ri_TrigOldSlot = NULL;
resultRelInfo->ri_TrigNewSlot = NULL;
- resultRelInfo->ri_PartitionRoot = partition_root;
+ resultRelInfo->ri_RootResultRelInfo = partition_root_rri;
resultRelInfo->ri_RootToPartitionMap = NULL; /* set by
* ExecInitRoutingInfo */
resultRelInfo->ri_PartitionTupleSlot = NULL; /* ditto */
@@ -1744,13 +1730,14 @@ ExecPartitionCheckEmitError(ResultRelInfo *resultRelInfo,
* back to the root table's rowtype so that val_desc in the error message
* matches the input tuple.
*/
- if (resultRelInfo->ri_PartitionRoot)
+ if (resultRelInfo->ri_RootResultRelInfo)
{
+ ResultRelInfo *rootrel = resultRelInfo->ri_RootResultRelInfo;
TupleDesc old_tupdesc;
AttrMap *map;
- root_relid = RelationGetRelid(resultRelInfo->ri_PartitionRoot);
- tupdesc = RelationGetDescr(resultRelInfo->ri_PartitionRoot);
+ root_relid = RelationGetRelid(rootrel->ri_RelationDesc);
+ tupdesc = RelationGetDescr(rootrel->ri_RelationDesc);
old_tupdesc = RelationGetDescr(resultRelInfo->ri_RelationDesc);
/* a reverse map */
@@ -1763,16 +1750,17 @@ ExecPartitionCheckEmitError(ResultRelInfo *resultRelInfo,
if (map != NULL)
slot = execute_attr_map_slot(map, slot,
MakeTupleTableSlot(tupdesc, &TTSOpsVirtual));
+ modifiedCols = bms_union(ExecGetInsertedCols(rootrel, estate),
+ ExecGetUpdatedCols(rootrel, estate));
}
else
{
root_relid = RelationGetRelid(resultRelInfo->ri_RelationDesc);
tupdesc = RelationGetDescr(resultRelInfo->ri_RelationDesc);
+ modifiedCols = bms_union(ExecGetInsertedCols(resultRelInfo, estate),
+ ExecGetUpdatedCols(resultRelInfo, estate));
}
- modifiedCols = bms_union(GetInsertedColumns(resultRelInfo, estate),
- GetUpdatedColumns(resultRelInfo, estate));
-
val_desc = ExecBuildSlotValueDescription(root_relid,
slot,
tupdesc,
@@ -1805,8 +1793,6 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
TupleDesc tupdesc = RelationGetDescr(rel);
TupleConstr *constr = tupdesc->constr;
Bitmapset *modifiedCols;
- Bitmapset *insertedCols;
- Bitmapset *updatedCols;
Assert(constr); /* we should not be called otherwise */
@@ -1832,12 +1818,12 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
* rowtype so that val_desc shown error message matches the
* input tuple.
*/
- if (resultRelInfo->ri_PartitionRoot)
+ if (resultRelInfo->ri_RootResultRelInfo)
{
+ ResultRelInfo *rootrel = resultRelInfo->ri_RootResultRelInfo;
AttrMap *map;
- rel = resultRelInfo->ri_PartitionRoot;
- tupdesc = RelationGetDescr(rel);
+ tupdesc = RelationGetDescr(rootrel->ri_RelationDesc);
/* a reverse map */
map = build_attrmap_by_name_if_req(orig_tupdesc,
tupdesc);
@@ -1849,11 +1835,13 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
if (map != NULL)
slot = execute_attr_map_slot(map, slot,
MakeTupleTableSlot(tupdesc, &TTSOpsVirtual));
+ modifiedCols = bms_union(ExecGetInsertedCols(rootrel, estate),
+ ExecGetUpdatedCols(rootrel, estate));
+ rel = rootrel->ri_RelationDesc;
}
-
- insertedCols = GetInsertedColumns(resultRelInfo, estate);
- updatedCols = GetUpdatedColumns(resultRelInfo, estate);
- modifiedCols = bms_union(insertedCols, updatedCols);
+ else
+ modifiedCols = bms_union(ExecGetInsertedCols(resultRelInfo, estate),
+ ExecGetUpdatedCols(resultRelInfo, estate));
val_desc = ExecBuildSlotValueDescription(RelationGetRelid(rel),
slot,
tupdesc,
@@ -1881,13 +1869,13 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
Relation orig_rel = rel;
/* See the comment above. */
- if (resultRelInfo->ri_PartitionRoot)
+ if (resultRelInfo->ri_RootResultRelInfo)
{
+ ResultRelInfo *rootrel = resultRelInfo->ri_RootResultRelInfo;
TupleDesc old_tupdesc = RelationGetDescr(rel);
AttrMap *map;
- rel = resultRelInfo->ri_PartitionRoot;
- tupdesc = RelationGetDescr(rel);
+ tupdesc = RelationGetDescr(rootrel->ri_RelationDesc);
/* a reverse map */
map = build_attrmap_by_name_if_req(old_tupdesc,
tupdesc);
@@ -1899,11 +1887,13 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
if (map != NULL)
slot = execute_attr_map_slot(map, slot,
MakeTupleTableSlot(tupdesc, &TTSOpsVirtual));
+ modifiedCols = bms_union(ExecGetInsertedCols(rootrel, estate),
+ ExecGetUpdatedCols(rootrel, estate));
+ rel = rootrel->ri_RelationDesc;
}
-
- insertedCols = GetInsertedColumns(resultRelInfo, estate);
- updatedCols = GetUpdatedColumns(resultRelInfo, estate);
- modifiedCols = bms_union(insertedCols, updatedCols);
+ else
+ modifiedCols = bms_union(ExecGetInsertedCols(resultRelInfo, estate),
+ ExecGetUpdatedCols(resultRelInfo, estate));
val_desc = ExecBuildSlotValueDescription(RelationGetRelid(rel),
slot,
tupdesc,
@@ -1972,8 +1962,6 @@ ExecWithCheckOptions(WCOKind kind, ResultRelInfo *resultRelInfo,
{
char *val_desc;
Bitmapset *modifiedCols;
- Bitmapset *insertedCols;
- Bitmapset *updatedCols;
switch (wco->kind)
{
@@ -1988,13 +1976,13 @@ ExecWithCheckOptions(WCOKind kind, ResultRelInfo *resultRelInfo,
*/
case WCO_VIEW_CHECK:
/* See the comment in ExecConstraints(). */
- if (resultRelInfo->ri_PartitionRoot)
+ if (resultRelInfo->ri_RootResultRelInfo)
{
+ ResultRelInfo *rootrel = resultRelInfo->ri_RootResultRelInfo;
TupleDesc old_tupdesc = RelationGetDescr(rel);
AttrMap *map;
- rel = resultRelInfo->ri_PartitionRoot;
- tupdesc = RelationGetDescr(rel);
+ tupdesc = RelationGetDescr(rootrel->ri_RelationDesc);
/* a reverse map */
map = build_attrmap_by_name_if_req(old_tupdesc,
tupdesc);
@@ -2006,11 +1994,14 @@ ExecWithCheckOptions(WCOKind kind, ResultRelInfo *resultRelInfo,
if (map != NULL)
slot = execute_attr_map_slot(map, slot,
MakeTupleTableSlot(tupdesc, &TTSOpsVirtual));
- }
- insertedCols = GetInsertedColumns(resultRelInfo, estate);
- updatedCols = GetUpdatedColumns(resultRelInfo, estate);
- modifiedCols = bms_union(insertedCols, updatedCols);
+ modifiedCols = bms_union(ExecGetInsertedCols(rootrel, estate),
+ ExecGetUpdatedCols(rootrel, estate));
+ rel = rootrel->ri_RelationDesc;
+ }
+ else
+ modifiedCols = bms_union(ExecGetInsertedCols(resultRelInfo, estate),
+ ExecGetUpdatedCols(resultRelInfo, estate));
val_desc = ExecBuildSlotValueDescription(RelationGetRelid(rel),
slot,
tupdesc,
@@ -2224,7 +2215,7 @@ ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo)
* been modified, then we can use a weaker lock, allowing for better
* concurrency.
*/
- updatedCols = GetAllUpdatedColumns(relinfo, estate);
+ updatedCols = ExecGetAllUpdatedCols(relinfo, estate);
keyCols = RelationGetIndexAttrBitmap(relinfo->ri_RelationDesc,
INDEX_ATTR_BITMAP_KEY);
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c
index 746cd1e9d7a1b..b8da4c5967d8f 100644
--- a/src/backend/executor/execPartition.c
+++ b/src/backend/executor/execPartition.c
@@ -176,7 +176,8 @@ static void ExecInitRoutingInfo(ModifyTableState *mtstate,
int partidx);
static PartitionDispatch ExecInitPartitionDispatchInfo(EState *estate,
PartitionTupleRouting *proute,
- Oid partoid, PartitionDispatch parent_pd, int partidx);
+ Oid partoid, PartitionDispatch parent_pd,
+ int partidx, ResultRelInfo *rootResultRelInfo);
static void FormPartitionKeyDatum(PartitionDispatch pd,
TupleTableSlot *slot,
EState *estate,
@@ -238,7 +239,7 @@ ExecSetupPartitionTupleRouting(EState *estate, ModifyTableState *mtstate,
* partitioned table.
*/
ExecInitPartitionDispatchInfo(estate, proute, RelationGetRelid(rel),
- NULL, 0);
+ NULL, 0, NULL);
/*
* If performing an UPDATE with tuple routing, we can reuse partition
@@ -432,10 +433,11 @@ ExecFindPartition(ModifyTableState *mtstate,
* Create the new PartitionDispatch. We pass the current one
* in as the parent PartitionDispatch
*/
- subdispatch = ExecInitPartitionDispatchInfo(mtstate->ps.state,
+ subdispatch = ExecInitPartitionDispatchInfo(estate,
proute,
partdesc->oids[partidx],
- dispatch, partidx);
+ dispatch, partidx,
+ mtstate->rootResultRelInfo);
Assert(dispatch->indexes[partidx] >= 0 &&
dispatch->indexes[partidx] < proute->num_dispatch);
@@ -547,7 +549,7 @@ ExecHashSubPlanResultRelsByOid(ModifyTableState *mtstate,
* compatible with the root partitioned table's tuple descriptor. When
* generating the per-subplan result rels, this was not set.
*/
- rri->ri_PartitionRoot = proute->partition_root;
+ rri->ri_RootResultRelInfo = mtstate->rootResultRelInfo;
}
}
@@ -567,8 +569,8 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
int partidx)
{
ModifyTable *node = (ModifyTable *) mtstate->ps.plan;
- Relation rootrel = rootResultRelInfo->ri_RelationDesc,
- partrel;
+ Relation partrel;
+ int firstVarno = mtstate->resultRelInfo[0].ri_RangeTableIndex;
Relation firstResultRel = mtstate->resultRelInfo[0].ri_RelationDesc;
ResultRelInfo *leaf_part_rri;
MemoryContext oldcxt;
@@ -582,8 +584,8 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
leaf_part_rri = makeNode(ResultRelInfo);
InitResultRelInfo(leaf_part_rri,
partrel,
- node ? node->rootRelation : 1,
- rootrel,
+ 0,
+ rootResultRelInfo,
estate->es_instrument);
/*
@@ -617,7 +619,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
List *wcoList;
List *wcoExprs = NIL;
ListCell *ll;
- int firstVarno = mtstate->resultRelInfo[0].ri_RangeTableIndex;
/*
* In the case of INSERT on a partitioned table, there is only one
@@ -681,7 +682,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
TupleTableSlot *slot;
ExprContext *econtext;
List *returningList;
- int firstVarno = mtstate->resultRelInfo[0].ri_RangeTableIndex;
/* See the comment above for WCO lists. */
Assert((node->operation == CMD_INSERT &&
@@ -740,7 +740,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
*/
if (node && node->onConflictAction != ONCONFLICT_NONE)
{
- int firstVarno = mtstate->resultRelInfo[0].ri_RangeTableIndex;
TupleDesc partrelDesc = RelationGetDescr(partrel);
ExprContext *econtext = mtstate->ps.ps_ExprContext;
ListCell *lc;
@@ -917,7 +916,7 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
if (mtstate->mt_transition_capture || mtstate->mt_oc_transition_capture)
leaf_part_rri->ri_ChildToRootMap =
convert_tuples_by_name(RelationGetDescr(leaf_part_rri->ri_RelationDesc),
- RelationGetDescr(leaf_part_rri->ri_PartitionRoot));
+ RelationGetDescr(rootResultRelInfo->ri_RelationDesc));
/*
* Since we've just initialized this ResultRelInfo, it's not in any list
@@ -951,6 +950,7 @@ ExecInitRoutingInfo(ModifyTableState *mtstate,
ResultRelInfo *partRelInfo,
int partidx)
{
+ ResultRelInfo *rootRelInfo = partRelInfo->ri_RootResultRelInfo;
MemoryContext oldcxt;
int rri_index;
@@ -961,7 +961,7 @@ ExecInitRoutingInfo(ModifyTableState *mtstate,
* partition from the parent's type to the partition's.
*/
partRelInfo->ri_RootToPartitionMap =
- convert_tuples_by_name(RelationGetDescr(partRelInfo->ri_PartitionRoot),
+ convert_tuples_by_name(RelationGetDescr(rootRelInfo->ri_RelationDesc),
RelationGetDescr(partRelInfo->ri_RelationDesc));
/*
@@ -1000,7 +1000,8 @@ ExecInitRoutingInfo(ModifyTableState *mtstate,
*
* If the FDW does not support batching, we set the batch size to 1.
*/
- if (partRelInfo->ri_FdwRoutine != NULL &&
+ if (mtstate->operation == CMD_INSERT &&
+ partRelInfo->ri_FdwRoutine != NULL &&
partRelInfo->ri_FdwRoutine->GetForeignModifyBatchSize &&
partRelInfo->ri_FdwRoutine->ExecForeignBatchInsert)
partRelInfo->ri_BatchSize =
@@ -1055,7 +1056,8 @@ ExecInitRoutingInfo(ModifyTableState *mtstate,
static PartitionDispatch
ExecInitPartitionDispatchInfo(EState *estate,
PartitionTupleRouting *proute, Oid partoid,
- PartitionDispatch parent_pd, int partidx)
+ PartitionDispatch parent_pd, int partidx,
+ ResultRelInfo *rootResultRelInfo)
{
Relation rel;
PartitionDesc partdesc;
@@ -1153,7 +1155,7 @@ ExecInitPartitionDispatchInfo(EState *estate,
{
ResultRelInfo *rri = makeNode(ResultRelInfo);
- InitResultRelInfo(rri, rel, 1, proute->partition_root, 0);
+ InitResultRelInfo(rri, rel, 0, rootResultRelInfo, 0);
proute->nonleaf_partitions[dispatchidx] = rri;
}
else
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index d84fbaded9619..42632cb4d8885 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -51,6 +51,7 @@
#include "access/tableam.h"
#include "access/transam.h"
#include "executor/executor.h"
+#include "executor/execPartition.h"
#include "jit/jit.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
@@ -1223,3 +1224,102 @@ ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo)
return relInfo->ri_ReturningSlot;
}
+
+/* Return a bitmap representing columns being inserted */
+Bitmapset *
+ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate)
+{
+ /*
+ * The columns are stored in the range table entry. If this ResultRelInfo
+ * represents a partition routing target, and doesn't have an entry of its
+ * own in the range table, fetch the parent's RTE and map the columns to
+ * the order they are in the partition.
+ */
+ if (relinfo->ri_RangeTableIndex != 0)
+ {
+ RangeTblEntry *rte = exec_rt_fetch(relinfo->ri_RangeTableIndex, estate);
+
+ return rte->insertedCols;
+ }
+ else if (relinfo->ri_RootResultRelInfo)
+ {
+ ResultRelInfo *rootRelInfo = relinfo->ri_RootResultRelInfo;
+ RangeTblEntry *rte = exec_rt_fetch(rootRelInfo->ri_RangeTableIndex, estate);
+
+ if (relinfo->ri_RootToPartitionMap != NULL)
+ return execute_attr_map_cols(relinfo->ri_RootToPartitionMap->attrMap,
+ rte->insertedCols);
+ else
+ return rte->insertedCols;
+ }
+ else
+ {
+ /*
+ * The relation isn't in the range table and it isn't a partition
+ * routing target. This ResultRelInfo must've been created only for
+ * firing triggers and the relation is not being inserted into. (See
+ * ExecGetTriggerResultRel.)
+ */
+ return NULL;
+ }
+}
+
+/* Return a bitmap representing columns being updated */
+Bitmapset *
+ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate)
+{
+ /* see ExecGetInsertedCols() */
+ if (relinfo->ri_RangeTableIndex != 0)
+ {
+ RangeTblEntry *rte = exec_rt_fetch(relinfo->ri_RangeTableIndex, estate);
+
+ return rte->updatedCols;
+ }
+ else if (relinfo->ri_RootResultRelInfo)
+ {
+ ResultRelInfo *rootRelInfo = relinfo->ri_RootResultRelInfo;
+ RangeTblEntry *rte = exec_rt_fetch(rootRelInfo->ri_RangeTableIndex, estate);
+
+ if (relinfo->ri_RootToPartitionMap != NULL)
+ return execute_attr_map_cols(relinfo->ri_RootToPartitionMap->attrMap,
+ rte->updatedCols);
+ else
+ return rte->updatedCols;
+ }
+ else
+ return NULL;
+}
+
+/* Return a bitmap representing generated columns being updated */
+Bitmapset *
+ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate)
+{
+ /* see ExecGetInsertedCols() */
+ if (relinfo->ri_RangeTableIndex != 0)
+ {
+ RangeTblEntry *rte = exec_rt_fetch(relinfo->ri_RangeTableIndex, estate);
+
+ return rte->extraUpdatedCols;
+ }
+ else if (relinfo->ri_RootResultRelInfo)
+ {
+ ResultRelInfo *rootRelInfo = relinfo->ri_RootResultRelInfo;
+ RangeTblEntry *rte = exec_rt_fetch(rootRelInfo->ri_RangeTableIndex, estate);
+
+ if (relinfo->ri_RootToPartitionMap != NULL)
+ return execute_attr_map_cols(relinfo->ri_RootToPartitionMap->attrMap,
+ rte->extraUpdatedCols);
+ else
+ return rte->extraUpdatedCols;
+ }
+ else
+ return NULL;
+}
+
+/* Return columns being updated, including generated columns */
+Bitmapset *
+ExecGetAllUpdatedCols(ResultRelInfo *relinfo, EState *estate)
+{
+ return bms_union(ExecGetUpdatedCols(relinfo, estate),
+ ExecGetExtraUpdatedCols(relinfo, estate));
+}
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
index 601b6dab03f1e..1d1bf958b629d 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -1391,7 +1391,7 @@ project_aggregates(AggState *aggstate)
}
/*
- * Walk tlist and qual to find referenced colnos, dividing them into
+ * Find input-tuple columns that are needed, dividing them into
* aggregated and unaggregated sets.
*/
static void
@@ -1404,9 +1404,15 @@ find_cols(AggState *aggstate, Bitmapset **aggregated, Bitmapset **unaggregated)
context.aggregated = NULL;
context.unaggregated = NULL;
+ /* Examine tlist and quals */
(void) find_cols_walker((Node *) agg->plan.targetlist, &context);
(void) find_cols_walker((Node *) agg->plan.qual, &context);
+ /* In some cases, grouping columns will not appear in the tlist */
+ for (int i = 0; i < agg->numCols; i++)
+ context.unaggregated = bms_add_member(context.unaggregated,
+ agg->grpColIdx[i]);
+
*aggregated = context.aggregated;
*unaggregated = context.unaggregated;
}
diff --git a/src/backend/executor/nodeIncrementalSort.c b/src/backend/executor/nodeIncrementalSort.c
index 73e42d79451aa..459c879f0bbc7 100644
--- a/src/backend/executor/nodeIncrementalSort.c
+++ b/src/backend/executor/nodeIncrementalSort.c
@@ -288,9 +288,7 @@ switchToPresortedPrefixMode(PlanState *pstate)
{
IncrementalSortState *node = castNode(IncrementalSortState, pstate);
ScanDirection dir;
- int64 nTuples = 0;
- bool lastTuple = false;
- bool firstTuple = true;
+ int64 nTuples;
TupleDesc tupDesc;
PlanState *outerNode;
IncrementalSort *plannode = castNode(IncrementalSort, node->ss.ps.plan);
@@ -343,20 +341,16 @@ switchToPresortedPrefixMode(PlanState *pstate)
* Copy as many tuples as we can (i.e., in the same prefix key group) from
* the full sort state to the prefix sort state.
*/
- for (;;)
+ for (nTuples = 0; nTuples < node->n_fullsort_remaining; nTuples++)
{
- lastTuple = node->n_fullsort_remaining - nTuples == 1;
-
/*
* When we encounter multiple prefix key groups inside the full sort
* tuplesort we have to carry over the last read tuple into the next
* batch.
*/
- if (firstTuple && !TupIsNull(node->transfer_tuple))
+ if (nTuples == 0 && !TupIsNull(node->transfer_tuple))
{
tuplesort_puttupleslot(node->prefixsort_state, node->transfer_tuple);
- nTuples++;
-
/* The carried over tuple is our new group pivot tuple. */
ExecCopySlot(node->group_pivot, node->transfer_tuple);
}
@@ -376,7 +370,6 @@ switchToPresortedPrefixMode(PlanState *pstate)
if (isCurrentGroup(node, node->group_pivot, node->transfer_tuple))
{
tuplesort_puttupleslot(node->prefixsort_state, node->transfer_tuple);
- nTuples++;
}
else
{
@@ -394,21 +387,11 @@ switchToPresortedPrefixMode(PlanState *pstate)
* current prefix key group.
*/
ExecClearTuple(node->group_pivot);
+
+ /* Break out of for-loop early */
break;
}
}
-
- firstTuple = false;
-
- /*
- * If we've copied all of the tuples from the full sort state into the
- * prefix sort state, then we don't actually know that we've yet found
- * the last tuple in that prefix key group until we check the next
- * tuple from the outer plan node, so we retain the current group
- * pivot tuple prefix key group comparison.
- */
- if (lastTuple)
- break;
}
/*
@@ -421,14 +404,15 @@ switchToPresortedPrefixMode(PlanState *pstate)
node->n_fullsort_remaining -= nTuples;
SO1_printf("Setting n_fullsort_remaining to " INT64_FORMAT "\n", node->n_fullsort_remaining);
- if (lastTuple)
+ if (node->n_fullsort_remaining == 0)
{
/*
- * We've confirmed that all tuples remaining in the full sort batch is
- * in the same prefix key group and moved all of those tuples into the
- * presorted prefix tuplesort. Now we can save our pivot comparison
- * tuple and continue fetching tuples from the outer execution node to
- * load into the presorted prefix tuplesort.
+ * We've found that all tuples remaining in the full sort batch are in
+ * the same prefix key group and moved all of those tuples into the
+ * presorted prefix tuplesort. We don't know that we've yet found the
+ * last tuple in the current prefix key group, so save our pivot
+ * comparison tuple and continue fetching tuples from the outer
+ * execution node to load into the presorted prefix tuplesort.
*/
ExecCopySlot(node->group_pivot, node->transfer_tuple);
SO_printf("Setting execution_status to INCSORT_LOADPREFIXSORT (switchToPresortedPrefixMode)\n");
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index 5d90337498371..2993ba43e3283 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -291,7 +291,7 @@ ExecComputeStoredGenerated(ResultRelInfo *resultRelInfo,
if (cmdtype == CMD_UPDATE &&
!(rel->trigdesc && rel->trigdesc->trig_update_before_row) &&
!bms_is_member(i + 1 - FirstLowInvalidHeapAttributeNumber,
- exec_rt_fetch(resultRelInfo->ri_RangeTableIndex, estate)->extraUpdatedCols))
+ ExecGetExtraUpdatedCols(resultRelInfo, estate)))
{
resultRelInfo->ri_GeneratedExprs[i] = NULL;
continue;
@@ -565,7 +565,7 @@ ExecInsert(ModifyTableState *mtstate,
* if there's no BR trigger defined on the partition.
*/
if (resultRelationDesc->rd_rel->relispartition &&
- (resultRelInfo->ri_PartitionRoot == NULL ||
+ (resultRelInfo->ri_RootResultRelInfo == NULL ||
(resultRelInfo->ri_TrigDesc &&
resultRelInfo->ri_TrigDesc->trig_insert_before_row)))
ExecPartitionCheck(resultRelInfo, slot, estate, true);
diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c
index b0789a5fb8012..98a27f08bfd0f 100644
--- a/src/backend/jit/llvm/llvmjit.c
+++ b/src/backend/jit/llvm/llvmjit.c
@@ -768,7 +768,7 @@ llvm_compile_module(LLVMJitContext *context)
MemoryContextSwitchTo(oldcontext);
ereport(DEBUG1,
- (errmsg("time to inline: %.3fs, opt: %.3fs, emit: %.3fs",
+ (errmsg_internal("time to inline: %.3fs, opt: %.3fs, emit: %.3fs",
INSTR_TIME_GET_DOUBLE(context->base.instr.inlining_counter),
INSTR_TIME_GET_DOUBLE(context->base.instr.optimization_counter),
INSTR_TIME_GET_DOUBLE(context->base.instr.emission_counter)),
diff --git a/src/backend/libpq/auth-scram.c b/src/backend/libpq/auth-scram.c
index 8d857f39df5a0..b9b6d464a0518 100644
--- a/src/backend/libpq/auth-scram.c
+++ b/src/backend/libpq/auth-scram.c
@@ -1429,7 +1429,7 @@ scram_mock_salt(const char *username)
if (pg_cryptohash_init(ctx) < 0 ||
pg_cryptohash_update(ctx, (uint8 *) username, strlen(username)) < 0 ||
pg_cryptohash_update(ctx, (uint8 *) mock_auth_nonce, MOCK_AUTH_NONCE_LEN) < 0 ||
- pg_cryptohash_final(ctx, sha_digest) < 0)
+ pg_cryptohash_final(ctx, sha_digest, sizeof(sha_digest)) < 0)
{
pg_cryptohash_free(ctx);
return NULL;
diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c
index 1e2ecc6e7ab74..4c4f025eb1a76 100644
--- a/src/backend/libpq/be-secure-openssl.c
+++ b/src/backend/libpq/be-secure-openssl.c
@@ -285,19 +285,22 @@ be_tls_init(bool isServerStart)
* http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci803160,00.html
*----------
*/
- if (ssl_crl_file[0])
+ if (ssl_crl_file[0] || ssl_crl_dir[0])
{
X509_STORE *cvstore = SSL_CTX_get_cert_store(context);
if (cvstore)
{
/* Set the flags to check against the complete CRL chain */
- if (X509_STORE_load_locations(cvstore, ssl_crl_file, NULL) == 1)
+ if (X509_STORE_load_locations(cvstore,
+ ssl_crl_file[0] ? ssl_crl_file : NULL,
+ ssl_crl_dir[0] ? ssl_crl_dir : NULL)
+ == 1)
{
X509_STORE_set_flags(cvstore,
X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL);
}
- else
+ else if (ssl_crl_dir[0] == 0)
{
ereport(isServerStart ? FATAL : LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
@@ -305,6 +308,23 @@ be_tls_init(bool isServerStart)
ssl_crl_file, SSLerrmessage(ERR_get_error()))));
goto error;
}
+ else if (ssl_crl_file[0] == 0)
+ {
+ ereport(isServerStart ? FATAL : LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("could not load SSL certificate revocation list directory \"%s\": %s",
+ ssl_crl_dir, SSLerrmessage(ERR_get_error()))));
+ goto error;
+ }
+ else
+ {
+ ereport(isServerStart ? FATAL : LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("could not load SSL certificate revocation list file \"%s\" or directory \"%s\": %s",
+ ssl_crl_file, ssl_crl_dir,
+ SSLerrmessage(ERR_get_error()))));
+ goto error;
+ }
}
}
diff --git a/src/backend/libpq/be-secure.c b/src/backend/libpq/be-secure.c
index 4cf139a223fdc..d1545a2ad6ade 100644
--- a/src/backend/libpq/be-secure.c
+++ b/src/backend/libpq/be-secure.c
@@ -42,6 +42,7 @@ char *ssl_cert_file;
char *ssl_key_file;
char *ssl_ca_file;
char *ssl_crl_file;
+char *ssl_crl_dir;
char *ssl_dh_params_file;
char *ssl_passphrase_command;
bool ssl_passphrase_command_supports_reload;
@@ -119,7 +120,7 @@ secure_open_server(Port *port)
r = be_tls_open_server(port);
ereport(DEBUG2,
- (errmsg("SSL connection from \"%s\"",
+ (errmsg_internal("SSL connection from \"%s\"",
port->peer_cn ? port->peer_cn : "(anonymous)")));
#endif
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 20bf1461cef28..9a04c093d5f63 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -1041,7 +1041,7 @@ parse_hba_line(TokenizedLine *tok_line, int elevel)
ereport(elevel,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("hostssl record cannot match because SSL is not supported by this build"),
- errhint("Compile with --with-ssl=openssl to use SSL connections."),
+ errhint("Compile with --with-ssl to use SSL connections."),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
*err_msg = "hostssl record cannot match because SSL is not supported by this build";
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index 672245ded7a30..bdf8ec46e2b23 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -58,7 +58,6 @@ static int extractRemainingColumns(ParseNamespaceColumn *src_nscolumns,
List **res_colnames, List **res_colvars,
ParseNamespaceColumn *res_nscolumns);
static Node *transformJoinUsingClause(ParseState *pstate,
- RangeTblEntry *leftRTE, RangeTblEntry *rightRTE,
List *leftVars, List *rightVars);
static Node *transformJoinOnClause(ParseState *pstate, JoinExpr *j,
List *namespace);
@@ -302,7 +301,6 @@ extractRemainingColumns(ParseNamespaceColumn *src_nscolumns,
*/
static Node *
transformJoinUsingClause(ParseState *pstate,
- RangeTblEntry *leftRTE, RangeTblEntry *rightRTE,
List *leftVars, List *rightVars)
{
Node *result;
@@ -325,8 +323,8 @@ transformJoinUsingClause(ParseState *pstate,
A_Expr *e;
/* Require read access to the join variables */
- markVarForSelectPriv(pstate, lvar, leftRTE);
- markVarForSelectPriv(pstate, rvar, rightRTE);
+ markVarForSelectPriv(pstate, lvar);
+ markVarForSelectPriv(pstate, rvar);
/* Now create the lvar = rvar join condition */
e = makeSimpleA_Expr(AEXPR_OP, "=",
@@ -1411,8 +1409,6 @@ transformFromClauseItem(ParseState *pstate, Node *n,
}
j->quals = transformJoinUsingClause(pstate,
- l_nsitem->p_rte,
- r_nsitem->p_rte,
l_usingvars,
r_usingvars);
}
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 6c87783b2c788..f869e159d63f7 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -2525,7 +2525,7 @@ transformWholeRowRef(ParseState *pstate, ParseNamespaceItem *nsitem,
result->location = location;
/* mark relation as requiring whole-row SELECT access */
- markVarForSelectPriv(pstate, result, nsitem->p_rte);
+ markVarForSelectPriv(pstate, result);
return (Node *) result;
}
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 43db4e9af8bf6..ca02982e0b367 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -68,7 +68,7 @@ static int scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte,
const char *colname, int location,
int fuzzy_rte_penalty,
FuzzyAttrMatchState *fuzzystate);
-static void markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte,
+static void markRTEForSelectPriv(ParseState *pstate,
int rtindex, AttrNumber col);
static void expandRelation(Oid relid, Alias *eref,
int rtindex, int sublevels_up,
@@ -660,8 +660,8 @@ updateFuzzyAttrMatchState(int fuzzy_rte_penalty,
* If found, return an appropriate Var node, else return NULL.
* If the name proves ambiguous within this nsitem, raise error.
*
- * Side effect: if we find a match, mark the item's RTE as requiring read
- * access for the column.
+ * Side effect: if we find a match, mark the corresponding RTE as requiring
+ * read access for the column.
*/
Node *
scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem,
@@ -740,7 +740,7 @@ scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem,
var->location = location;
/* Require read access to the column */
- markVarForSelectPriv(pstate, var, rte);
+ markVarForSelectPriv(pstate, var);
return (Node *) var;
}
@@ -990,21 +990,15 @@ searchRangeTableForCol(ParseState *pstate, const char *alias, const char *colnam
/*
* markRTEForSelectPriv
- * Mark the specified column of an RTE as requiring SELECT privilege
+ * Mark the specified column of the RTE with index rtindex
+ * as requiring SELECT privilege
*
* col == InvalidAttrNumber means a "whole row" reference
- *
- * External callers should always pass the Var's RTE. Internally, we
- * allow NULL to be passed for the RTE and then look it up if needed;
- * this takes less code than requiring each internal recursion site
- * to perform a lookup.
*/
static void
-markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte,
- int rtindex, AttrNumber col)
+markRTEForSelectPriv(ParseState *pstate, int rtindex, AttrNumber col)
{
- if (rte == NULL)
- rte = rt_fetch(rtindex, pstate->p_rtable);
+ RangeTblEntry *rte = rt_fetch(rtindex, pstate->p_rtable);
if (rte->rtekind == RTE_RELATION)
{
@@ -1036,13 +1030,13 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte,
{
int varno = ((RangeTblRef *) j->larg)->rtindex;
- markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber);
+ markRTEForSelectPriv(pstate, varno, InvalidAttrNumber);
}
else if (IsA(j->larg, JoinExpr))
{
int varno = ((JoinExpr *) j->larg)->rtindex;
- markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber);
+ markRTEForSelectPriv(pstate, varno, InvalidAttrNumber);
}
else
elog(ERROR, "unrecognized node type: %d",
@@ -1051,13 +1045,13 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte,
{
int varno = ((RangeTblRef *) j->rarg)->rtindex;
- markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber);
+ markRTEForSelectPriv(pstate, varno, InvalidAttrNumber);
}
else if (IsA(j->rarg, JoinExpr))
{
int varno = ((JoinExpr *) j->rarg)->rtindex;
- markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber);
+ markRTEForSelectPriv(pstate, varno, InvalidAttrNumber);
}
else
elog(ERROR, "unrecognized node type: %d",
@@ -1078,10 +1072,11 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte,
/*
* markVarForSelectPriv
- * Mark the RTE referenced by a Var as requiring SELECT privilege
+ * Mark the RTE referenced by the Var as requiring SELECT privilege
+ * for the Var's column (the Var could be a whole-row Var, too)
*/
void
-markVarForSelectPriv(ParseState *pstate, Var *var, RangeTblEntry *rte)
+markVarForSelectPriv(ParseState *pstate, Var *var)
{
Index lv;
@@ -1089,7 +1084,7 @@ markVarForSelectPriv(ParseState *pstate, Var *var, RangeTblEntry *rte)
/* Find the appropriate pstate if it's an uplevel Var */
for (lv = 0; lv < var->varlevelsup; lv++)
pstate = pstate->parentParseState;
- markRTEForSelectPriv(pstate, rte, var->varno, var->varattno);
+ markRTEForSelectPriv(pstate, var->varno, var->varattno);
}
/*
@@ -3105,9 +3100,13 @@ expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,
/*
* Require read access to the table. This is normally redundant with the
* markVarForSelectPriv calls below, but not if the table has zero
- * columns.
+ * columns. We need not do anything if the nsitem is for a join: its
+ * component tables will have been marked ACL_SELECT when they were added
+ * to the rangetable. (This step changes things only for the target
+ * relation of UPDATE/DELETE, which cannot be under a join.)
*/
- rte->requiredPerms |= ACL_SELECT;
+ if (rte->rtekind == RTE_RELATION)
+ rte->requiredPerms |= ACL_SELECT;
forboth(name, names, var, vars)
{
@@ -3122,7 +3121,7 @@ expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,
te_list = lappend(te_list, te);
/* Require read access to each column */
- markVarForSelectPriv(pstate, varnode, rte);
+ markVarForSelectPriv(pstate, varnode);
}
Assert(name == NULL && var == NULL); /* lists not the same length? */
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 51ecc16c42efe..6e8fbc4780193 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -1384,16 +1384,20 @@ ExpandSingleTable(ParseState *pstate, ParseNamespaceItem *nsitem,
/*
* Require read access to the table. This is normally redundant with
* the markVarForSelectPriv calls below, but not if the table has zero
- * columns.
+ * columns. We need not do anything if the nsitem is for a join: its
+ * component tables will have been marked ACL_SELECT when they were
+ * added to the rangetable. (This step changes things only for the
+ * target relation of UPDATE/DELETE, which cannot be under a join.)
*/
- rte->requiredPerms |= ACL_SELECT;
+ if (rte->rtekind == RTE_RELATION)
+ rte->requiredPerms |= ACL_SELECT;
/* Require read access to each column */
foreach(l, vars)
{
Var *var = (Var *) lfirst(l);
- markVarForSelectPriv(pstate, var, rte);
+ markVarForSelectPriv(pstate, var);
}
return vars;
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index b31f3afa0391a..75266caeb4bb5 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -443,7 +443,7 @@ generateSerialExtraStmts(CreateStmtContext *cxt, ColumnDef *column,
}
ereport(DEBUG1,
- (errmsg("%s will create implicit sequence \"%s\" for serial column \"%s.%s\"",
+ (errmsg_internal("%s will create implicit sequence \"%s\" for serial column \"%s.%s\"",
cxt->stmtType, sname,
cxt->relation->relname, column->colname)));
diff --git a/src/backend/partitioning/partbounds.c b/src/backend/partitioning/partbounds.c
index 0c3f212ff21e6..a60c379725d1d 100644
--- a/src/backend/partitioning/partbounds.c
+++ b/src/backend/partitioning/partbounds.c
@@ -3144,7 +3144,7 @@ check_default_partition_contents(Relation parent, Relation default_rel,
if (PartConstraintImpliedByRelConstraint(default_rel, def_part_constraints))
{
ereport(DEBUG1,
- (errmsg("updated partition constraint for default partition \"%s\" is implied by existing constraints",
+ (errmsg_internal("updated partition constraint for default partition \"%s\" is implied by existing constraints",
RelationGetRelationName(default_rel))));
return;
}
@@ -3195,7 +3195,7 @@ check_default_partition_contents(Relation parent, Relation default_rel,
def_part_constraints))
{
ereport(DEBUG1,
- (errmsg("updated partition constraint for default partition \"%s\" is implied by existing constraints",
+ (errmsg_internal("updated partition constraint for default partition \"%s\" is implied by existing constraints",
RelationGetRelationName(part_rel))));
table_close(part_rel, NoLock);
diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c
index ab2534351d7c5..6140ee7617fa8 100644
--- a/src/backend/port/win32_shmem.c
+++ b/src/backend/port/win32_shmem.c
@@ -236,12 +236,12 @@ PGSharedMemoryCreate(Size size,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("the processor does not support large pages")));
ereport(DEBUG1,
- (errmsg("disabling huge pages")));
+ (errmsg_internal("disabling huge pages")));
}
else if (!EnableLockPagesPrivilege(huge_pages == HUGE_PAGES_ON ? FATAL : DEBUG1))
{
ereport(DEBUG1,
- (errmsg("disabling huge pages")));
+ (errmsg_internal("disabling huge pages")));
}
else
{
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 47e60ca5613f8..23ef23c13ebe2 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -443,7 +443,7 @@ AutoVacLauncherMain(int argc, char *argv[])
init_ps_display(NULL);
ereport(DEBUG1,
- (errmsg("autovacuum launcher started")));
+ (errmsg_internal("autovacuum launcher started")));
if (PostAuthDelay)
pg_usleep(PostAuthDelay * 1000000L);
@@ -847,7 +847,7 @@ static void
AutoVacLauncherShutdown(void)
{
ereport(DEBUG1,
- (errmsg("autovacuum launcher shutting down")));
+ (errmsg_internal("autovacuum launcher shutting down")));
AutoVacuumShmem->av_launcherpid = 0;
proc_exit(0); /* done */
@@ -1190,7 +1190,7 @@ do_start_worker(void)
* pass without forcing a vacuum. (This limit can be tightened for
* particular tables, but not loosened.)
*/
- recentXid = ReadNewTransactionId();
+ recentXid = ReadNextTransactionId();
xidForceLimit = recentXid - autovacuum_freeze_max_age;
/* ensure it's a "normal" XID, else TransactionIdPrecedes misbehaves */
/* this can cause the limit to go backwards by 3, but that's OK */
@@ -1703,13 +1703,13 @@ AutoVacWorkerMain(int argc, char *argv[])
SetProcessingMode(NormalProcessing);
set_ps_display(dbname);
ereport(DEBUG1,
- (errmsg("autovacuum: processing database \"%s\"", dbname)));
+ (errmsg_internal("autovacuum: processing database \"%s\"", dbname)));
if (PostAuthDelay)
pg_usleep(PostAuthDelay * 1000000L);
/* And do an appropriate amount of work */
- recentXid = ReadNewTransactionId();
+ recentXid = ReadNextTransactionId();
recentMulti = ReadNextMultiXactId();
do_autovacuum();
}
@@ -2918,8 +2918,9 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map,
tab = palloc(sizeof(autovac_table));
tab->at_relid = relid;
tab->at_sharedrel = classForm->relisshared;
- tab->at_params.options = VACOPT_SKIPTOAST |
- (dovacuum ? VACOPT_VACUUM : 0) |
+
+ /* Note that this skips toast relations */
+ tab->at_params.options = (dovacuum ? VACOPT_VACUUM : 0) |
(doanalyze ? VACOPT_ANALYZE : 0) |
(!wraparound ? VACOPT_SKIP_LOCKED : 0);
tab->at_params.index_cleanup = VACOPT_TERNARY_DEFAULT;
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index dd3dad3de35fa..6fdea3fc2d2b9 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -402,7 +402,7 @@ BackgroundWorkerStateChange(bool allow_new_workers)
/* Log it! */
ereport(DEBUG1,
- (errmsg("registering background worker \"%s\"",
+ (errmsg_internal("registering background worker \"%s\"",
rw->rw_worker.bgw_name)));
slist_push_head(&BackgroundWorkerList, &rw->rw_lnode);
@@ -434,7 +434,7 @@ ForgetBackgroundWorker(slist_mutable_iter *cur)
slot->in_use = false;
ereport(DEBUG1,
- (errmsg("unregistering background worker \"%s\"",
+ (errmsg_internal("unregistering background worker \"%s\"",
rw->rw_worker.bgw_name)));
slist_delete_current(cur);
@@ -897,7 +897,7 @@ RegisterBackgroundWorker(BackgroundWorker *worker)
if (!IsUnderPostmaster)
ereport(DEBUG1,
- (errmsg("registering background worker \"%s\"", worker->bgw_name)));
+ (errmsg_internal("registering background worker \"%s\"", worker->bgw_name)));
if (!process_shared_preload_libraries_in_progress &&
strcmp(worker->bgw_library_name, "postgres") != 0)
diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c
index 54a818bf611a6..76f9f98ebb46a 100644
--- a/src/backend/postmaster/checkpointer.c
+++ b/src/backend/postmaster/checkpointer.c
@@ -1226,7 +1226,7 @@ CompactCheckpointerRequestQueue(void)
CheckpointerShmem->requests[preserve_count++] = CheckpointerShmem->requests[n];
}
ereport(DEBUG1,
- (errmsg("compacted fsync request queue from %d entries to %d entries",
+ (errmsg_internal("compacted fsync request queue from %d entries to %d entries",
CheckpointerShmem->num_requests, preserve_count)));
CheckpointerShmem->num_requests = preserve_count;
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 7de27ee4e0171..9568dafbe24ab 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -5787,7 +5787,7 @@ do_start_bgworker(RegisteredBgWorker *rw)
}
ereport(DEBUG1,
- (errmsg("starting background worker process \"%s\"",
+ (errmsg_internal("starting background worker process \"%s\"",
rw->rw_worker.bgw_name)));
#ifdef EXEC_BACKEND
diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index d3bcc4b118e7e..e7a7486c35433 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -518,7 +518,7 @@ SysLoggerMain(int argc, char *argv[])
* it DEBUG1 to suppress in normal use.
*/
ereport(DEBUG1,
- (errmsg("logger shutting down")));
+ (errmsg_internal("logger shutting down")));
/*
* Normal exit from the syslogger is here. Note that we
diff --git a/src/backend/regex/regc_lex.c b/src/backend/regex/regc_lex.c
index ca2bce48312aa..16664531641c8 100644
--- a/src/backend/regex/regc_lex.c
+++ b/src/backend/regex/regc_lex.c
@@ -389,7 +389,7 @@ next(struct vars *v)
{
v->now++;
INTOCON(L_BRE);
- RET('}');
+ RETV('}', 1);
}
else
FAILW(REG_BADBR);
diff --git a/src/backend/regex/regc_nfa.c b/src/backend/regex/regc_nfa.c
index 92c9c4d795d1a..7ed675f88a4ab 100644
--- a/src/backend/regex/regc_nfa.c
+++ b/src/backend/regex/regc_nfa.c
@@ -2902,7 +2902,7 @@ compact(struct nfa *nfa,
break;
default:
NERR(REG_ASSERT);
- break;
+ return;
}
carcsort(first, ca - first);
ca->co = COLORLESS;
@@ -2951,11 +2951,11 @@ carc_cmp(const void *a, const void *b)
static void
freecnfa(struct cnfa *cnfa)
{
- assert(cnfa->nstates != 0); /* not empty already */
- cnfa->nstates = 0;
+ assert(!NULLCNFA(*cnfa)); /* not empty already */
FREE(cnfa->stflags);
FREE(cnfa->states);
FREE(cnfa->arcs);
+ ZAPCNFA(*cnfa);
}
/*
@@ -3012,13 +3012,13 @@ dumpstate(struct state *s,
fprintf(f, "\tno out arcs\n");
else
dumparcs(s, f);
- fflush(f);
for (a = s->ins; a != NULL; a = a->inchain)
{
if (a->to != s)
fprintf(f, "\tlink from %d to %d on %d's in-chain\n",
a->from->no, a->to->no, s->no);
}
+ fflush(f);
}
/*
diff --git a/src/backend/regex/regcomp.c b/src/backend/regex/regcomp.c
index 91078dcd80647..cd0caaa2d03d1 100644
--- a/src/backend/regex/regcomp.c
+++ b/src/backend/regex/regcomp.c
@@ -479,7 +479,10 @@ pg_regcomp(regex_t *re,
#ifdef REG_DEBUG
if (flags & REG_DUMP)
+ {
dump(re, stdout);
+ fflush(stdout);
+ }
#endif
assert(v->err == 0);
@@ -721,7 +724,7 @@ parse(struct vars *v,
*
* This mostly manages concatenation, working closely with parseqatom().
* Concatenated things are bundled up as much as possible, with separate
- * ',' nodes introduced only when necessary due to substructure.
+ * '.' nodes introduced only when necessary due to substructure.
*/
static struct subre *
parsebranch(struct vars *v,
@@ -939,7 +942,6 @@ parseqatom(struct vars *v,
subno = v->nsubexp;
if ((size_t) subno >= v->nsubs)
moresubs(v, subno);
- assert((size_t) subno < v->nsubs);
}
else
atomtype = PLAIN; /* something that's not '(' */
@@ -957,6 +959,7 @@ parseqatom(struct vars *v,
NOERR();
if (cap)
{
+ assert(v->subs[subno] == NULL);
v->subs[subno] = atom;
t = subre(v, '(', atom->flags | CAP, lp, rp);
NOERR();
diff --git a/src/backend/regex/regexec.c b/src/backend/regex/regexec.c
index f7eaa76b02c2b..adcbcc0a8ea25 100644
--- a/src/backend/regex/regexec.c
+++ b/src/backend/regex/regexec.c
@@ -324,6 +324,11 @@ pg_regexec(regex_t *re,
if (v->lblastcp != NULL)
FREE(v->lblastcp);
+#ifdef REG_DEBUG
+ if (v->eflags & (REG_FTRACE | REG_MTRACE))
+ fflush(stdout);
+#endif
+
return st;
}
@@ -668,7 +673,7 @@ subset(struct vars *v,
if ((size_t) n >= v->nmatch)
return;
- MDEBUG(("setting %d\n", n));
+ MDEBUG(("%d: setting %d = %ld-%ld\n", sub->id, n, LOFF(begin), LOFF(end)));
v->pmatch[n].rm_so = OFF(begin);
v->pmatch[n].rm_eo = OFF(end);
}
@@ -697,7 +702,7 @@ cdissect(struct vars *v,
int er;
assert(t != NULL);
- MDEBUG(("cdissect %ld-%ld %c\n", LOFF(begin), LOFF(end), t->op));
+ MDEBUG(("%d: cdissect %c %ld-%ld\n", t->id, t->op, LOFF(begin), LOFF(end)));
/* handy place to check for operation cancel */
if (CANCEL_REQUESTED(v->re))
@@ -779,14 +784,14 @@ ccondissect(struct vars *v,
NOERR();
d2 = getsubdfa(v, t->right);
NOERR();
- MDEBUG(("cconcat %d\n", t->id));
+ MDEBUG(("%d: ccondissect %ld-%ld\n", t->id, LOFF(begin), LOFF(end)));
/* pick a tentative midpoint */
mid = longest(v, d, begin, end, (int *) NULL);
NOERR();
if (mid == NULL)
return REG_NOMATCH;
- MDEBUG(("tentative midpoint %ld\n", LOFF(mid)));
+ MDEBUG(("%d: tentative midpoint %ld\n", t->id, LOFF(mid)));
/* iterate until satisfaction or failure */
for (;;)
@@ -801,7 +806,7 @@ ccondissect(struct vars *v,
if (er == REG_OKAY)
{
/* satisfaction */
- MDEBUG(("successful\n"));
+ MDEBUG(("%d: successful\n", t->id));
return REG_OKAY;
}
}
@@ -814,7 +819,7 @@ ccondissect(struct vars *v,
if (mid == begin)
{
/* all possibilities exhausted */
- MDEBUG(("%d no midpoint\n", t->id));
+ MDEBUG(("%d: no midpoint\n", t->id));
return REG_NOMATCH;
}
mid = longest(v, d, begin, mid - 1, (int *) NULL);
@@ -822,7 +827,7 @@ ccondissect(struct vars *v,
if (mid == NULL)
{
/* failed to find a new one */
- MDEBUG(("%d failed midpoint\n", t->id));
+ MDEBUG(("%d: failed midpoint\n", t->id));
return REG_NOMATCH;
}
MDEBUG(("%d: new midpoint %ld\n", t->id, LOFF(mid)));
@@ -857,14 +862,14 @@ crevcondissect(struct vars *v,
NOERR();
d2 = getsubdfa(v, t->right);
NOERR();
- MDEBUG(("crevcon %d\n", t->id));
+ MDEBUG(("%d: crevcondissect %ld-%ld\n", t->id, LOFF(begin), LOFF(end)));
/* pick a tentative midpoint */
mid = shortest(v, d, begin, begin, end, (chr **) NULL, (int *) NULL);
NOERR();
if (mid == NULL)
return REG_NOMATCH;
- MDEBUG(("tentative midpoint %ld\n", LOFF(mid)));
+ MDEBUG(("%d: tentative midpoint %ld\n", t->id, LOFF(mid)));
/* iterate until satisfaction or failure */
for (;;)
@@ -879,7 +884,7 @@ crevcondissect(struct vars *v,
if (er == REG_OKAY)
{
/* satisfaction */
- MDEBUG(("successful\n"));
+ MDEBUG(("%d: successful\n", t->id));
return REG_OKAY;
}
}
@@ -892,7 +897,7 @@ crevcondissect(struct vars *v,
if (mid == end)
{
/* all possibilities exhausted */
- MDEBUG(("%d no midpoint\n", t->id));
+ MDEBUG(("%d: no midpoint\n", t->id));
return REG_NOMATCH;
}
mid = shortest(v, d, begin, mid + 1, end, (chr **) NULL, (int *) NULL);
@@ -900,7 +905,7 @@ crevcondissect(struct vars *v,
if (mid == NULL)
{
/* failed to find a new one */
- MDEBUG(("%d failed midpoint\n", t->id));
+ MDEBUG(("%d: failed midpoint\n", t->id));
return REG_NOMATCH;
}
MDEBUG(("%d: new midpoint %ld\n", t->id, LOFF(mid)));
@@ -935,7 +940,8 @@ cbrdissect(struct vars *v,
assert(n >= 0);
assert((size_t) n < v->nmatch);
- MDEBUG(("cbackref n%d %d{%d-%d}\n", t->id, n, min, max));
+ MDEBUG(("%d: cbrdissect %d{%d-%d} %ld-%ld\n", t->id, n, min, max,
+ LOFF(begin), LOFF(end)));
/* get the backreferenced string */
if (v->pmatch[n].rm_so == -1)
@@ -952,7 +958,7 @@ cbrdissect(struct vars *v,
*/
if (begin == end && min <= max)
{
- MDEBUG(("cbackref matched trivially\n"));
+ MDEBUG(("%d: backref matched trivially\n", t->id));
return REG_OKAY;
}
return REG_NOMATCH;
@@ -962,7 +968,7 @@ cbrdissect(struct vars *v,
/* matches only if zero repetitions are okay */
if (min == 0)
{
- MDEBUG(("cbackref matched trivially\n"));
+ MDEBUG(("%d: backref matched trivially\n", t->id));
return REG_OKAY;
}
return REG_NOMATCH;
@@ -989,7 +995,7 @@ cbrdissect(struct vars *v,
p += brlen;
}
- MDEBUG(("cbackref matched\n"));
+ MDEBUG(("%d: backref matched\n", t->id));
return REG_OKAY;
}
@@ -1011,13 +1017,13 @@ caltdissect(struct vars *v,
assert(t->op == '|');
assert(t->left != NULL && t->left->cnfa.nstates > 0);
- MDEBUG(("calt n%d\n", t->id));
+ MDEBUG(("%d: caltdissect %ld-%ld\n", t->id, LOFF(begin), LOFF(end)));
d = getsubdfa(v, t->left);
NOERR();
if (longest(v, d, begin, end, (int *) NULL) == end)
{
- MDEBUG(("calt matched\n"));
+ MDEBUG(("%d: caltdissect matched\n", t->id));
er = cdissect(v, t->left, begin, end);
if (er != REG_NOMATCH)
return er;
@@ -1054,6 +1060,8 @@ citerdissect(struct vars *v,
assert(!(t->left->flags & SHORTER));
assert(begin <= end);
+ MDEBUG(("%d: citerdissect %ld-%ld\n", t->id, LOFF(begin), LOFF(end)));
+
/*
* For the moment, assume the minimum number of matches is 1. If zero
* matches are allowed, and the target string is empty, we are allowed to
@@ -1092,7 +1100,6 @@ citerdissect(struct vars *v,
FREE(endpts);
return v->err;
}
- MDEBUG(("citer %d\n", t->id));
/*
* Our strategy is to first find a set of sub-match endpoints that are
@@ -1182,7 +1189,7 @@ citerdissect(struct vars *v,
if (i > k)
{
/* satisfaction */
- MDEBUG(("%d successful\n", t->id));
+ MDEBUG(("%d: successful\n", t->id));
FREE(endpts);
return REG_OKAY;
}
@@ -1223,11 +1230,11 @@ citerdissect(struct vars *v,
*/
if (t->min == 0 && begin == end)
{
- MDEBUG(("%d allowing zero matches\n", t->id));
+ MDEBUG(("%d: allowing zero matches\n", t->id));
return REG_OKAY;
}
- MDEBUG(("%d failed\n", t->id));
+ MDEBUG(("%d: failed\n", t->id));
return REG_NOMATCH;
}
@@ -1255,6 +1262,8 @@ creviterdissect(struct vars *v,
assert(t->left->flags & SHORTER);
assert(begin <= end);
+ MDEBUG(("%d: creviterdissect %ld-%ld\n", t->id, LOFF(begin), LOFF(end)));
+
/*
* If zero matches are allowed, and target string is empty, just declare
* victory. OTOH, if target string isn't empty, zero matches can't work
@@ -1264,7 +1273,10 @@ creviterdissect(struct vars *v,
if (min_matches <= 0)
{
if (begin == end)
+ {
+ MDEBUG(("%d: allowing zero matches\n", t->id));
return REG_OKAY;
+ }
min_matches = 1;
}
@@ -1293,7 +1305,6 @@ creviterdissect(struct vars *v,
FREE(endpts);
return v->err;
}
- MDEBUG(("creviter %d\n", t->id));
/*
* Our strategy is to first find a set of sub-match endpoints that are
@@ -1389,7 +1400,7 @@ creviterdissect(struct vars *v,
if (i > k)
{
/* satisfaction */
- MDEBUG(("%d successful\n", t->id));
+ MDEBUG(("%d: successful\n", t->id));
FREE(endpts);
return REG_OKAY;
}
@@ -1415,7 +1426,7 @@ creviterdissect(struct vars *v,
}
/* all possibilities exhausted */
- MDEBUG(("%d failed\n", t->id));
+ MDEBUG(("%d: failed\n", t->id));
FREE(endpts);
return REG_NOMATCH;
}
diff --git a/src/backend/replication/backup_manifest.c b/src/backend/replication/backup_manifest.c
index 0cefd181b5a11..32bb0efb3dab5 100644
--- a/src/backend/replication/backup_manifest.c
+++ b/src/backend/replication/backup_manifest.c
@@ -330,12 +330,13 @@ SendBackupManifest(backup_manifest_info *manifest)
* twice.
*/
manifest->still_checksumming = false;
- if (pg_cryptohash_final(manifest->manifest_ctx, checksumbuf) < 0)
+ if (pg_cryptohash_final(manifest->manifest_ctx, checksumbuf,
+ sizeof(checksumbuf)) < 0)
elog(ERROR, "failed to finalize checksum of backup manifest");
AppendStringToManifest(manifest, "\"Manifest-Checksum\": \"");
- dstlen = pg_hex_enc_len(PG_SHA256_DIGEST_LENGTH);
+ dstlen = pg_hex_enc_len(sizeof(checksumbuf));
checksumstringbuf = palloc0(dstlen + 1); /* includes \0 */
- pg_hex_encode((char *) checksumbuf, sizeof checksumbuf,
+ pg_hex_encode((char *) checksumbuf, sizeof(checksumbuf),
checksumstringbuf, dstlen);
checksumstringbuf[dstlen] = '\0';
AppendStringToManifest(manifest, checksumstringbuf);
diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
index e9582748617f0..7714696140873 100644
--- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
+++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
@@ -982,6 +982,7 @@ libpqrcv_exec(WalReceiverConn *conn, const char *query,
{
PGresult *pgres = NULL;
WalRcvExecResult *walres = palloc0(sizeof(WalRcvExecResult));
+ char *diag_sqlstate;
if (MyDatabaseId == InvalidOid)
ereport(ERROR,
@@ -1025,6 +1026,13 @@ libpqrcv_exec(WalReceiverConn *conn, const char *query,
case PGRES_BAD_RESPONSE:
walres->status = WALRCV_ERROR;
walres->err = pchomp(PQerrorMessage(conn->streamConn));
+ diag_sqlstate = PQresultErrorField(pgres, PG_DIAG_SQLSTATE);
+ if (diag_sqlstate)
+ walres->sqlstate = MAKE_SQLSTATE(diag_sqlstate[0],
+ diag_sqlstate[1],
+ diag_sqlstate[2],
+ diag_sqlstate[3],
+ diag_sqlstate[4]);
break;
}
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index 186514cd9ed43..cb462a052ad47 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -73,20 +73,6 @@ typedef struct LogicalRepWorkerId
Oid relid;
} LogicalRepWorkerId;
-typedef struct StopWorkersData
-{
- int nestDepth; /* Sub-transaction nest level */
- List *workers; /* List of LogicalRepWorkerId */
- struct StopWorkersData *parent; /* This need not be an immediate
- * subtransaction parent */
-} StopWorkersData;
-
-/*
- * Stack of StopWorkersData elements. Each stack element contains the workers
- * to be stopped for that subtransaction.
- */
-static StopWorkersData *on_commit_stop_workers = NULL;
-
static void ApplyLauncherWakeup(void);
static void logicalrep_launcher_onexit(int code, Datum arg);
static void logicalrep_worker_onexit(int code, Datum arg);
@@ -296,7 +282,7 @@ logicalrep_worker_launch(Oid dbid, Oid subid, const char *subname, Oid userid,
TimestampTz now;
ereport(DEBUG1,
- (errmsg("starting logical replication worker for subscription \"%s\"",
+ (errmsg_internal("starting logical replication worker for subscription \"%s\"",
subname)));
/* Report this after the initial starting message for consistency. */
@@ -546,51 +532,6 @@ logicalrep_worker_stop(Oid subid, Oid relid)
LWLockRelease(LogicalRepWorkerLock);
}
-/*
- * Request worker for specified sub/rel to be stopped on commit.
- */
-void
-logicalrep_worker_stop_at_commit(Oid subid, Oid relid)
-{
- int nestDepth = GetCurrentTransactionNestLevel();
- LogicalRepWorkerId *wid;
- MemoryContext oldctx;
-
- /* Make sure we store the info in context that survives until commit. */
- oldctx = MemoryContextSwitchTo(TopTransactionContext);
-
- /* Check that previous transactions were properly cleaned up. */
- Assert(on_commit_stop_workers == NULL ||
- nestDepth >= on_commit_stop_workers->nestDepth);
-
- /*
- * Push a new stack element if we don't already have one for the current
- * nestDepth.
- */
- if (on_commit_stop_workers == NULL ||
- nestDepth > on_commit_stop_workers->nestDepth)
- {
- StopWorkersData *newdata = palloc(sizeof(StopWorkersData));
-
- newdata->nestDepth = nestDepth;
- newdata->workers = NIL;
- newdata->parent = on_commit_stop_workers;
- on_commit_stop_workers = newdata;
- }
-
- /*
- * Finally add a new worker into the worker list of the current
- * subtransaction.
- */
- wid = palloc(sizeof(LogicalRepWorkerId));
- wid->subid = subid;
- wid->relid = relid;
- on_commit_stop_workers->workers =
- lappend(on_commit_stop_workers->workers, wid);
-
- MemoryContextSwitchTo(oldctx);
-}
-
/*
* Wake up (using latch) any logical replication worker for specified sub/rel.
*/
@@ -819,109 +760,21 @@ ApplyLauncherShmemInit(void)
}
}
-/*
- * Check whether current transaction has manipulated logical replication
- * workers.
- */
-bool
-XactManipulatesLogicalReplicationWorkers(void)
-{
- return (on_commit_stop_workers != NULL);
-}
-
/*
* Wakeup the launcher on commit if requested.
*/
void
AtEOXact_ApplyLauncher(bool isCommit)
{
-
- Assert(on_commit_stop_workers == NULL ||
- (on_commit_stop_workers->nestDepth == 1 &&
- on_commit_stop_workers->parent == NULL));
-
if (isCommit)
{
- ListCell *lc;
-
- if (on_commit_stop_workers != NULL)
- {
- List *workers = on_commit_stop_workers->workers;
-
- foreach(lc, workers)
- {
- LogicalRepWorkerId *wid = lfirst(lc);
-
- logicalrep_worker_stop(wid->subid, wid->relid);
- }
- }
-
if (on_commit_launcher_wakeup)
ApplyLauncherWakeup();
}
- /*
- * No need to pfree on_commit_stop_workers. It was allocated in
- * transaction memory context, which is going to be cleaned soon.
- */
- on_commit_stop_workers = NULL;
on_commit_launcher_wakeup = false;
}
-/*
- * On commit, merge the current on_commit_stop_workers list into the
- * immediate parent, if present.
- * On rollback, discard the current on_commit_stop_workers list.
- * Pop out the stack.
- */
-void
-AtEOSubXact_ApplyLauncher(bool isCommit, int nestDepth)
-{
- StopWorkersData *parent;
-
- /* Exit immediately if there's no work to do at this level. */
- if (on_commit_stop_workers == NULL ||
- on_commit_stop_workers->nestDepth < nestDepth)
- return;
-
- Assert(on_commit_stop_workers->nestDepth == nestDepth);
-
- parent = on_commit_stop_workers->parent;
-
- if (isCommit)
- {
- /*
- * If the upper stack element is not an immediate parent
- * subtransaction, just decrement the notional nesting depth without
- * doing any real work. Else, we need to merge the current workers
- * list into the parent.
- */
- if (!parent || parent->nestDepth < nestDepth - 1)
- {
- on_commit_stop_workers->nestDepth--;
- return;
- }
-
- parent->workers =
- list_concat(parent->workers, on_commit_stop_workers->workers);
- }
- else
- {
- /*
- * Abandon everything that was done at this nesting level. Explicitly
- * free memory to avoid a transaction-lifespan leak.
- */
- list_free_deep(on_commit_stop_workers->workers);
- }
-
- /*
- * We have taken care of the current subtransaction workers list for both
- * abort or commit. So we are ready to pop the stack.
- */
- pfree(on_commit_stop_workers);
- on_commit_stop_workers = parent;
-}
-
/*
* Request wakeup of the launcher on commit of the transaction.
*
@@ -952,7 +805,7 @@ ApplyLauncherMain(Datum main_arg)
TimestampTz last_start_time = 0;
ereport(DEBUG1,
- (errmsg("logical replication launcher started")));
+ (errmsg_internal("logical replication launcher started")));
before_shmem_exit(logicalrep_launcher_onexit, (Datum) 0);
diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c
index 9bd761a426223..685eaa6134e7c 100644
--- a/src/backend/replication/logical/origin.c
+++ b/src/backend/replication/logical/origin.c
@@ -322,27 +322,15 @@ replorigin_create(char *roname)
return roident;
}
-
/*
- * Drop replication origin.
- *
- * Needs to be called in a transaction.
+ * Helper function to drop a replication origin.
*/
-void
-replorigin_drop(RepOriginId roident, bool nowait)
+static void
+replorigin_drop_guts(Relation rel, RepOriginId roident, bool nowait)
{
HeapTuple tuple;
- Relation rel;
int i;
- Assert(IsTransactionState());
-
- /*
- * To interlock against concurrent drops, we hold ExclusiveLock on
- * pg_replication_origin throughout this function.
- */
- rel = table_open(ReplicationOriginRelationId, ExclusiveLock);
-
/*
* First, clean up the slot state info, if there is any matching slot.
*/
@@ -415,11 +403,40 @@ replorigin_drop(RepOriginId roident, bool nowait)
ReleaseSysCache(tuple);
CommandCounterIncrement();
-
- /* now release lock again */
- table_close(rel, ExclusiveLock);
}
+/*
+ * Drop replication origin (by name).
+ *
+ * Needs to be called in a transaction.
+ */
+void
+replorigin_drop_by_name(char *name, bool missing_ok, bool nowait)
+{
+ RepOriginId roident;
+ Relation rel;
+
+ Assert(IsTransactionState());
+
+ /*
+ * To interlock against concurrent drops, we hold ExclusiveLock on
+ * pg_replication_origin till xact commit.
+ *
+ * XXX We can optimize this by acquiring the lock on a specific origin by
+ * using LockSharedObject if required. However, for that, we first to
+ * acquire a lock on ReplicationOriginRelationId, get the origin_id, lock
+ * the specific origin and then re-check if the origin still exists.
+ */
+ rel = table_open(ReplicationOriginRelationId, ExclusiveLock);
+
+ roident = replorigin_by_name(name, missing_ok);
+
+ if (OidIsValid(roident))
+ replorigin_drop_guts(rel, roident, nowait);
+
+ /* We keep the lock on pg_replication_origin until commit */
+ table_close(rel, NoLock);
+}
/*
* Lookup replication origin via its oid and return the name.
@@ -1256,16 +1273,12 @@ Datum
pg_replication_origin_drop(PG_FUNCTION_ARGS)
{
char *name;
- RepOriginId roident;
replorigin_check_prerequisites(false, false);
name = text_to_cstring((text *) DatumGetPointer(PG_GETARG_DATUM(0)));
- roident = replorigin_by_name(name, false);
- Assert(OidIsValid(roident));
-
- replorigin_drop(roident, true);
+ replorigin_drop_by_name(name, false, true);
pfree(name);
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index e903e561afc42..752cf2d7dbcea 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -189,24 +189,11 @@ struct SnapBuild
ReorderBuffer *reorder;
/*
- * Outdated: This struct isn't used for its original purpose anymore, but
- * can't be removed / changed in a minor version, because it's stored
- * on-disk.
+ * TransactionId at which the next phase of initial snapshot building will
+ * happen. InvalidTransactionId if not known (i.e. SNAPBUILD_START), or
+ * when no next phase necessary (SNAPBUILD_CONSISTENT).
*/
- struct
- {
- /*
- * NB: This field is misused, until a major version can break on-disk
- * compatibility. See SnapBuildNextPhaseAt() /
- * SnapBuildStartNextPhaseAt().
- */
- TransactionId was_xmin;
- TransactionId was_xmax;
-
- size_t was_xcnt; /* number of used xip entries */
- size_t was_xcnt_space; /* allocated size of xip */
- TransactionId *was_xip; /* running xacts array, xidComparator-sorted */
- } was_running;
+ TransactionId next_phase_at;
/*
* Array of transactions which could have catalog changes that committed
@@ -272,34 +259,6 @@ static void SnapBuildWaitSnapshot(xl_running_xacts *running, TransactionId cutof
static void SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn);
static bool SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn);
-/*
- * Return TransactionId after which the next phase of initial snapshot
- * building will happen.
- */
-static inline TransactionId
-SnapBuildNextPhaseAt(SnapBuild *builder)
-{
- /*
- * For backward compatibility reasons this has to be stored in the wrongly
- * named field. Will be fixed in next major version.
- */
- return builder->was_running.was_xmax;
-}
-
-/*
- * Set TransactionId after which the next phase of initial snapshot building
- * will happen.
- */
-static inline void
-SnapBuildStartNextPhaseAt(SnapBuild *builder, TransactionId at)
-{
- /*
- * For backward compatibility reasons this has to be stored in the wrongly
- * named field. Will be fixed in next major version.
- */
- builder->was_running.was_xmax = at;
-}
-
/*
* Allocate a new snapshot builder.
*
@@ -728,7 +687,7 @@ SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn)
* we got into the SNAPBUILD_FULL_SNAPSHOT state.
*/
if (builder->state < SNAPBUILD_CONSISTENT &&
- TransactionIdPrecedes(xid, SnapBuildNextPhaseAt(builder)))
+ TransactionIdPrecedes(xid, builder->next_phase_at))
return false;
/*
@@ -945,7 +904,7 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid,
*/
if (builder->state == SNAPBUILD_START ||
(builder->state == SNAPBUILD_BUILDING_SNAPSHOT &&
- TransactionIdPrecedes(xid, SnapBuildNextPhaseAt(builder))))
+ TransactionIdPrecedes(xid, builder->next_phase_at)))
{
/* ensure that only commits after this are getting replayed */
if (builder->start_decoding_at <= lsn)
@@ -1267,7 +1226,7 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
Assert(TransactionIdIsNormal(builder->xmax));
builder->state = SNAPBUILD_CONSISTENT;
- SnapBuildStartNextPhaseAt(builder, InvalidTransactionId);
+ builder->next_phase_at = InvalidTransactionId;
ereport(LOG,
(errmsg("logical decoding found consistent point at %X/%X",
@@ -1299,7 +1258,7 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
else if (builder->state == SNAPBUILD_START)
{
builder->state = SNAPBUILD_BUILDING_SNAPSHOT;
- SnapBuildStartNextPhaseAt(builder, running->nextXid);
+ builder->next_phase_at = running->nextXid;
/*
* Start with an xmin/xmax that's correct for future, when all the
@@ -1331,11 +1290,11 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
* be decoded. Switch to FULL_SNAPSHOT.
*/
else if (builder->state == SNAPBUILD_BUILDING_SNAPSHOT &&
- TransactionIdPrecedesOrEquals(SnapBuildNextPhaseAt(builder),
+ TransactionIdPrecedesOrEquals(builder->next_phase_at,
running->oldestRunningXid))
{
builder->state = SNAPBUILD_FULL_SNAPSHOT;
- SnapBuildStartNextPhaseAt(builder, running->nextXid);
+ builder->next_phase_at = running->nextXid;
ereport(LOG,
(errmsg("logical decoding found initial consistent point at %X/%X",
@@ -1356,11 +1315,11 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
* collected. Switch to CONSISTENT.
*/
else if (builder->state == SNAPBUILD_FULL_SNAPSHOT &&
- TransactionIdPrecedesOrEquals(SnapBuildNextPhaseAt(builder),
+ TransactionIdPrecedesOrEquals(builder->next_phase_at,
running->oldestRunningXid))
{
builder->state = SNAPBUILD_CONSISTENT;
- SnapBuildStartNextPhaseAt(builder, InvalidTransactionId);
+ builder->next_phase_at = InvalidTransactionId;
ereport(LOG,
(errmsg("logical decoding found consistent point at %X/%X",
@@ -1463,7 +1422,7 @@ typedef struct SnapBuildOnDisk
offsetof(SnapBuildOnDisk, version)
#define SNAPBUILD_MAGIC 0x51A1E001
-#define SNAPBUILD_VERSION 2
+#define SNAPBUILD_VERSION 3
/*
* Store/Load a snapshot from disk, depending on the snapshot builder's state.
@@ -1508,6 +1467,9 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
if (builder->state < SNAPBUILD_CONSISTENT)
return;
+ /* consistent snapshots have no next phase */
+ Assert(builder->next_phase_at == InvalidTransactionId);
+
/*
* We identify snapshots by the LSN they are valid for. We don't need to
* include timelines in the name as each LSN maps to exactly one timeline
@@ -1596,9 +1558,6 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
&ondisk->builder,
sizeof(SnapBuild));
- /* there shouldn't be any running xacts */
- Assert(builder->was_running.was_xcnt == 0);
-
/* copy committed xacts */
sz = sizeof(TransactionId) * builder->committed.xcnt;
memcpy(ondisk_c, builder->committed.xip, sz);
@@ -1801,34 +1760,6 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
}
COMP_CRC32C(checksum, &ondisk.builder, sizeof(SnapBuild));
- /* restore running xacts (dead, but kept for backward compat) */
- sz = sizeof(TransactionId) * ondisk.builder.was_running.was_xcnt_space;
- ondisk.builder.was_running.was_xip =
- MemoryContextAllocZero(builder->context, sz);
- pgstat_report_wait_start(WAIT_EVENT_SNAPBUILD_READ);
- readBytes = read(fd, ondisk.builder.was_running.was_xip, sz);
- pgstat_report_wait_end();
- if (readBytes != sz)
- {
- int save_errno = errno;
-
- CloseTransientFile(fd);
-
- if (readBytes < 0)
- {
- errno = save_errno;
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not read file \"%s\": %m", path)));
- }
- else
- ereport(ERROR,
- (errcode(ERRCODE_DATA_CORRUPTED),
- errmsg("could not read file \"%s\": read %d of %zu",
- path, readBytes, sz)));
- }
- COMP_CRC32C(checksum, ondisk.builder.was_running.was_xip, sz);
-
/* restore committed xacts information */
sz = sizeof(TransactionId) * ondisk.builder.committed.xcnt;
ondisk.builder.committed.xip = MemoryContextAllocZero(builder->context, sz);
@@ -1890,6 +1821,8 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
if (TransactionIdPrecedes(ondisk.builder.xmin, builder->initial_xmin_horizon))
goto snapshot_not_interesting;
+ /* consistent snapshots have no next phase */
+ Assert(ondisk.builder.next_phase_at == InvalidTransactionId);
/* ok, we think the snapshot is sensible, copy over everything important */
builder->xmin = ondisk.builder.xmin;
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c
index ccbdbcf08f918..24a6ce5d8ed60 100644
--- a/src/backend/replication/logical/tablesync.c
+++ b/src/backend/replication/logical/tablesync.c
@@ -31,8 +31,11 @@
* table state to INIT.
* - Tablesync worker starts; changes table state from INIT to DATASYNC while
* copying.
- * - Tablesync worker finishes the copy and sets table state to SYNCWAIT;
- * waits for state change.
+ * - Tablesync worker does initial table copy; there is a FINISHEDCOPY (sync
+ * worker specific) state to indicate when the copy phase has completed, so
+ * if the worker crashes with this (non-memory) state then the copy will not
+ * be re-attempted.
+ * - Tablesync worker then sets table state to SYNCWAIT; waits for state change.
* - Apply worker periodically checks for tables in SYNCWAIT state. When
* any appear, it sets the table state to CATCHUP and starts loop-waiting
* until either the table state is set to SYNCDONE or the sync worker
@@ -48,8 +51,8 @@
* point it sets state to READY and stops tracking. Again, there might
* be zero changes in between.
*
- * So the state progression is always: INIT -> DATASYNC -> SYNCWAIT ->
- * CATCHUP -> SYNCDONE -> READY.
+ * So the state progression is always: INIT -> DATASYNC -> FINISHEDCOPY
+ * -> SYNCWAIT -> CATCHUP -> SYNCDONE -> READY.
*
* The catalog pg_subscription_rel is used to keep information about
* subscribed tables and their state. The catalog holds all states
@@ -58,6 +61,7 @@
* Example flows look like this:
* - Apply is in front:
* sync:8
+ * -> set in catalog FINISHEDCOPY
* -> set in memory SYNCWAIT
* apply:10
* -> set in memory CATCHUP
@@ -73,6 +77,7 @@
*
* - Sync is in front:
* sync:10
+ * -> set in catalog FINISHEDCOPY
* -> set in memory SYNCWAIT
* apply:8
* -> set in memory CATCHUP
@@ -101,7 +106,10 @@
#include "replication/logicalrelation.h"
#include "replication/walreceiver.h"
#include "replication/worker_internal.h"
+#include "replication/slot.h"
+#include "replication/origin.h"
#include "storage/ipc.h"
+#include "storage/lmgr.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
@@ -269,26 +277,53 @@ invalidate_syncing_table_states(Datum arg, int cacheid, uint32 hashvalue)
static void
process_syncing_tables_for_sync(XLogRecPtr current_lsn)
{
- Assert(IsTransactionState());
-
SpinLockAcquire(&MyLogicalRepWorker->relmutex);
if (MyLogicalRepWorker->relstate == SUBREL_STATE_CATCHUP &&
current_lsn >= MyLogicalRepWorker->relstate_lsn)
{
TimeLineID tli;
+ char syncslotname[NAMEDATALEN] = {0};
MyLogicalRepWorker->relstate = SUBREL_STATE_SYNCDONE;
MyLogicalRepWorker->relstate_lsn = current_lsn;
SpinLockRelease(&MyLogicalRepWorker->relmutex);
+ /*
+ * UpdateSubscriptionRelState must be called within a transaction.
+ * That transaction will be ended within the finish_sync_worker().
+ */
+ if (!IsTransactionState())
+ StartTransactionCommand();
+
UpdateSubscriptionRelState(MyLogicalRepWorker->subid,
MyLogicalRepWorker->relid,
MyLogicalRepWorker->relstate,
MyLogicalRepWorker->relstate_lsn);
+ /* End wal streaming so wrconn can be re-used to drop the slot. */
walrcv_endstreaming(wrconn, &tli);
+
+ /*
+ * Cleanup the tablesync slot.
+ *
+ * This has to be done after updating the state because otherwise if
+ * there is an error while doing the database operations we won't be
+ * able to rollback dropped slot.
+ */
+ ReplicationSlotNameForTablesync(MyLogicalRepWorker->subid,
+ MyLogicalRepWorker->relid,
+ syncslotname,
+ sizeof(syncslotname));
+
+ /*
+ * It is important to give an error if we are unable to drop the slot,
+ * otherwise, it won't be dropped till the corresponding subscription
+ * is dropped. So passing missing_ok = false.
+ */
+ ReplicationSlotDropAtPubNode(wrconn, syncslotname, false);
+
finish_sync_worker();
}
else
@@ -403,6 +438,8 @@ process_syncing_tables_for_apply(XLogRecPtr current_lsn)
*/
if (current_lsn >= rstate->lsn)
{
+ char originname[NAMEDATALEN];
+
rstate->state = SUBREL_STATE_READY;
rstate->lsn = current_lsn;
if (!started_tx)
@@ -411,6 +448,28 @@ process_syncing_tables_for_apply(XLogRecPtr current_lsn)
started_tx = true;
}
+ /*
+ * Remove the tablesync origin tracking if exists.
+ *
+ * The normal case origin drop is done here instead of in the
+ * process_syncing_tables_for_sync function because we don't
+ * allow to drop the origin till the process owning the origin
+ * is alive.
+ *
+ * There is a chance that the user is concurrently performing
+ * refresh for the subscription where we remove the table
+ * state and its origin and by this time the origin might be
+ * already removed. So passing missing_ok = true.
+ */
+ ReplicationOriginNameForTablesync(MyLogicalRepWorker->subid,
+ rstate->relid,
+ originname,
+ sizeof(originname));
+ replorigin_drop_by_name(originname, true, false);
+
+ /*
+ * Update the state to READY only after the origin cleanup.
+ */
UpdateSubscriptionRelState(MyLogicalRepWorker->subid,
rstate->relid, rstate->state,
rstate->lsn);
@@ -805,6 +864,43 @@ copy_table(Relation rel)
logicalrep_rel_close(relmapentry, NoLock);
}
+/*
+ * Determine the tablesync slot name.
+ *
+ * The name must not exceed NAMEDATALEN - 1 because of remote node constraints
+ * on slot name length. We append system_identifier to avoid slot_name
+ * collision with subscriptions in other clusters. With the current scheme
+ * pg_%u_sync_%u_UINT64_FORMAT (3 + 10 + 6 + 10 + 20 + '\0'), the maximum
+ * length of slot_name will be 50.
+ *
+ * The returned slot name is stored in the supplied buffer (syncslotname) with
+ * the given size.
+ *
+ * Note: We don't use the subscription slot name as part of tablesync slot name
+ * because we are responsible for cleaning up these slots and it could become
+ * impossible to recalculate what name to cleanup if the subscription slot name
+ * had changed.
+ */
+void
+ReplicationSlotNameForTablesync(Oid suboid, Oid relid,
+ char *syncslotname, int szslot)
+{
+ snprintf(syncslotname, szslot, "pg_%u_sync_%u_" UINT64_FORMAT, suboid,
+ relid, GetSystemIdentifier());
+}
+
+/*
+ * Form the origin name for tablesync.
+ *
+ * Return the name in the supplied buffer.
+ */
+void
+ReplicationOriginNameForTablesync(Oid suboid, Oid relid,
+ char *originname, int szorgname)
+{
+ snprintf(originname, szorgname, "pg_%u_%u", suboid, relid);
+}
+
/*
* Start syncing the table in the sync worker.
*
@@ -822,6 +918,8 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
XLogRecPtr relstate_lsn;
Relation rel;
WalRcvExecResult *res;
+ char originname[NAMEDATALEN];
+ RepOriginId originid;
/* Check the state of the table synchronization. */
StartTransactionCommand();
@@ -847,19 +945,12 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
finish_sync_worker(); /* doesn't return */
}
- /*
- * To build a slot name for the sync work, we are limited to NAMEDATALEN -
- * 1 characters. We cut the original slot name to NAMEDATALEN - 28 chars
- * and append _%u_sync_%u (1 + 10 + 6 + 10 + '\0'). (It's actually the
- * NAMEDATALEN on the remote that matters, but this scheme will also work
- * reasonably if that is different.)
- */
- StaticAssertStmt(NAMEDATALEN >= 32, "NAMEDATALEN too small"); /* for sanity */
- slotname = psprintf("%.*s_%u_sync_%u",
- NAMEDATALEN - 28,
- MySubscription->slotname,
- MySubscription->oid,
- MyLogicalRepWorker->relid);
+ /* Calculate the name of the tablesync slot. */
+ slotname = (char *) palloc(NAMEDATALEN);
+ ReplicationSlotNameForTablesync(MySubscription->oid,
+ MyLogicalRepWorker->relid,
+ slotname,
+ NAMEDATALEN);
/*
* Here we use the slot name instead of the subscription name as the
@@ -872,7 +963,51 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
(errmsg("could not connect to the publisher: %s", err)));
Assert(MyLogicalRepWorker->relstate == SUBREL_STATE_INIT ||
- MyLogicalRepWorker->relstate == SUBREL_STATE_DATASYNC);
+ MyLogicalRepWorker->relstate == SUBREL_STATE_DATASYNC ||
+ MyLogicalRepWorker->relstate == SUBREL_STATE_FINISHEDCOPY);
+
+ /* Assign the origin tracking record name. */
+ ReplicationOriginNameForTablesync(MySubscription->oid,
+ MyLogicalRepWorker->relid,
+ originname,
+ sizeof(originname));
+
+ if (MyLogicalRepWorker->relstate == SUBREL_STATE_DATASYNC)
+ {
+ /*
+ * We have previously errored out before finishing the copy so the
+ * replication slot might exist. We want to remove the slot if it
+ * already exists and proceed.
+ *
+ * XXX We could also instead try to drop the slot, last time we failed
+ * but for that, we might need to clean up the copy state as it might
+ * be in the middle of fetching the rows. Also, if there is a network
+ * breakdown then it wouldn't have succeeded so trying it next time
+ * seems like a better bet.
+ */
+ ReplicationSlotDropAtPubNode(wrconn, slotname, true);
+ }
+ else if (MyLogicalRepWorker->relstate == SUBREL_STATE_FINISHEDCOPY)
+ {
+ /*
+ * The COPY phase was previously done, but tablesync then crashed
+ * before it was able to finish normally.
+ */
+ StartTransactionCommand();
+
+ /*
+ * The origin tracking name must already exist. It was created first
+ * time this tablesync was launched.
+ */
+ originid = replorigin_by_name(originname, false);
+ replorigin_session_setup(originid);
+ replorigin_session_origin = originid;
+ *origin_startpos = replorigin_session_get_progress(false);
+
+ CommitTransactionCommand();
+
+ goto copy_table_done;
+ }
SpinLockAcquire(&MyLogicalRepWorker->relmutex);
MyLogicalRepWorker->relstate = SUBREL_STATE_DATASYNC;
@@ -888,9 +1023,6 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
CommitTransactionCommand();
pgstat_report_stat(false);
- /*
- * We want to do the table data sync in a single transaction.
- */
StartTransactionCommand();
/*
@@ -916,13 +1048,46 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
walrcv_clear_result(res);
/*
- * Create a new temporary logical decoding slot. This slot will be used
+ * Create a new permanent logical decoding slot. This slot will be used
* for the catchup phase after COPY is done, so tell it to use the
* snapshot to make the final data consistent.
*/
- walrcv_create_slot(wrconn, slotname, true,
+ walrcv_create_slot(wrconn, slotname, false /* permanent */ ,
CRS_USE_SNAPSHOT, origin_startpos);
+ /*
+ * Setup replication origin tracking. The purpose of doing this before the
+ * copy is to avoid doing the copy again due to any error in setting up
+ * origin tracking.
+ */
+ originid = replorigin_by_name(originname, true);
+ if (!OidIsValid(originid))
+ {
+ /*
+ * Origin tracking does not exist, so create it now.
+ *
+ * Then advance to the LSN got from walrcv_create_slot. This is WAL
+ * logged for the purpose of recovery. Locks are to prevent the
+ * replication origin from vanishing while advancing.
+ */
+ originid = replorigin_create(originname);
+
+ LockRelationOid(ReplicationOriginRelationId, RowExclusiveLock);
+ replorigin_advance(originid, *origin_startpos, InvalidXLogRecPtr,
+ true /* go backward */ , true /* WAL log */ );
+ UnlockRelationOid(ReplicationOriginRelationId, RowExclusiveLock);
+
+ replorigin_session_setup(originid);
+ replorigin_session_origin = originid;
+ }
+ else
+ {
+ ereport(ERROR,
+ (errcode(ERRCODE_DUPLICATE_OBJECT),
+ errmsg("replication origin \"%s\" already exists",
+ originname)));
+ }
+
/* Now do the initial data copy */
PushActiveSnapshot(GetTransactionSnapshot());
copy_table(rel);
@@ -940,6 +1105,25 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
/* Make the copy visible. */
CommandCounterIncrement();
+ /*
+ * Update the persisted state to indicate the COPY phase is done; make it
+ * visible to others.
+ */
+ UpdateSubscriptionRelState(MyLogicalRepWorker->subid,
+ MyLogicalRepWorker->relid,
+ SUBREL_STATE_FINISHEDCOPY,
+ MyLogicalRepWorker->relstate_lsn);
+
+ CommitTransactionCommand();
+
+copy_table_done:
+
+ elog(DEBUG1,
+ "LogicalRepSyncTableStart: '%s' origin_startpos lsn %X/%X",
+ originname,
+ (uint32) (*origin_startpos >> 32),
+ (uint32) *origin_startpos);
+
/*
* We are done with the initial data synchronization, update the state.
*/
diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c
index eb7db89cef7d5..cfc924cd8935a 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -807,12 +807,8 @@ apply_handle_stream_stop(StringInfo s)
/* We must be in a valid transaction state */
Assert(IsTransactionState());
- /* The synchronization worker runs in single transaction. */
- if (!am_tablesync_worker())
- {
- /* Commit the per-stream transaction */
- CommitTransactionCommand();
- }
+ /* Commit the per-stream transaction */
+ CommitTransactionCommand();
in_streamed_transaction = false;
@@ -889,9 +885,7 @@ apply_handle_stream_abort(StringInfo s)
/* Cleanup the subxact info */
cleanup_subxact_info();
- /* The synchronization worker runs in single transaction */
- if (!am_tablesync_worker())
- CommitTransactionCommand();
+ CommitTransactionCommand();
return;
}
@@ -918,8 +912,7 @@ apply_handle_stream_abort(StringInfo s)
/* write the updated subxact list */
subxact_info_write(MyLogicalRepWorker->subid, xid);
- if (!am_tablesync_worker())
- CommitTransactionCommand();
+ CommitTransactionCommand();
}
}
@@ -1062,8 +1055,7 @@ apply_handle_stream_commit(StringInfo s)
static void
apply_handle_commit_internal(StringInfo s, LogicalRepCommitData *commit_data)
{
- /* The synchronization worker runs in single transaction. */
- if (IsTransactionState() && !am_tablesync_worker())
+ if (IsTransactionState())
{
/*
* Update origin state so we can restart streaming from correct
diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c
index 79765f96969df..1b993fb032dca 100644
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -342,10 +342,6 @@ pgoutput_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn)
{
char *origin;
- /* Message boundary */
- OutputPluginWrite(ctx, false);
- OutputPluginPrepareWrite(ctx, true);
-
/*----------
* XXX: which behaviour do we want here?
*
@@ -357,7 +353,13 @@ pgoutput_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn)
*----------
*/
if (replorigin_by_oid(txn->origin_id, true, &origin))
+ {
+ /* Message boundary */
+ OutputPluginWrite(ctx, false);
+ OutputPluginPrepareWrite(ctx, true);
logicalrep_write_origin(ctx->out, origin, txn->origin_lsn);
+ }
+
}
OutputPluginWrite(ctx, true);
@@ -780,12 +782,13 @@ pgoutput_stream_start(struct LogicalDecodingContext *ctx,
{
char *origin;
- /* Message boundary */
- OutputPluginWrite(ctx, false);
- OutputPluginPrepareWrite(ctx, true);
-
if (replorigin_by_oid(txn->origin_id, true, &origin))
+ {
+ /* Message boundary */
+ OutputPluginWrite(ctx, false);
+ OutputPluginPrepareWrite(ctx, true);
logicalrep_write_origin(ctx->out, origin, InvalidXLogRecPtr);
+ }
}
OutputPluginWrite(ctx, true);
diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c
index 1c1bf1605285b..f765002e0dca3 100644
--- a/src/backend/replication/syncrep.c
+++ b/src/backend/replication/syncrep.c
@@ -425,7 +425,7 @@ SyncRepInitConfig(void)
SpinLockRelease(&MyWalSnd->mutex);
ereport(DEBUG1,
- (errmsg("standby \"%s\" now has synchronous standby priority %u",
+ (errmsg_internal("standby \"%s\" now has synchronous standby priority %u",
application_name, priority)));
}
}
diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index 723f513d8bcb2..9ec71238c4892 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -249,7 +249,7 @@ WalReceiverMain(void)
SpinLockRelease(&walrcv->mutex);
- pg_atomic_init_u64(&WalRcv->writtenUpto, 0);
+ pg_atomic_write_u64(&WalRcv->writtenUpto, 0);
/* Arrange to clean up at walreceiver exit */
on_shmem_exit(WalRcvDie, 0);
@@ -1325,7 +1325,6 @@ pg_stat_get_wal_receiver(PG_FUNCTION_ARGS)
state = WalRcv->walRcvState;
receive_start_lsn = WalRcv->receiveStart;
receive_start_tli = WalRcv->receiveStartTLI;
- written_lsn = pg_atomic_read_u64(&WalRcv->writtenUpto);
flushed_lsn = WalRcv->flushedUpto;
received_tli = WalRcv->receivedTLI;
last_send_time = WalRcv->lastMsgSendTime;
@@ -1345,6 +1344,14 @@ pg_stat_get_wal_receiver(PG_FUNCTION_ARGS)
if (pid == 0 || !ready_to_display)
PG_RETURN_NULL();
+ /*
+ * Read "writtenUpto" without holding a spinlock. Note that it may not be
+ * consistent with the other shared variables of the WAL receiver
+ * protected by a spinlock, but this should not be used for data integrity
+ * checks.
+ */
+ written_lsn = pg_atomic_read_u64(&WalRcv->writtenUpto);
+
/* determine result type */
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
elog(ERROR, "return type must be a row type");
diff --git a/src/backend/replication/walreceiverfuncs.c b/src/backend/replication/walreceiverfuncs.c
index 69b91a7dab8f5..63e60478ea6e8 100644
--- a/src/backend/replication/walreceiverfuncs.c
+++ b/src/backend/replication/walreceiverfuncs.c
@@ -63,6 +63,7 @@ WalRcvShmemInit(void)
MemSet(WalRcv, 0, WalRcvShmemSize());
WalRcv->walRcvState = WALRCV_STOPPED;
SpinLockInit(&WalRcv->mutex);
+ pg_atomic_init_u64(&WalRcv->writtenUpto, 0);
WalRcv->latch = NULL;
}
}
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 8545c6c423170..64167fe3a6777 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -2319,7 +2319,7 @@ WalSndLoop(WalSndSendDataCallback send_data)
if (MyWalSnd->state == WALSNDSTATE_CATCHUP)
{
ereport(DEBUG1,
- (errmsg("\"%s\" has now caught up with upstream server",
+ (errmsg_internal("\"%s\" has now caught up with upstream server",
application_name)));
WalSndSetState(WALSNDSTATE_STREAMING);
}
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index ee4ccbbd3823c..27e4ef911c8a7 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -25,6 +25,7 @@
#include "catalog/heap.h"
#include "catalog/namespace.h"
#include "catalog/objectaccess.h"
+#include "catalog/pg_inherits.h"
#include "catalog/pg_rewrite.h"
#include "catalog/storage.h"
#include "commands/policy.h"
@@ -412,13 +413,14 @@ DefineQueryRewrite(const char *rulename,
* Are we converting a relation to a view?
*
* If so, check that the relation is empty because the storage for the
- * relation is going to be deleted. Also insist that the rel not have
- * any triggers, indexes, child tables, policies, or RLS enabled.
- * (Note: these tests are too strict, because they will reject
- * relations that once had such but don't anymore. But we don't
- * really care, because this whole business of converting relations to
- * views is just a kluge to allow dump/reload of views that
- * participate in circular dependencies.)
+ * relation is going to be deleted. Also insist that the rel not be
+ * involved in partitioning, nor have any triggers, indexes, child or
+ * parent tables, RLS policies, or RLS enabled. (Note: some of these
+ * tests are too strict, because they will reject relations that once
+ * had such but don't anymore. But we don't really care, because this
+ * whole business of converting relations to views is just an obsolete
+ * kluge to allow dump/reload of views that participate in circular
+ * dependencies.)
*/
if (event_relation->rd_rel->relkind != RELKIND_VIEW &&
event_relation->rd_rel->relkind != RELKIND_MATVIEW)
@@ -433,6 +435,9 @@ DefineQueryRewrite(const char *rulename,
errmsg("cannot convert partitioned table \"%s\" to a view",
RelationGetRelationName(event_relation))));
+ /* only case left: */
+ Assert(event_relation->rd_rel->relkind == RELKIND_RELATION);
+
if (event_relation->rd_rel->relispartition)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
@@ -470,6 +475,12 @@ DefineQueryRewrite(const char *rulename,
errmsg("could not convert table \"%s\" to a view because it has child tables",
RelationGetRelationName(event_relation))));
+ if (has_superclass(RelationGetRelid(event_relation)))
+ ereport(ERROR,
+ (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("could not convert table \"%s\" to a view because it has parent tables",
+ RelationGetRelationName(event_relation))));
+
if (event_relation->rd_rel->relrowsecurity)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
diff --git a/src/backend/snowball/Makefile b/src/backend/snowball/Makefile
index ad8482cdd1a71..50b9199910c5b 100644
--- a/src/backend/snowball/Makefile
+++ b/src/backend/snowball/Makefile
@@ -43,6 +43,7 @@ OBJS += \
stem_ISO_8859_2_romanian.o \
stem_KOI8_R_russian.o \
stem_UTF_8_arabic.o \
+ stem_UTF_8_armenian.o \
stem_UTF_8_basque.o \
stem_UTF_8_catalan.o \
stem_UTF_8_danish.o \
@@ -64,10 +65,12 @@ OBJS += \
stem_UTF_8_portuguese.o \
stem_UTF_8_romanian.o \
stem_UTF_8_russian.o \
+ stem_UTF_8_serbian.o \
stem_UTF_8_spanish.o \
stem_UTF_8_swedish.o \
stem_UTF_8_tamil.o \
- stem_UTF_8_turkish.o
+ stem_UTF_8_turkish.o \
+ stem_UTF_8_yiddish.o
# first column is language name and also name of dictionary for not-all-ASCII
# words, second is name of dictionary for all-ASCII words
@@ -75,6 +78,7 @@ OBJS += \
# must come after creation of that language
LANGUAGES= \
arabic arabic \
+ armenian armenian \
basque basque \
catalan catalan \
danish danish \
@@ -95,10 +99,12 @@ LANGUAGES= \
portuguese portuguese \
romanian romanian \
russian english \
+ serbian serbian \
spanish spanish \
swedish swedish \
tamil tamil \
- turkish turkish
+ turkish turkish \
+ yiddish yiddish
SQLSCRIPT= snowball_create.sql
diff --git a/src/backend/snowball/README b/src/backend/snowball/README
index 6948c28b69f38..d83321bad439a 100644
--- a/src/backend/snowball/README
+++ b/src/backend/snowball/README
@@ -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
-c70ed64f9d41c1032fba4e962b054f8e9d489a74 (tag v2.0.0)
-of 2019-10-02.
+4764395431c8f2a0b4fe18b816ab1fc966a45837 (tag v2.1.0)
+of 2021-01-21.
To update the PostgreSQL sources from a new Snowball version:
@@ -59,7 +59,8 @@ do not require any changes.
4. Check whether any stemmer modules have been added or removed. If so, edit
the OBJS list in Makefile, the list of #include's in dict_snowball.c, and the
-stemmer_modules[] table in dict_snowball.c. You might also need to change
+stemmer_modules[] table in dict_snowball.c, as well as the list in the
+documentation in textsearch.sgml. You might also need to change
the LANGUAGES list in Makefile and tsearch_config_languages in initdb.c.
5. The various stopword files in stopwords/ must be downloaded
diff --git a/src/backend/snowball/dict_snowball.c b/src/backend/snowball/dict_snowball.c
index 044e20cef85c3..8c25f3ebbf2f3 100644
--- a/src/backend/snowball/dict_snowball.c
+++ b/src/backend/snowball/dict_snowball.c
@@ -46,6 +46,7 @@
#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_armenian.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"
@@ -67,10 +68,12 @@
#include "snowball/libstemmer/stem_UTF_8_portuguese.h"
#include "snowball/libstemmer/stem_UTF_8_romanian.h"
#include "snowball/libstemmer/stem_UTF_8_russian.h"
+#include "snowball/libstemmer/stem_UTF_8_serbian.h"
#include "snowball/libstemmer/stem_UTF_8_spanish.h"
#include "snowball/libstemmer/stem_UTF_8_swedish.h"
#include "snowball/libstemmer/stem_UTF_8_tamil.h"
#include "snowball/libstemmer/stem_UTF_8_turkish.h"
+#include "snowball/libstemmer/stem_UTF_8_yiddish.h"
PG_MODULE_MAGIC;
@@ -117,6 +120,7 @@ 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(armenian, 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),
@@ -138,10 +142,12 @@ static const stemmer_module stemmer_modules[] =
STEMMER_MODULE(portuguese, PG_UTF8, UTF_8),
STEMMER_MODULE(romanian, PG_UTF8, UTF_8),
STEMMER_MODULE(russian, PG_UTF8, UTF_8),
+ STEMMER_MODULE(serbian, PG_UTF8, UTF_8),
STEMMER_MODULE(spanish, PG_UTF8, UTF_8),
STEMMER_MODULE(swedish, PG_UTF8, UTF_8),
STEMMER_MODULE(tamil, PG_UTF8, UTF_8),
STEMMER_MODULE(turkish, PG_UTF8, UTF_8),
+ STEMMER_MODULE(yiddish, PG_UTF8, UTF_8),
/*
* Stemmer with PG_SQL_ASCII encoding should be valid for any server
diff --git a/src/backend/snowball/libstemmer/api.c b/src/backend/snowball/libstemmer/api.c
index 8dd32df3d4298..375938e6d13fd 100644
--- a/src/backend/snowball/libstemmer/api.c
+++ b/src/backend/snowball/libstemmer/api.c
@@ -1,6 +1,6 @@
#include "header.h"
-extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size)
+extern struct SN_env * SN_create_env(int S_size, int I_size)
{
struct SN_env * z = (struct SN_env *) calloc(1, sizeof(struct SN_env));
if (z == NULL) return NULL;
@@ -25,12 +25,6 @@ extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size)
if (z->I == NULL) goto error;
}
- if (B_size)
- {
- z->B = (unsigned char *) calloc(B_size, sizeof(unsigned char));
- if (z->B == NULL) goto error;
- }
-
return z;
error:
SN_close_env(z, S_size);
@@ -50,7 +44,6 @@ extern void SN_close_env(struct SN_env * z, int S_size)
free(z->S);
}
free(z->I);
- free(z->B);
if (z->p) lose_s(z->p);
free(z);
}
diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c
index 7f080d8e84cef..994ac234bb232 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -140,115 +140,115 @@ 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}
+{ 4, s_0_0, -1, 1, 0},
+{ 5, s_0_1, 0, 1, 0},
+{ 5, s_0_2, 0, 1, 0},
+{ 5, s_0_3, 0, 1, 0},
+{ 6, s_0_4, -1, 1, 0},
+{ 5, s_0_5, -1, 1, 0},
+{ 6, s_0_6, -1, 1, 0},
+{ 7, s_0_7, -1, 1, 0},
+{ 5, s_0_8, -1, 1, 0},
+{ 5, s_0_9, -1, 1, 0},
+{ 5, s_0_10, -1, 1, 0},
+{ 4, s_0_11, -1, 1, 0},
+{ 5, s_0_12, -1, 1, 0},
+{ 6, s_0_13, 12, 1, 0},
+{ 5, s_0_14, -1, 1, 0},
+{ 6, s_0_15, -1, 2, 0},
+{ 6, s_0_16, -1, 1, 0},
+{ 2, s_0_17, -1, 1, 0},
+{ 5, s_0_18, 17, 1, 0},
+{ 2, s_0_19, -1, 1, 0},
+{ 4, s_0_20, -1, 1, 0},
+{ 4, s_0_21, -1, 1, 0},
+{ 4, s_0_22, -1, 1, 0},
+{ 5, s_0_23, -1, 1, 0},
+{ 6, s_0_24, 23, 1, 0},
+{ 4, s_0_25, -1, 1, 0},
+{ 4, s_0_26, -1, 1, 0},
+{ 6, s_0_27, -1, 1, 0},
+{ 3, s_0_28, -1, 1, 0},
+{ 4, s_0_29, 28, 1, 0},
+{ 7, s_0_30, 29, 4, 0},
+{ 4, s_0_31, 28, 1, 0},
+{ 4, s_0_32, 28, 1, 0},
+{ 4, s_0_33, -1, 1, 0},
+{ 5, s_0_34, 33, 1, 0},
+{ 4, s_0_35, -1, 1, 0},
+{ 4, s_0_36, -1, 1, 0},
+{ 4, s_0_37, -1, 1, 0},
+{ 4, s_0_38, -1, 1, 0},
+{ 3, s_0_39, -1, 1, 0},
+{ 4, s_0_40, 39, 1, 0},
+{ 6, s_0_41, -1, 1, 0},
+{ 3, s_0_42, -1, 1, 0},
+{ 6, s_0_43, 42, 1, 0},
+{ 3, s_0_44, -1, 2, 0},
+{ 6, s_0_45, 44, 1, 0},
+{ 6, s_0_46, 44, 1, 0},
+{ 6, s_0_47, 44, 1, 0},
+{ 3, s_0_48, -1, 1, 0},
+{ 4, s_0_49, 48, 1, 0},
+{ 4, s_0_50, 48, 1, 0},
+{ 4, s_0_51, 48, 1, 0},
+{ 5, s_0_52, -1, 1, 0},
+{ 5, s_0_53, -1, 1, 0},
+{ 5, s_0_54, -1, 1, 0},
+{ 2, s_0_55, -1, 1, 0},
+{ 4, s_0_56, 55, 1, 0},
+{ 5, s_0_57, 55, 1, 0},
+{ 6, s_0_58, 55, 1, 0},
+{ 4, s_0_59, -1, 1, 0},
+{ 4, s_0_60, -1, 1, 0},
+{ 3, s_0_61, -1, 1, 0},
+{ 4, s_0_62, 61, 1, 0},
+{ 3, s_0_63, -1, 1, 0},
+{ 4, s_0_64, -1, 1, 0},
+{ 5, s_0_65, 64, 1, 0},
+{ 2, s_0_66, -1, 1, 0},
+{ 3, s_0_67, -1, 1, 0},
+{ 4, s_0_68, 67, 1, 0},
+{ 4, s_0_69, 67, 1, 0},
+{ 4, s_0_70, 67, 1, 0},
+{ 5, s_0_71, 70, 1, 0},
+{ 5, s_0_72, -1, 2, 0},
+{ 5, s_0_73, -1, 1, 0},
+{ 5, s_0_74, -1, 1, 0},
+{ 6, s_0_75, 74, 1, 0},
+{ 2, s_0_76, -1, 1, 0},
+{ 3, s_0_77, 76, 1, 0},
+{ 4, s_0_78, 77, 1, 0},
+{ 3, s_0_79, 76, 1, 0},
+{ 4, s_0_80, 76, 1, 0},
+{ 7, s_0_81, -1, 3, 0},
+{ 3, s_0_82, -1, 1, 0},
+{ 3, s_0_83, -1, 1, 0},
+{ 3, s_0_84, -1, 1, 0},
+{ 5, s_0_85, 84, 1, 0},
+{ 4, s_0_86, -1, 1, 0},
+{ 5, s_0_87, 86, 1, 0},
+{ 3, s_0_88, -1, 1, 0},
+{ 5, s_0_89, -1, 1, 0},
+{ 2, s_0_90, -1, 1, 0},
+{ 3, s_0_91, 90, 1, 0},
+{ 3, s_0_92, -1, 1, 0},
+{ 4, s_0_93, -1, 1, 0},
+{ 2, s_0_94, -1, 1, 0},
+{ 3, s_0_95, 94, 1, 0},
+{ 4, s_0_96, -1, 1, 0},
+{ 2, s_0_97, -1, 1, 0},
+{ 5, s_0_98, -1, 1, 0},
+{ 2, s_0_99, -1, 1, 0},
+{ 3, s_0_100, 99, 1, 0},
+{ 6, s_0_101, 100, 1, 0},
+{ 4, s_0_102, 100, 1, 0},
+{ 6, s_0_103, 99, 5, 0},
+{ 2, s_0_104, -1, 1, 0},
+{ 5, s_0_105, 104, 1, 0},
+{ 4, s_0_106, 104, 1, 0},
+{ 5, s_0_107, -1, 1, 0},
+{ 5, s_0_108, -1, 1, 0}
};
static const symbol s_1_0[3] = { 'a', 'd', 'a' };
@@ -549,301 +549,301 @@ 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}
+{ 3, s_1_0, -1, 1, 0},
+{ 4, s_1_1, 0, 1, 0},
+{ 4, s_1_2, -1, 1, 0},
+{ 5, s_1_3, -1, 1, 0},
+{ 5, s_1_4, -1, 1, 0},
+{ 5, s_1_5, -1, 1, 0},
+{ 5, s_1_6, -1, 1, 0},
+{ 6, s_1_7, 6, 1, 0},
+{ 6, s_1_8, 6, 1, 0},
+{ 5, s_1_9, -1, 1, 0},
+{ 5, s_1_10, -1, 1, 0},
+{ 6, s_1_11, 10, 1, 0},
+{ 5, s_1_12, -1, 1, 0},
+{ 4, s_1_13, -1, 1, 0},
+{ 5, s_1_14, -1, 1, 0},
+{ 3, s_1_15, -1, 1, 0},
+{ 4, s_1_16, 15, 1, 0},
+{ 6, s_1_17, 15, 1, 0},
+{ 4, s_1_18, 15, 1, 0},
+{ 5, s_1_19, 18, 1, 0},
+{ 3, s_1_20, -1, 1, 0},
+{ 6, s_1_21, -1, 1, 0},
+{ 3, s_1_22, -1, 1, 0},
+{ 5, s_1_23, 22, 1, 0},
+{ 5, s_1_24, 22, 1, 0},
+{ 5, s_1_25, 22, 1, 0},
+{ 5, s_1_26, -1, 1, 0},
+{ 2, s_1_27, -1, 1, 0},
+{ 4, s_1_28, 27, 1, 0},
+{ 4, s_1_29, -1, 1, 0},
+{ 5, s_1_30, -1, 1, 0},
+{ 6, s_1_31, 30, 1, 0},
+{ 6, s_1_32, -1, 1, 0},
+{ 6, s_1_33, -1, 1, 0},
+{ 4, s_1_34, -1, 1, 0},
+{ 4, s_1_35, -1, 1, 0},
+{ 5, s_1_36, 35, 1, 0},
+{ 5, s_1_37, 35, 1, 0},
+{ 5, s_1_38, -1, 1, 0},
+{ 4, s_1_39, -1, 1, 0},
+{ 3, s_1_40, -1, 1, 0},
+{ 5, s_1_41, 40, 1, 0},
+{ 3, s_1_42, -1, 1, 0},
+{ 4, s_1_43, 42, 1, 0},
+{ 4, s_1_44, -1, 1, 0},
+{ 5, s_1_45, 44, 1, 0},
+{ 5, s_1_46, 44, 1, 0},
+{ 5, s_1_47, 44, 1, 0},
+{ 4, s_1_48, -1, 1, 0},
+{ 5, s_1_49, 48, 1, 0},
+{ 5, s_1_50, 48, 1, 0},
+{ 6, s_1_51, -1, 2, 0},
+{ 6, s_1_52, -1, 1, 0},
+{ 6, s_1_53, -1, 1, 0},
+{ 5, s_1_54, -1, 1, 0},
+{ 4, s_1_55, -1, 1, 0},
+{ 3, s_1_56, -1, 1, 0},
+{ 4, s_1_57, -1, 1, 0},
+{ 5, s_1_58, -1, 1, 0},
+{ 6, s_1_59, -1, 1, 0},
+{ 2, s_1_60, -1, 1, 0},
+{ 4, s_1_61, 60, 3, 0},
+{ 5, s_1_62, 60, 10, 0},
+{ 3, s_1_63, 60, 1, 0},
+{ 3, s_1_64, 60, 1, 0},
+{ 3, s_1_65, 60, 1, 0},
+{ 6, s_1_66, -1, 1, 0},
+{ 4, s_1_67, -1, 1, 0},
+{ 5, s_1_68, -1, 1, 0},
+{ 5, s_1_69, -1, 1, 0},
+{ 4, s_1_70, -1, 1, 0},
+{ 3, s_1_71, -1, 1, 0},
+{ 2, s_1_72, -1, 1, 0},
+{ 4, s_1_73, 72, 1, 0},
+{ 3, s_1_74, 72, 1, 0},
+{ 7, s_1_75, 74, 1, 0},
+{ 7, s_1_76, 74, 1, 0},
+{ 6, s_1_77, 74, 1, 0},
+{ 5, s_1_78, 72, 1, 0},
+{ 6, s_1_79, 78, 1, 0},
+{ 4, s_1_80, 72, 1, 0},
+{ 4, s_1_81, 72, 1, 0},
+{ 5, s_1_82, 72, 1, 0},
+{ 3, s_1_83, 72, 1, 0},
+{ 4, s_1_84, 83, 1, 0},
+{ 5, s_1_85, 83, 1, 0},
+{ 6, s_1_86, 85, 1, 0},
+{ 5, s_1_87, -1, 1, 0},
+{ 6, s_1_88, 87, 1, 0},
+{ 4, s_1_89, -1, 1, 0},
+{ 4, s_1_90, -1, 1, 0},
+{ 3, s_1_91, -1, 1, 0},
+{ 5, s_1_92, 91, 1, 0},
+{ 4, s_1_93, 91, 1, 0},
+{ 3, s_1_94, -1, 1, 0},
+{ 5, s_1_95, 94, 1, 0},
+{ 4, s_1_96, -1, 1, 0},
+{ 5, s_1_97, 96, 1, 0},
+{ 5, s_1_98, 96, 1, 0},
+{ 4, s_1_99, -1, 1, 0},
+{ 4, s_1_100, -1, 1, 0},
+{ 4, s_1_101, -1, 1, 0},
+{ 3, s_1_102, -1, 1, 0},
+{ 4, s_1_103, 102, 1, 0},
+{ 4, s_1_104, 102, 1, 0},
+{ 4, s_1_105, -1, 1, 0},
+{ 4, s_1_106, -1, 1, 0},
+{ 3, s_1_107, -1, 1, 0},
+{ 2, s_1_108, -1, 1, 0},
+{ 3, s_1_109, 108, 1, 0},
+{ 4, s_1_110, 109, 1, 0},
+{ 5, s_1_111, 109, 1, 0},
+{ 5, s_1_112, 109, 1, 0},
+{ 4, s_1_113, 109, 1, 0},
+{ 5, s_1_114, 113, 1, 0},
+{ 5, s_1_115, 109, 1, 0},
+{ 4, s_1_116, 108, 1, 0},
+{ 4, s_1_117, 108, 1, 0},
+{ 4, s_1_118, 108, 1, 0},
+{ 3, s_1_119, 108, 2, 0},
+{ 6, s_1_120, 108, 1, 0},
+{ 5, s_1_121, 108, 1, 0},
+{ 3, s_1_122, 108, 1, 0},
+{ 2, s_1_123, -1, 1, 0},
+{ 3, s_1_124, 123, 1, 0},
+{ 2, s_1_125, -1, 1, 0},
+{ 3, s_1_126, 125, 1, 0},
+{ 4, s_1_127, 126, 1, 0},
+{ 3, s_1_128, 125, 1, 0},
+{ 3, s_1_129, -1, 1, 0},
+{ 6, s_1_130, 129, 1, 0},
+{ 5, s_1_131, 129, 1, 0},
+{ 5, s_1_132, -1, 1, 0},
+{ 5, s_1_133, -1, 1, 0},
+{ 5, s_1_134, -1, 1, 0},
+{ 4, s_1_135, -1, 1, 0},
+{ 3, s_1_136, -1, 1, 0},
+{ 6, s_1_137, 136, 1, 0},
+{ 5, s_1_138, 136, 1, 0},
+{ 4, s_1_139, -1, 1, 0},
+{ 3, s_1_140, -1, 1, 0},
+{ 4, s_1_141, 140, 1, 0},
+{ 2, s_1_142, -1, 1, 0},
+{ 3, s_1_143, 142, 1, 0},
+{ 5, s_1_144, 142, 1, 0},
+{ 3, s_1_145, 142, 2, 0},
+{ 6, s_1_146, 145, 1, 0},
+{ 5, s_1_147, 145, 1, 0},
+{ 6, s_1_148, 145, 1, 0},
+{ 6, s_1_149, 145, 1, 0},
+{ 6, s_1_150, 145, 1, 0},
+{ 4, s_1_151, -1, 1, 0},
+{ 4, s_1_152, -1, 1, 0},
+{ 4, s_1_153, -1, 1, 0},
+{ 4, s_1_154, -1, 1, 0},
+{ 5, s_1_155, 154, 1, 0},
+{ 5, s_1_156, 154, 1, 0},
+{ 4, s_1_157, -1, 1, 0},
+{ 2, s_1_158, -1, 1, 0},
+{ 4, s_1_159, -1, 1, 0},
+{ 5, s_1_160, 159, 1, 0},
+{ 4, s_1_161, -1, 1, 0},
+{ 3, s_1_162, -1, 1, 0},
+{ 4, s_1_163, -1, 1, 0},
+{ 2, s_1_164, -1, 1, 0},
+{ 5, s_1_165, 164, 1, 0},
+{ 3, s_1_166, 164, 1, 0},
+{ 4, s_1_167, 166, 1, 0},
+{ 2, s_1_168, -1, 1, 0},
+{ 5, s_1_169, -1, 1, 0},
+{ 2, s_1_170, -1, 1, 0},
+{ 4, s_1_171, 170, 1, 0},
+{ 4, s_1_172, 170, 1, 0},
+{ 4, s_1_173, 170, 1, 0},
+{ 4, s_1_174, -1, 1, 0},
+{ 3, s_1_175, -1, 1, 0},
+{ 2, s_1_176, -1, 1, 0},
+{ 4, s_1_177, 176, 1, 0},
+{ 5, s_1_178, 177, 1, 0},
+{ 5, s_1_179, 176, 8, 0},
+{ 5, s_1_180, 176, 1, 0},
+{ 5, s_1_181, 176, 1, 0},
+{ 3, s_1_182, -1, 1, 0},
+{ 3, s_1_183, -1, 1, 0},
+{ 4, s_1_184, 183, 1, 0},
+{ 4, s_1_185, 183, 1, 0},
+{ 4, s_1_186, -1, 1, 0},
+{ 3, s_1_187, -1, 1, 0},
+{ 2, s_1_188, -1, 1, 0},
+{ 4, s_1_189, 188, 1, 0},
+{ 2, s_1_190, -1, 1, 0},
+{ 3, s_1_191, 190, 1, 0},
+{ 3, s_1_192, 190, 1, 0},
+{ 3, s_1_193, -1, 1, 0},
+{ 4, s_1_194, 193, 1, 0},
+{ 4, s_1_195, 193, 1, 0},
+{ 4, s_1_196, 193, 1, 0},
+{ 5, s_1_197, -1, 2, 0},
+{ 5, s_1_198, -1, 1, 0},
+{ 5, s_1_199, -1, 1, 0},
+{ 4, s_1_200, -1, 1, 0},
+{ 3, s_1_201, -1, 1, 0},
+{ 2, s_1_202, -1, 1, 0},
+{ 5, s_1_203, -1, 1, 0},
+{ 2, s_1_204, -1, 1, 0},
+{ 2, s_1_205, -1, 1, 0},
+{ 2, s_1_206, -1, 1, 0},
+{ 5, s_1_207, -1, 1, 0},
+{ 5, s_1_208, -1, 1, 0},
+{ 3, s_1_209, -1, 1, 0},
+{ 4, s_1_210, 209, 1, 0},
+{ 3, s_1_211, -1, 1, 0},
+{ 3, s_1_212, -1, 1, 0},
+{ 4, s_1_213, 212, 1, 0},
+{ 2, s_1_214, -1, 4, 0},
+{ 3, s_1_215, 214, 2, 0},
+{ 6, s_1_216, 215, 1, 0},
+{ 6, s_1_217, 215, 1, 0},
+{ 5, s_1_218, 215, 1, 0},
+{ 3, s_1_219, 214, 4, 0},
+{ 4, s_1_220, 214, 4, 0},
+{ 4, s_1_221, -1, 1, 0},
+{ 5, s_1_222, 221, 1, 0},
+{ 3, s_1_223, -1, 1, 0},
+{ 3, s_1_224, -1, 1, 0},
+{ 3, s_1_225, -1, 1, 0},
+{ 4, s_1_226, -1, 1, 0},
+{ 5, s_1_227, 226, 1, 0},
+{ 5, s_1_228, -1, 1, 0},
+{ 4, s_1_229, -1, 1, 0},
+{ 5, s_1_230, 229, 1, 0},
+{ 2, s_1_231, -1, 1, 0},
+{ 3, s_1_232, 231, 1, 0},
+{ 3, s_1_233, -1, 1, 0},
+{ 2, s_1_234, -1, 1, 0},
+{ 5, s_1_235, 234, 5, 0},
+{ 4, s_1_236, 234, 1, 0},
+{ 5, s_1_237, 236, 1, 0},
+{ 3, s_1_238, 234, 1, 0},
+{ 6, s_1_239, 234, 1, 0},
+{ 3, s_1_240, 234, 1, 0},
+{ 4, s_1_241, 234, 1, 0},
+{ 8, s_1_242, 241, 6, 0},
+{ 3, s_1_243, 234, 1, 0},
+{ 2, s_1_244, -1, 1, 0},
+{ 4, s_1_245, 244, 1, 0},
+{ 2, s_1_246, -1, 1, 0},
+{ 3, s_1_247, 246, 1, 0},
+{ 5, s_1_248, 247, 9, 0},
+{ 4, s_1_249, 247, 1, 0},
+{ 4, s_1_250, 247, 1, 0},
+{ 3, s_1_251, 246, 1, 0},
+{ 4, s_1_252, 246, 1, 0},
+{ 3, s_1_253, 246, 1, 0},
+{ 3, s_1_254, -1, 1, 0},
+{ 2, s_1_255, -1, 1, 0},
+{ 3, s_1_256, 255, 1, 0},
+{ 3, s_1_257, 255, 1, 0},
+{ 3, s_1_258, -1, 1, 0},
+{ 3, s_1_259, -1, 1, 0},
+{ 6, s_1_260, 259, 1, 0},
+{ 2, s_1_261, -1, 1, 0},
+{ 2, s_1_262, -1, 1, 0},
+{ 2, s_1_263, -1, 1, 0},
+{ 3, s_1_264, 263, 1, 0},
+{ 5, s_1_265, 263, 1, 0},
+{ 5, s_1_266, 263, 7, 0},
+{ 4, s_1_267, 263, 1, 0},
+{ 4, s_1_268, 263, 1, 0},
+{ 3, s_1_269, 263, 1, 0},
+{ 4, s_1_270, 263, 1, 0},
+{ 2, s_1_271, -1, 2, 0},
+{ 3, s_1_272, 271, 1, 0},
+{ 2, s_1_273, -1, 1, 0},
+{ 3, s_1_274, -1, 1, 0},
+{ 2, s_1_275, -1, 1, 0},
+{ 5, s_1_276, 275, 1, 0},
+{ 4, s_1_277, 275, 1, 0},
+{ 4, s_1_278, -1, 1, 0},
+{ 4, s_1_279, -1, 2, 0},
+{ 4, s_1_280, -1, 1, 0},
+{ 3, s_1_281, -1, 1, 0},
+{ 2, s_1_282, -1, 1, 0},
+{ 4, s_1_283, 282, 4, 0},
+{ 5, s_1_284, 282, 1, 0},
+{ 4, s_1_285, 282, 1, 0},
+{ 3, s_1_286, -1, 1, 0},
+{ 2, s_1_287, -1, 1, 0},
+{ 3, s_1_288, 287, 1, 0},
+{ 6, s_1_289, 288, 1, 0},
+{ 1, s_1_290, -1, 1, 0},
+{ 2, s_1_291, 290, 1, 0},
+{ 4, s_1_292, 290, 1, 0},
+{ 2, s_1_293, 290, 1, 0},
+{ 5, s_1_294, 293, 1, 0}
};
static const symbol s_2_0[4] = { 'z', 'l', 'e', 'a' };
@@ -868,25 +868,25 @@ 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}
+{ 4, s_2_0, -1, 2, 0},
+{ 5, s_2_1, -1, 1, 0},
+{ 2, s_2_2, -1, 1, 0},
+{ 3, s_2_3, -1, 1, 0},
+{ 4, s_2_4, -1, 1, 0},
+{ 4, s_2_5, -1, 1, 0},
+{ 4, s_2_6, -1, 1, 0},
+{ 4, s_2_7, -1, 1, 0},
+{ 2, s_2_8, -1, 1, 0},
+{ 2, s_2_9, -1, 1, 0},
+{ 2, s_2_10, -1, 1, 0},
+{ 5, s_2_11, 10, 1, 0},
+{ 3, s_2_12, 10, 1, 0},
+{ 5, s_2_13, 12, 1, 0},
+{ 4, s_2_14, 10, 1, 0},
+{ 2, s_2_15, -1, 1, 0},
+{ 2, s_2_16, -1, 1, 0},
+{ 3, s_2_17, 16, 1, 0},
+{ 2, s_2_18, -1, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16 };
@@ -903,16 +903,16 @@ 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 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping(z, g_v, 97, 117, 0)) goto lab2;
+ { int c3 = z->c;
+ if (out_grouping(z, g_v, 97, 117, 0)) goto lab4;
+ {
int ret = out_grouping(z, g_v, 97, 117, 1);
if (ret < 0) goto lab4;
z->c += ret;
@@ -920,8 +920,8 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
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 */
+ if (in_grouping(z, g_v, 97, 117, 0)) goto lab2;
+ {
int ret = in_grouping(z, g_v, 97, 117, 1);
if (ret < 0) goto lab2;
z->c += ret;
@@ -931,10 +931,10 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
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 */
+ if (out_grouping(z, g_v, 97, 117, 0)) goto lab0;
+ { int c4 = z->c;
+ if (out_grouping(z, g_v, 97, 117, 0)) goto lab6;
+ {
int ret = out_grouping(z, g_v, 97, 117, 1);
if (ret < 0) goto lab6;
z->c += ret;
@@ -942,98 +942,98 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab5;
lab6:
z->c = c4;
- if (in_grouping(z, g_v, 97, 117, 0)) goto lab0; /* grouping v, line 32 */
+ if (in_grouping(z, g_v, 97, 117, 0)) goto lab0;
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 32 */
+ z->c++;
}
lab5:
;
}
lab1:
- z->I[0] = z->c; /* setmark pV, line 33 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c5 = z->c; /* do, line 35 */
- { /* gopast */ /* grouping v, line 36 */
+ { int c5 = z->c;
+ {
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 */
+ z->I[1] = z->c;
+ {
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 */
+ z->I[0] = z->c;
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 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 44 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 45 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_aditzak(struct SN_env * z) { /* backwardmode */
+static int r_aditzak(struct SN_env * z) {
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 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((70566434 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
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 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_RV(z); /* call RV, line 59 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 59 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 61 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 61 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 7, s_0); /* <-, line 63 */
+ { int ret = slice_from_s(z, 7, s_0);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 7, s_1); /* <-, line 65 */
+ { int ret = slice_from_s(z, 7, s_1);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 6, s_2); /* <-, line 67 */
+ { int ret = slice_from_s(z, 6, s_2);
if (ret < 0) return ret;
}
break;
@@ -1041,70 +1041,70 @@ static int r_aditzak(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_izenak(struct SN_env * z) { /* backwardmode */
+static int r_izenak(struct SN_env * z) {
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 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((71162402 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
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 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_RV(z); /* call RV, line 103 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 103 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 105 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 105 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 3, s_3); /* <-, line 107 */
+ { int ret = slice_from_s(z, 3, s_3);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_R1(z); /* call R1, line 109 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 109 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 3, s_4); /* <-, line 111 */
+ { int ret = slice_from_s(z, 3, s_4);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 6, s_5); /* <-, line 113 */
+ { int ret = slice_from_s(z, 6, s_5);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = slice_from_s(z, 5, s_6); /* <-, line 115 */
+ { int ret = slice_from_s(z, 5, s_6);
if (ret < 0) return ret;
}
break;
case 8:
- { int ret = slice_from_s(z, 5, s_7); /* <-, line 117 */
+ { int ret = slice_from_s(z, 5, s_7);
if (ret < 0) return ret;
}
break;
case 9:
- { int ret = slice_from_s(z, 5, s_8); /* <-, line 119 */
+ { int ret = slice_from_s(z, 5, s_8);
if (ret < 0) return ret;
}
break;
case 10:
- { int ret = slice_from_s(z, 5, s_9); /* <-, line 121 */
+ { int ret = slice_from_s(z, 5, s_9);
if (ret < 0) return ret;
}
break;
@@ -1112,24 +1112,24 @@ static int r_izenak(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_adjetiboak(struct SN_env * z) { /* backwardmode */
+static int r_adjetiboak(struct SN_env * z) {
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 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((35362 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
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 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_RV(z); /* call RV, line 129 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 129 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_10); /* <-, line 131 */
+ { int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
break;
@@ -1137,17 +1137,16 @@ static int r_adjetiboak(struct SN_env * z) { /* backwardmode */
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 */
+extern int basque_ISO_8859_1_stem(struct SN_env * z) {
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 139 */
+ z->lb = z->c; z->c = z->l;
-/* repeat, line 140 */
-
- while(1) { int m1 = z->l - z->c; (void)m1;
- { int ret = r_aditzak(z); /* call aditzak, line 140 */
+ while(1) {
+ int m1 = z->l - z->c; (void)m1;
+ { int ret = r_aditzak(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -1156,10 +1155,9 @@ extern int basque_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ while(1) {
+ int m2 = z->l - z->c; (void)m2;
+ { int ret = r_izenak(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
@@ -1168,8 +1166,8 @@ extern int basque_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_adjetiboak(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
@@ -1178,7 +1176,7 @@ extern int basque_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * basque_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); }
+extern struct SN_env * basque_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
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
index 87c0cada3df90..283d2c6482118 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_catalan.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_catalan.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -44,19 +44,19 @@ 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}
+{ 0, 0, -1, 7, 0},
+{ 1, s_0_1, 0, 6, 0},
+{ 1, s_0_2, 0, 1, 0},
+{ 1, s_0_3, 0, 1, 0},
+{ 1, s_0_4, 0, 2, 0},
+{ 1, s_0_5, 0, 2, 0},
+{ 1, s_0_6, 0, 3, 0},
+{ 1, s_0_7, 0, 3, 0},
+{ 1, s_0_8, 0, 3, 0},
+{ 1, s_0_9, 0, 4, 0},
+{ 1, s_0_10, 0, 4, 0},
+{ 1, s_0_11, 0, 5, 0},
+{ 1, s_0_12, 0, 5, 0}
};
static const symbol s_1_0[2] = { 'l', 'a' };
@@ -101,45 +101,45 @@ 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}
+{ 2, s_1_0, -1, 1, 0},
+{ 3, s_1_1, 0, 1, 0},
+{ 4, s_1_2, 0, 1, 0},
+{ 2, s_1_3, -1, 1, 0},
+{ 2, s_1_4, -1, 1, 0},
+{ 3, s_1_5, 4, 1, 0},
+{ 2, s_1_6, -1, 1, 0},
+{ 3, s_1_7, -1, 1, 0},
+{ 2, s_1_8, -1, 1, 0},
+{ 3, s_1_9, 8, 1, 0},
+{ 2, s_1_10, -1, 1, 0},
+{ 3, s_1_11, 10, 1, 0},
+{ 2, s_1_12, -1, 1, 0},
+{ 2, s_1_13, -1, 1, 0},
+{ 2, s_1_14, -1, 1, 0},
+{ 2, s_1_15, -1, 1, 0},
+{ 2, s_1_16, -1, 1, 0},
+{ 2, s_1_17, -1, 1, 0},
+{ 3, s_1_18, 17, 1, 0},
+{ 2, s_1_19, -1, 1, 0},
+{ 4, s_1_20, 19, 1, 0},
+{ 2, s_1_21, -1, 1, 0},
+{ 3, s_1_22, -1, 1, 0},
+{ 5, s_1_23, 22, 1, 0},
+{ 3, s_1_24, -1, 1, 0},
+{ 4, s_1_25, 24, 1, 0},
+{ 3, s_1_26, -1, 1, 0},
+{ 3, s_1_27, -1, 1, 0},
+{ 3, s_1_28, -1, 1, 0},
+{ 3, s_1_29, -1, 1, 0},
+{ 3, s_1_30, -1, 1, 0},
+{ 3, s_1_31, -1, 1, 0},
+{ 5, s_1_32, 31, 1, 0},
+{ 3, s_1_33, -1, 1, 0},
+{ 4, s_1_34, 33, 1, 0},
+{ 3, s_1_35, -1, 1, 0},
+{ 2, s_1_36, -1, 1, 0},
+{ 3, s_1_37, 36, 1, 0},
+{ 2, s_1_38, -1, 1, 0}
};
static const symbol s_2_0[3] = { 'i', 'c', 'a' };
@@ -345,206 +345,206 @@ 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}
+{ 3, s_2_0, -1, 4, 0},
+{ 6, s_2_1, 0, 3, 0},
+{ 4, s_2_2, -1, 1, 0},
+{ 3, s_2_3, -1, 2, 0},
+{ 5, s_2_4, -1, 1, 0},
+{ 5, s_2_5, -1, 1, 0},
+{ 5, s_2_6, -1, 1, 0},
+{ 4, s_2_7, -1, 1, 0},
+{ 5, s_2_8, -1, 3, 0},
+{ 4, s_2_9, -1, 1, 0},
+{ 5, s_2_10, 9, 1, 0},
+{ 4, s_2_11, -1, 1, 0},
+{ 4, s_2_12, -1, 1, 0},
+{ 6, s_2_13, -1, 1, 0},
+{ 4, s_2_14, -1, 1, 0},
+{ 4, s_2_15, -1, 1, 0},
+{ 5, s_2_16, -1, 1, 0},
+{ 3, s_2_17, -1, 1, 0},
+{ 6, s_2_18, 17, 1, 0},
+{ 8, s_2_19, 18, 5, 0},
+{ 3, s_2_20, -1, 1, 0},
+{ 3, s_2_21, -1, 1, 0},
+{ 3, s_2_22, -1, 1, 0},
+{ 5, s_2_23, 22, 1, 0},
+{ 3, s_2_24, -1, 1, 0},
+{ 4, s_2_25, 24, 1, 0},
+{ 5, s_2_26, 25, 1, 0},
+{ 5, s_2_27, -1, 1, 0},
+{ 3, s_2_28, -1, 1, 0},
+{ 3, s_2_29, -1, 1, 0},
+{ 4, s_2_30, -1, 1, 0},
+{ 4, s_2_31, -1, 1, 0},
+{ 4, s_2_32, -1, 1, 0},
+{ 3, s_2_33, -1, 1, 0},
+{ 3, s_2_34, -1, 1, 0},
+{ 3, s_2_35, -1, 1, 0},
+{ 4, s_2_36, -1, 1, 0},
+{ 7, s_2_37, 36, 1, 0},
+{ 7, s_2_38, 36, 1, 0},
+{ 3, s_2_39, -1, 1, 0},
+{ 5, s_2_40, 39, 1, 0},
+{ 3, s_2_41, -1, 1, 0},
+{ 5, s_2_42, -1, 3, 0},
+{ 2, s_2_43, -1, 4, 0},
+{ 5, s_2_44, 43, 1, 0},
+{ 3, s_2_45, -1, 1, 0},
+{ 3, s_2_46, -1, 1, 0},
+{ 2, s_2_47, -1, 1, 0},
+{ 4, s_2_48, -1, 1, 0},
+{ 3, s_2_49, -1, 1, 0},
+{ 4, s_2_50, 49, 1, 0},
+{ 4, s_2_51, 49, 1, 0},
+{ 4, s_2_52, -1, 1, 0},
+{ 7, s_2_53, 52, 1, 0},
+{ 7, s_2_54, 52, 1, 0},
+{ 6, s_2_55, 52, 1, 0},
+{ 4, s_2_56, -1, 1, 0},
+{ 4, s_2_57, -1, 1, 0},
+{ 4, s_2_58, -1, 1, 0},
+{ 3, s_2_59, -1, 1, 0},
+{ 3, s_2_60, -1, 1, 0},
+{ 4, s_2_61, -1, 3, 0},
+{ 3, s_2_62, -1, 1, 0},
+{ 4, s_2_63, -1, 1, 0},
+{ 2, s_2_64, -1, 1, 0},
+{ 2, s_2_65, -1, 1, 0},
+{ 3, s_2_66, -1, 1, 0},
+{ 3, s_2_67, -1, 1, 0},
+{ 4, s_2_68, -1, 1, 0},
+{ 4, s_2_69, -1, 1, 0},
+{ 5, s_2_70, -1, 1, 0},
+{ 5, s_2_71, -1, 1, 0},
+{ 5, s_2_72, -1, 1, 0},
+{ 5, s_2_73, -1, 1, 0},
+{ 7, s_2_74, 73, 5, 0},
+{ 4, s_2_75, -1, 1, 0},
+{ 5, s_2_76, -1, 1, 0},
+{ 2, s_2_77, -1, 1, 0},
+{ 6, s_2_78, 77, 1, 0},
+{ 4, s_2_79, 77, 1, 0},
+{ 4, s_2_80, 77, 1, 0},
+{ 4, s_2_81, 77, 1, 0},
+{ 5, s_2_82, 77, 1, 0},
+{ 3, s_2_83, -1, 1, 0},
+{ 2, s_2_84, -1, 1, 0},
+{ 3, s_2_85, 84, 1, 0},
+{ 3, s_2_86, -1, 1, 0},
+{ 5, s_2_87, -1, 1, 0},
+{ 3, s_2_88, -1, 4, 0},
+{ 6, s_2_89, 88, 3, 0},
+{ 3, s_2_90, -1, 1, 0},
+{ 4, s_2_91, -1, 1, 0},
+{ 4, s_2_92, -1, 2, 0},
+{ 6, s_2_93, -1, 1, 0},
+{ 6, s_2_94, -1, 1, 0},
+{ 6, s_2_95, -1, 1, 0},
+{ 5, s_2_96, -1, 1, 0},
+{ 6, s_2_97, -1, 3, 0},
+{ 5, s_2_98, -1, 1, 0},
+{ 5, s_2_99, -1, 1, 0},
+{ 5, s_2_100, -1, 1, 0},
+{ 5, s_2_101, -1, 1, 0},
+{ 7, s_2_102, -1, 1, 0},
+{ 4, s_2_103, -1, 1, 0},
+{ 5, s_2_104, 103, 1, 0},
+{ 5, s_2_105, 103, 1, 0},
+{ 4, s_2_106, -1, 1, 0},
+{ 7, s_2_107, 106, 1, 0},
+{ 9, s_2_108, 107, 5, 0},
+{ 6, s_2_109, -1, 1, 0},
+{ 5, s_2_110, -1, 1, 0},
+{ 8, s_2_111, 110, 1, 0},
+{ 4, s_2_112, -1, 1, 0},
+{ 4, s_2_113, -1, 1, 0},
+{ 4, s_2_114, -1, 1, 0},
+{ 5, s_2_115, 114, 1, 0},
+{ 6, s_2_116, 115, 1, 0},
+{ 5, s_2_117, -1, 1, 0},
+{ 4, s_2_118, -1, 1, 0},
+{ 4, s_2_119, -1, 1, 0},
+{ 5, s_2_120, -1, 1, 0},
+{ 5, s_2_121, -1, 1, 0},
+{ 4, s_2_122, -1, 1, 0},
+{ 4, s_2_123, -1, 1, 0},
+{ 5, s_2_124, -1, 1, 0},
+{ 8, s_2_125, 124, 1, 0},
+{ 8, s_2_126, 124, 1, 0},
+{ 5, s_2_127, -1, 4, 0},
+{ 8, s_2_128, 127, 3, 0},
+{ 4, s_2_129, -1, 1, 0},
+{ 6, s_2_130, 129, 1, 0},
+{ 6, s_2_131, -1, 3, 0},
+{ 9, s_2_132, -1, 1, 0},
+{ 4, s_2_133, -1, 1, 0},
+{ 4, s_2_134, -1, 1, 0},
+{ 5, s_2_135, -1, 3, 0},
+{ 4, s_2_136, -1, 1, 0},
+{ 5, s_2_137, -1, 1, 0},
+{ 2, s_2_138, -1, 1, 0},
+{ 3, s_2_139, 138, 1, 0},
+{ 4, s_2_140, 138, 1, 0},
+{ 3, s_2_141, -1, 1, 0},
+{ 6, s_2_142, 141, 1, 0},
+{ 8, s_2_143, 142, 5, 0},
+{ 4, s_2_144, -1, 1, 0},
+{ 5, s_2_145, 144, 1, 0},
+{ 6, s_2_146, 145, 2, 0},
+{ 4, s_2_147, -1, 1, 0},
+{ 4, s_2_148, -1, 1, 0},
+{ 5, s_2_149, -1, 1, 0},
+{ 5, s_2_150, -1, 1, 0},
+{ 3, s_2_151, -1, 1, 0},
+{ 3, s_2_152, -1, 1, 0},
+{ 4, s_2_153, 152, 1, 0},
+{ 5, s_2_154, 153, 1, 0},
+{ 5, s_2_155, 153, 1, 0},
+{ 3, s_2_156, -1, 1, 0},
+{ 5, s_2_157, 156, 1, 0},
+{ 8, s_2_158, 157, 1, 0},
+{ 7, s_2_159, 157, 1, 0},
+{ 9, s_2_160, 159, 1, 0},
+{ 5, s_2_161, 156, 1, 0},
+{ 3, s_2_162, -1, 1, 0},
+{ 4, s_2_163, -1, 1, 0},
+{ 4, s_2_164, -1, 1, 0},
+{ 5, s_2_165, 164, 1, 0},
+{ 6, s_2_166, 165, 1, 0},
+{ 3, s_2_167, -1, 1, 0},
+{ 3, s_2_168, -1, 1, 0},
+{ 3, s_2_169, -1, 1, 0},
+{ 5, s_2_170, 169, 1, 0},
+{ 5, s_2_171, 169, 1, 0},
+{ 2, s_2_172, -1, 1, 0},
+{ 2, s_2_173, -1, 1, 0},
+{ 2, s_2_174, -1, 1, 0},
+{ 3, s_2_175, 174, 1, 0},
+{ 2, s_2_176, -1, 1, 0},
+{ 4, s_2_177, -1, 1, 0},
+{ 7, s_2_178, 177, 1, 0},
+{ 6, s_2_179, 177, 1, 0},
+{ 8, s_2_180, 179, 1, 0},
+{ 4, s_2_181, -1, 1, 0},
+{ 2, s_2_182, -1, 1, 0},
+{ 3, s_2_183, -1, 1, 0},
+{ 3, s_2_184, -1, 1, 0},
+{ 4, s_2_185, 184, 1, 0},
+{ 4, s_2_186, 184, 1, 0},
+{ 5, s_2_187, 186, 1, 0},
+{ 7, s_2_188, 187, 1, 0},
+{ 2, s_2_189, -1, 1, 0},
+{ 5, s_2_190, -1, 1, 0},
+{ 5, s_2_191, -1, 1, 0},
+{ 5, s_2_192, -1, 1, 0},
+{ 4, s_2_193, -1, 1, 0},
+{ 5, s_2_194, -1, 1, 0},
+{ 4, s_2_195, -1, 1, 0},
+{ 1, s_2_196, -1, 1, 0},
+{ 2, s_2_197, 196, 1, 0},
+{ 3, s_2_198, 197, 1, 0},
+{ 4, s_2_199, 198, 1, 0}
};
static const symbol s_3_0[3] = { 'a', 'b', 'a' };
@@ -833,289 +833,289 @@ 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}
+{ 3, s_3_0, -1, 1, 0},
+{ 4, s_3_1, -1, 1, 0},
+{ 4, s_3_2, -1, 1, 0},
+{ 4, s_3_3, -1, 1, 0},
+{ 3, s_3_4, -1, 1, 0},
+{ 3, s_3_5, -1, 1, 0},
+{ 3, s_3_6, -1, 1, 0},
+{ 3, s_3_7, -1, 1, 0},
+{ 2, s_3_8, -1, 1, 0},
+{ 4, s_3_9, 8, 1, 0},
+{ 4, s_3_10, 8, 1, 0},
+{ 3, s_3_11, -1, 1, 0},
+{ 4, s_3_12, -1, 1, 0},
+{ 3, s_3_13, -1, 1, 0},
+{ 5, s_3_14, -1, 1, 0},
+{ 3, s_3_15, -1, 1, 0},
+{ 3, s_3_16, -1, 1, 0},
+{ 3, s_3_17, -1, 1, 0},
+{ 4, s_3_18, -1, 1, 0},
+{ 2, s_3_19, -1, 1, 0},
+{ 4, s_3_20, 19, 1, 0},
+{ 4, s_3_21, 19, 1, 0},
+{ 4, s_3_22, 19, 1, 0},
+{ 2, s_3_23, -1, 1, 0},
+{ 3, s_3_24, -1, 1, 0},
+{ 3, s_3_25, -1, 1, 0},
+{ 2, s_3_26, -1, 1, 0},
+{ 2, s_3_27, -1, 1, 0},
+{ 2, s_3_28, -1, 1, 0},
+{ 2, s_3_29, -1, 1, 0},
+{ 2, s_3_30, -1, 1, 0},
+{ 3, s_3_31, 30, 1, 0},
+{ 3, s_3_32, -1, 1, 0},
+{ 4, s_3_33, -1, 1, 0},
+{ 4, s_3_34, -1, 1, 0},
+{ 4, s_3_35, -1, 1, 0},
+{ 2, s_3_36, -1, 1, 0},
+{ 3, s_3_37, -1, 1, 0},
+{ 5, s_3_38, -1, 1, 0},
+{ 4, s_3_39, -1, 1, 0},
+{ 4, s_3_40, -1, 1, 0},
+{ 2, s_3_41, -1, 1, 0},
+{ 2, s_3_42, -1, 1, 0},
+{ 4, s_3_43, 42, 1, 0},
+{ 4, s_3_44, 42, 1, 0},
+{ 4, s_3_45, 42, 1, 0},
+{ 4, s_3_46, 42, 1, 0},
+{ 5, s_3_47, 42, 1, 0},
+{ 5, s_3_48, 42, 1, 0},
+{ 5, s_3_49, 42, 1, 0},
+{ 5, s_3_50, 42, 1, 0},
+{ 4, s_3_51, 42, 1, 0},
+{ 4, s_3_52, 42, 1, 0},
+{ 4, s_3_53, 42, 1, 0},
+{ 5, s_3_54, 42, 1, 0},
+{ 3, s_3_55, 42, 1, 0},
+{ 5, s_3_56, 55, 1, 0},
+{ 5, s_3_57, 55, 1, 0},
+{ 5, s_3_58, -1, 1, 0},
+{ 5, s_3_59, -1, 1, 0},
+{ 5, s_3_60, -1, 1, 0},
+{ 5, s_3_61, -1, 1, 0},
+{ 5, s_3_62, -1, 1, 0},
+{ 5, s_3_63, -1, 1, 0},
+{ 5, s_3_64, -1, 1, 0},
+{ 2, s_3_65, -1, 1, 0},
+{ 2, s_3_66, -1, 1, 0},
+{ 4, s_3_67, 66, 1, 0},
+{ 5, s_3_68, 66, 1, 0},
+{ 4, s_3_69, 66, 1, 0},
+{ 5, s_3_70, 66, 1, 0},
+{ 4, s_3_71, 66, 1, 0},
+{ 3, s_3_72, 66, 1, 0},
+{ 5, s_3_73, 72, 1, 0},
+{ 5, s_3_74, 72, 1, 0},
+{ 5, s_3_75, 72, 1, 0},
+{ 2, s_3_76, -1, 1, 0},
+{ 3, s_3_77, 76, 1, 0},
+{ 5, s_3_78, 77, 1, 0},
+{ 5, s_3_79, 77, 1, 0},
+{ 4, s_3_80, 76, 1, 0},
+{ 4, s_3_81, 76, 1, 0},
+{ 4, s_3_82, 76, 1, 0},
+{ 4, s_3_83, 76, 1, 0},
+{ 4, s_3_84, 76, 1, 0},
+{ 4, s_3_85, 76, 1, 0},
+{ 5, s_3_86, 76, 1, 0},
+{ 5, s_3_87, 76, 1, 0},
+{ 5, s_3_88, 76, 1, 0},
+{ 5, s_3_89, 76, 1, 0},
+{ 5, s_3_90, 76, 1, 0},
+{ 5, s_3_91, 76, 1, 0},
+{ 6, s_3_92, 76, 1, 0},
+{ 6, s_3_93, 76, 1, 0},
+{ 6, s_3_94, 76, 1, 0},
+{ 4, s_3_95, 76, 1, 0},
+{ 4, s_3_96, 76, 1, 0},
+{ 5, s_3_97, 96, 1, 0},
+{ 4, s_3_98, 76, 1, 0},
+{ 3, s_3_99, 76, 1, 0},
+{ 2, s_3_100, -1, 1, 0},
+{ 4, s_3_101, 100, 1, 0},
+{ 3, s_3_102, 100, 1, 0},
+{ 4, s_3_103, 102, 1, 0},
+{ 5, s_3_104, 102, 1, 0},
+{ 5, s_3_105, 102, 1, 0},
+{ 5, s_3_106, 102, 1, 0},
+{ 5, s_3_107, 102, 1, 0},
+{ 6, s_3_108, 100, 1, 0},
+{ 5, s_3_109, 100, 1, 0},
+{ 4, s_3_110, -1, 1, 0},
+{ 5, s_3_111, -1, 1, 0},
+{ 4, s_3_112, -1, 1, 0},
+{ 4, s_3_113, -1, 1, 0},
+{ 4, s_3_114, -1, 1, 0},
+{ 3, s_3_115, -1, 1, 0},
+{ 3, s_3_116, -1, 1, 0},
+{ 3, s_3_117, -1, 1, 0},
+{ 4, s_3_118, -1, 2, 0},
+{ 5, s_3_119, -1, 1, 0},
+{ 2, s_3_120, -1, 1, 0},
+{ 3, s_3_121, -1, 1, 0},
+{ 4, s_3_122, 121, 1, 0},
+{ 3, s_3_123, -1, 1, 0},
+{ 4, s_3_124, -1, 1, 0},
+{ 2, s_3_125, -1, 1, 0},
+{ 4, s_3_126, 125, 1, 0},
+{ 2, s_3_127, -1, 1, 0},
+{ 5, s_3_128, 127, 1, 0},
+{ 2, s_3_129, -1, 1, 0},
+{ 4, s_3_130, -1, 1, 0},
+{ 2, s_3_131, -1, 1, 0},
+{ 4, s_3_132, 131, 1, 0},
+{ 4, s_3_133, 131, 1, 0},
+{ 4, s_3_134, 131, 1, 0},
+{ 4, s_3_135, 131, 1, 0},
+{ 5, s_3_136, 131, 1, 0},
+{ 3, s_3_137, 131, 1, 0},
+{ 5, s_3_138, 137, 1, 0},
+{ 5, s_3_139, 137, 1, 0},
+{ 5, s_3_140, 137, 1, 0},
+{ 3, s_3_141, -1, 1, 0},
+{ 2, s_3_142, -1, 1, 0},
+{ 4, s_3_143, 142, 1, 0},
+{ 4, s_3_144, 142, 1, 0},
+{ 4, s_3_145, 142, 1, 0},
+{ 4, s_3_146, 142, 1, 0},
+{ 5, s_3_147, 142, 1, 0},
+{ 3, s_3_148, 142, 1, 0},
+{ 5, s_3_149, 148, 1, 0},
+{ 5, s_3_150, 148, 1, 0},
+{ 4, s_3_151, 142, 1, 0},
+{ 4, s_3_152, 142, 1, 0},
+{ 6, s_3_153, 142, 1, 0},
+{ 4, s_3_154, 142, 1, 0},
+{ 4, s_3_155, 142, 1, 0},
+{ 5, s_3_156, 142, 1, 0},
+{ 5, s_3_157, 142, 1, 0},
+{ 5, s_3_158, 142, 1, 0},
+{ 5, s_3_159, 142, 1, 0},
+{ 5, s_3_160, 142, 1, 0},
+{ 4, s_3_161, 142, 1, 0},
+{ 6, s_3_162, 161, 1, 0},
+{ 6, s_3_163, 161, 1, 0},
+{ 4, s_3_164, 142, 1, 0},
+{ 4, s_3_165, 142, 1, 0},
+{ 5, s_3_166, 165, 1, 0},
+{ 4, s_3_167, 142, 1, 0},
+{ 3, s_3_168, 142, 1, 0},
+{ 5, s_3_169, -1, 1, 0},
+{ 5, s_3_170, -1, 1, 0},
+{ 6, s_3_171, -1, 1, 0},
+{ 4, s_3_172, -1, 1, 0},
+{ 6, s_3_173, 172, 1, 0},
+{ 6, s_3_174, 172, 1, 0},
+{ 6, s_3_175, 172, 1, 0},
+{ 5, s_3_176, -1, 1, 0},
+{ 6, s_3_177, -1, 1, 0},
+{ 6, s_3_178, -1, 1, 0},
+{ 6, s_3_179, -1, 1, 0},
+{ 4, s_3_180, -1, 1, 0},
+{ 3, s_3_181, -1, 1, 0},
+{ 4, s_3_182, 181, 1, 0},
+{ 5, s_3_183, 181, 1, 0},
+{ 5, s_3_184, 181, 1, 0},
+{ 5, s_3_185, 181, 1, 0},
+{ 5, s_3_186, 181, 1, 0},
+{ 6, s_3_187, -1, 1, 0},
+{ 5, s_3_188, -1, 1, 0},
+{ 5, s_3_189, -1, 1, 0},
+{ 3, s_3_190, -1, 1, 0},
+{ 5, s_3_191, -1, 1, 0},
+{ 5, s_3_192, -1, 1, 0},
+{ 5, s_3_193, -1, 1, 0},
+{ 3, s_3_194, -1, 1, 0},
+{ 4, s_3_195, -1, 1, 0},
+{ 4, s_3_196, -1, 1, 0},
+{ 4, s_3_197, -1, 1, 0},
+{ 6, s_3_198, 197, 1, 0},
+{ 6, s_3_199, 197, 1, 0},
+{ 7, s_3_200, 197, 1, 0},
+{ 5, s_3_201, 197, 1, 0},
+{ 7, s_3_202, 201, 1, 0},
+{ 7, s_3_203, 201, 1, 0},
+{ 7, s_3_204, 201, 1, 0},
+{ 6, s_3_205, -1, 1, 0},
+{ 6, s_3_206, -1, 1, 0},
+{ 6, s_3_207, -1, 1, 0},
+{ 6, s_3_208, -1, 1, 0},
+{ 7, s_3_209, -1, 1, 0},
+{ 4, s_3_210, -1, 1, 0},
+{ 5, s_3_211, -1, 1, 0},
+{ 3, s_3_212, -1, 1, 0},
+{ 5, s_3_213, 212, 1, 0},
+{ 3, s_3_214, -1, 1, 0},
+{ 3, s_3_215, -1, 1, 0},
+{ 3, s_3_216, -1, 1, 0},
+{ 4, s_3_217, -1, 1, 0},
+{ 2, s_3_218, -1, 1, 0},
+{ 4, s_3_219, 218, 1, 0},
+{ 4, s_3_220, 218, 1, 0},
+{ 4, s_3_221, -1, 1, 0},
+{ 4, s_3_222, -1, 1, 0},
+{ 4, s_3_223, -1, 1, 0},
+{ 2, s_3_224, -1, 1, 0},
+{ 4, s_3_225, 224, 1, 0},
+{ 2, s_3_226, -1, 1, 0},
+{ 3, s_3_227, -1, 1, 0},
+{ 2, s_3_228, -1, 1, 0},
+{ 2, s_3_229, -1, 1, 0},
+{ 3, s_3_230, -1, 1, 0},
+{ 3, s_3_231, -1, 1, 0},
+{ 3, s_3_232, -1, 1, 0},
+{ 2, s_3_233, -1, 1, 0},
+{ 2, s_3_234, -1, 1, 0},
+{ 2, s_3_235, -1, 1, 0},
+{ 4, s_3_236, 235, 1, 0},
+{ 3, s_3_237, -1, 1, 0},
+{ 4, s_3_238, -1, 1, 0},
+{ 4, s_3_239, -1, 1, 0},
+{ 4, s_3_240, -1, 1, 0},
+{ 4, s_3_241, -1, 1, 0},
+{ 4, s_3_242, -1, 1, 0},
+{ 5, s_3_243, -1, 1, 0},
+{ 5, s_3_244, -1, 1, 0},
+{ 7, s_3_245, 244, 1, 0},
+{ 5, s_3_246, -1, 1, 0},
+{ 5, s_3_247, -1, 1, 0},
+{ 5, s_3_248, -1, 1, 0},
+{ 5, s_3_249, -1, 1, 0},
+{ 4, s_3_250, -1, 1, 0},
+{ 4, s_3_251, -1, 1, 0},
+{ 5, s_3_252, -1, 1, 0},
+{ 3, s_3_253, -1, 1, 0},
+{ 5, s_3_254, 253, 1, 0},
+{ 3, s_3_255, -1, 1, 0},
+{ 5, s_3_256, 255, 1, 0},
+{ 5, s_3_257, 255, 1, 0},
+{ 5, s_3_258, -1, 1, 0},
+{ 5, s_3_259, -1, 1, 0},
+{ 5, s_3_260, -1, 1, 0},
+{ 5, s_3_261, -1, 1, 0},
+{ 5, s_3_262, -1, 1, 0},
+{ 5, s_3_263, -1, 1, 0},
+{ 2, s_3_264, -1, 1, 0},
+{ 2, s_3_265, -1, 1, 0},
+{ 3, s_3_266, 265, 1, 0},
+{ 2, s_3_267, -1, 1, 0},
+{ 3, s_3_268, -1, 1, 0},
+{ 2, s_3_269, -1, 1, 0},
+{ 3, s_3_270, -1, 1, 0},
+{ 3, s_3_271, -1, 1, 0},
+{ 4, s_3_272, -1, 1, 0},
+{ 3, s_3_273, -1, 1, 0},
+{ 3, s_3_274, -1, 1, 0},
+{ 3, s_3_275, -1, 1, 0},
+{ 3, s_3_276, -1, 1, 0},
+{ 3, s_3_277, -1, 1, 0},
+{ 3, s_3_278, -1, 1, 0},
+{ 3, s_3_279, -1, 1, 0},
+{ 1, s_3_280, -1, 1, 0},
+{ 2, s_3_281, -1, 1, 0},
+{ 2, s_3_282, -1, 1, 0}
};
static const symbol s_4_0[1] = { 'a' };
@@ -1143,28 +1143,28 @@ 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}
+{ 1, s_4_0, -1, 1, 0},
+{ 1, s_4_1, -1, 1, 0},
+{ 1, s_4_2, -1, 1, 0},
+{ 2, s_4_3, -1, 1, 0},
+{ 1, s_4_4, -1, 1, 0},
+{ 2, s_4_5, -1, 1, 0},
+{ 1, s_4_6, -1, 1, 0},
+{ 2, s_4_7, 6, 1, 0},
+{ 2, s_4_8, 6, 1, 0},
+{ 2, s_4_9, 6, 1, 0},
+{ 2, s_4_10, -1, 1, 0},
+{ 2, s_4_11, -1, 1, 0},
+{ 2, s_4_12, -1, 1, 0},
+{ 3, s_4_13, -1, 2, 0},
+{ 3, s_4_14, -1, 1, 0},
+{ 1, s_4_15, -1, 1, 0},
+{ 1, s_4_16, -1, 1, 0},
+{ 1, s_4_17, -1, 1, 0},
+{ 1, s_4_18, -1, 1, 0},
+{ 1, s_4_19, -1, 1, 0},
+{ 1, s_4_20, -1, 1, 0},
+{ 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 };
@@ -1180,81 +1180,80 @@ 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 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ {
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 */
+ z->I[1] = z->c;
+ {
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 */
+ z->I[0] = z->c;
lab0:
z->c = c1;
}
return 1;
}
-static int r_cleaning(struct SN_env * z) { /* forwardmode */
+static int r_cleaning(struct SN_env * z) {
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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ 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 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 49 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 51 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 53 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 55 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 57 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 60 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 7:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 61 */
+ z->c++;
break;
}
continue;
@@ -1265,74 +1264,74 @@ static int r_cleaning(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 67 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 68 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
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 */
+static int r_attached_pronoun(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1634850 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
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 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 81 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 86 */
- among_var = find_among_b(z, a_2, 200); /* substring, line 86 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_2, 200);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 86 */
- switch (among_var) { /* among, line 86 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R1(z); /* call R1, line 110 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 110 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 112 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 112 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 114 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_6); /* <-, line 114 */
+ { int ret = slice_from_s(z, 3, s_6);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_R2(z); /* call R2, line 116 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 2, s_7); /* <-, line 116 */
+ { int ret = slice_from_s(z, 2, s_7);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = r_R1(z); /* call R1, line 118 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 118 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
@@ -1340,26 +1339,26 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_verb_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 123 */
- among_var = find_among_b(z, a_3, 283); /* substring, line 123 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_3, 283);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 123 */
- switch (among_var) { /* among, line 123 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R1(z); /* call R1, line 168 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 168 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 170 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 170 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -1367,26 +1366,26 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
+static int r_residual_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 175 */
- among_var = find_among_b(z, a_4, 22); /* substring, line 175 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_4, 22);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 175 */
- switch (among_var) { /* among, line 175 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R1(z); /* call R1, line 178 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 178 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R1(z); /* call R1, line 180 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 2, s_9); /* <-, line 180 */
+ { int ret = slice_from_s(z, 2, s_9);
if (ret < 0) return ret;
}
break;
@@ -1394,29 +1393,29 @@ static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
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 */
+extern int catalan_ISO_8859_1_stem(struct SN_env * z) {
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 187 */
+ z->lb = z->c; z->c = z->l;
- { int m1 = z->l - z->c; (void)m1; /* do, line 188 */
- { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 188 */
+ { int m1 = z->l - z->c; (void)m1;
+ { int ret = r_attached_pronoun(z);
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 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_standard_suffix(z);
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 */
+ { int ret = r_verb_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -1425,15 +1424,15 @@ extern int catalan_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_residual_suffix(z);
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 */
+ { int c5 = z->c;
+ { int ret = r_cleaning(z);
if (ret < 0) return ret;
}
z->c = c5;
@@ -1441,7 +1440,7 @@ extern int catalan_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * catalan_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); }
+extern struct SN_env * catalan_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
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 dff225884b8aa..88ce5717c706c 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -61,38 +61,38 @@ static const symbol s_0_31[4] = { 'e', 'r', 'e', 't' };
static const struct among a_0[32] =
{
-/* 0 */ { 3, s_0_0, -1, 1, 0},
-/* 1 */ { 5, s_0_1, 0, 1, 0},
-/* 2 */ { 4, s_0_2, -1, 1, 0},
-/* 3 */ { 1, s_0_3, -1, 1, 0},
-/* 4 */ { 5, s_0_4, 3, 1, 0},
-/* 5 */ { 4, s_0_5, 3, 1, 0},
-/* 6 */ { 6, s_0_6, 5, 1, 0},
-/* 7 */ { 3, s_0_7, 3, 1, 0},
-/* 8 */ { 4, s_0_8, 3, 1, 0},
-/* 9 */ { 3, s_0_9, 3, 1, 0},
-/* 10 */ { 2, s_0_10, -1, 1, 0},
-/* 11 */ { 5, s_0_11, 10, 1, 0},
-/* 12 */ { 4, s_0_12, 10, 1, 0},
-/* 13 */ { 2, s_0_13, -1, 1, 0},
-/* 14 */ { 5, s_0_14, 13, 1, 0},
-/* 15 */ { 4, s_0_15, 13, 1, 0},
-/* 16 */ { 1, s_0_16, -1, 2, 0},
-/* 17 */ { 4, s_0_17, 16, 1, 0},
-/* 18 */ { 2, s_0_18, 16, 1, 0},
-/* 19 */ { 5, s_0_19, 18, 1, 0},
-/* 20 */ { 7, s_0_20, 19, 1, 0},
-/* 21 */ { 4, s_0_21, 18, 1, 0},
-/* 22 */ { 5, s_0_22, 18, 1, 0},
-/* 23 */ { 4, s_0_23, 18, 1, 0},
-/* 24 */ { 3, s_0_24, 16, 1, 0},
-/* 25 */ { 6, s_0_25, 24, 1, 0},
-/* 26 */ { 5, s_0_26, 24, 1, 0},
-/* 27 */ { 3, s_0_27, 16, 1, 0},
-/* 28 */ { 3, s_0_28, 16, 1, 0},
-/* 29 */ { 5, s_0_29, 28, 1, 0},
-/* 30 */ { 2, s_0_30, -1, 1, 0},
-/* 31 */ { 4, s_0_31, 30, 1, 0}
+{ 3, s_0_0, -1, 1, 0},
+{ 5, s_0_1, 0, 1, 0},
+{ 4, s_0_2, -1, 1, 0},
+{ 1, s_0_3, -1, 1, 0},
+{ 5, s_0_4, 3, 1, 0},
+{ 4, s_0_5, 3, 1, 0},
+{ 6, s_0_6, 5, 1, 0},
+{ 3, s_0_7, 3, 1, 0},
+{ 4, s_0_8, 3, 1, 0},
+{ 3, s_0_9, 3, 1, 0},
+{ 2, s_0_10, -1, 1, 0},
+{ 5, s_0_11, 10, 1, 0},
+{ 4, s_0_12, 10, 1, 0},
+{ 2, s_0_13, -1, 1, 0},
+{ 5, s_0_14, 13, 1, 0},
+{ 4, s_0_15, 13, 1, 0},
+{ 1, s_0_16, -1, 2, 0},
+{ 4, s_0_17, 16, 1, 0},
+{ 2, s_0_18, 16, 1, 0},
+{ 5, s_0_19, 18, 1, 0},
+{ 7, s_0_20, 19, 1, 0},
+{ 4, s_0_21, 18, 1, 0},
+{ 5, s_0_22, 18, 1, 0},
+{ 4, s_0_23, 18, 1, 0},
+{ 3, s_0_24, 16, 1, 0},
+{ 6, s_0_25, 24, 1, 0},
+{ 5, s_0_26, 24, 1, 0},
+{ 3, s_0_27, 16, 1, 0},
+{ 3, s_0_28, 16, 1, 0},
+{ 5, s_0_29, 28, 1, 0},
+{ 2, s_0_30, -1, 1, 0},
+{ 4, s_0_31, 30, 1, 0}
};
static const symbol s_1_0[2] = { 'g', 'd' };
@@ -102,10 +102,10 @@ static const symbol s_1_3[2] = { 'k', 't' };
static const struct among a_1[4] =
{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0},
-/* 2 */ { 2, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0}
+{ 2, s_1_0, -1, -1, 0},
+{ 2, s_1_1, -1, -1, 0},
+{ 2, s_1_2, -1, -1, 0},
+{ 2, s_1_3, -1, -1, 0}
};
static const symbol s_2_0[2] = { 'i', 'g' };
@@ -116,11 +116,11 @@ static const symbol s_2_4[4] = { 'l', 0xF8, 's', 't' };
static const struct among a_2[5] =
{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 3, s_2_1, 0, 1, 0},
-/* 2 */ { 4, s_2_2, 1, 1, 0},
-/* 3 */ { 3, s_2_3, -1, 1, 0},
-/* 4 */ { 4, s_2_4, -1, 2, 0}
+{ 2, s_2_0, -1, 1, 0},
+{ 3, s_2_1, 0, 1, 0},
+{ 4, s_2_2, 1, 1, 0},
+{ 3, s_2_3, -1, 1, 0},
+{ 4, s_2_4, -1, 2, 0}
};
static const unsigned char g_c[] = { 119, 223, 119, 1 };
@@ -133,52 +133,50 @@ static const symbol s_0[] = { 's', 't' };
static const symbol s_1[] = { 'i', 'g' };
static const symbol s_2[] = { 'l', 0xF8, 's' };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 33 */
- { int c_test1 = z->c; /* test, line 35 */
- { int ret = z->c + 3; /* hop, line 35 */
- if (0 > ret || ret > z->l) return 0;
- z->c = ret;
- }
- z->I[1] = z->c; /* setmark x, line 35 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ { int c_test1 = z->c;
+z->c = z->c + 3;
+ if (z->c > z->l) return 0;
+ z->I[0] = z->c;
z->c = c_test1;
}
- if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 36 */
- { /* gopast */ /* non v, line 36 */
+ if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0;
+ {
int ret = in_grouping(z, g_v, 97, 248, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 36 */
- /* try, line 37 */
- if (!(z->I[0] < z->I[1])) goto lab0; /* $( < ), line 37 */
- z->I[0] = z->I[1]; /* $p1 = , line 37 */
+ z->I[1] = z->c;
+
+ if (!(z->I[1] < z->I[0])) goto lab0;
+ z->I[1] = z->I[0];
lab0:
return 1;
}
-static int r_main_suffix(struct SN_env * z) { /* backwardmode */
+static int r_main_suffix(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 43 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 43 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 43 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_0, 32);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 43 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 44 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 50 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (in_grouping_b(z, g_s_ending, 97, 229, 0)) return 0; /* grouping s_ending, line 52 */
- { int ret = slice_del(z); /* delete, line 52 */
+ if (in_grouping_b(z, g_s_ending, 97, 229, 0)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -186,67 +184,67 @@ static int r_main_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
- { int m_test1 = z->l - z->c; /* test, line 57 */
+static int r_consonant_pair(struct SN_env * z) {
+ { int m_test1 = z->l - z->c;
- { int mlimit2; /* setlimit, line 58 */
- if (z->c < z->I[0]) return 0;
- mlimit2 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 58 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; } /* substring, line 58 */
+ { int mlimit2;
+ if (z->c < z->I[1]) return 0;
+ mlimit2 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; }
if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit2; return 0; }
- z->bra = z->c; /* ], line 58 */
+ z->bra = z->c;
z->lb = mlimit2;
}
z->c = z->l - m_test1;
}
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 64 */
- z->bra = z->c; /* ], line 64 */
- { int ret = slice_del(z); /* delete, line 64 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_other_suffix(struct SN_env * z) { /* backwardmode */
+static int r_other_suffix(struct SN_env * z) {
int among_var;
- { int m1 = z->l - z->c; (void)m1; /* do, line 68 */
- z->ket = z->c; /* [, line 68 */
- if (!(eq_s_b(z, 2, s_0))) goto lab0; /* literal, line 68 */
- z->bra = z->c; /* ], line 68 */
- if (!(eq_s_b(z, 2, s_1))) goto lab0; /* literal, line 68 */
- { int ret = slice_del(z); /* delete, line 68 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_0))) goto lab0;
+ z->bra = z->c;
+ if (!(eq_s_b(z, 2, s_1))) goto lab0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
z->c = z->l - m1;
}
- { int mlimit2; /* setlimit, line 69 */
- if (z->c < z->I[0]) return 0;
- mlimit2 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 69 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; } /* substring, line 69 */
+ { int mlimit2;
+ if (z->c < z->I[1]) return 0;
+ mlimit2 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; }
among_var = find_among_b(z, a_2, 5);
if (!(among_var)) { z->lb = mlimit2; return 0; }
- z->bra = z->c; /* ], line 69 */
+ z->bra = z->c;
z->lb = mlimit2;
}
- switch (among_var) { /* among, line 70 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 72 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m3 = z->l - z->c; (void)m3; /* do, line 72 */
- { int ret = r_consonant_pair(z); /* call consonant_pair, line 72 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
break;
case 2:
- { int ret = slice_from_s(z, 3, s_2); /* <-, line 74 */
+ { int ret = slice_from_s(z, 3, s_2);
if (ret < 0) return ret;
}
break;
@@ -254,54 +252,54 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_undouble(struct SN_env * z) { /* backwardmode */
+static int r_undouble(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 78 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 78 */
- if (in_grouping_b(z, g_c, 98, 122, 0)) { z->lb = mlimit1; return 0; } /* grouping c, line 78 */
- z->bra = z->c; /* ], line 78 */
- z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 78 */
- if (z->S[0] == 0) return -1; /* -> ch, line 78 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (in_grouping_b(z, g_c, 98, 122, 0)) { z->lb = mlimit1; return 0; }
+ z->bra = z->c;
+ z->S[0] = slice_to(z, z->S[0]);
+ if (z->S[0] == 0) return -1;
z->lb = mlimit1;
}
- if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 79 */
- { int ret = slice_del(z); /* delete, line 80 */
+ if (!(eq_v_b(z, z->S[0]))) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-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 */
+extern int danish_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 87 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 88 */
- { int ret = r_main_suffix(z); /* call main_suffix, line 88 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_main_suffix(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_other_suffix(z);
if (ret < 0) return ret;
}
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 */
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_undouble(z);
if (ret < 0) return ret;
}
z->c = z->l - m5;
@@ -310,7 +308,7 @@ extern int danish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * danish_ISO_8859_1_create_env(void) { return SN_create_env(1, 2, 0); }
+extern struct SN_env * danish_ISO_8859_1_create_env(void) { return SN_create_env(1, 2); }
extern void danish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 1); }
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 aa33b42df3960..08de47a0959c2 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -43,17 +43,17 @@ static const symbol s_0_10[1] = { 0xFC };
static const struct among a_0[11] =
{
-/* 0 */ { 0, 0, -1, 6, 0},
-/* 1 */ { 1, s_0_1, 0, 1, 0},
-/* 2 */ { 1, s_0_2, 0, 1, 0},
-/* 3 */ { 1, s_0_3, 0, 2, 0},
-/* 4 */ { 1, s_0_4, 0, 2, 0},
-/* 5 */ { 1, s_0_5, 0, 3, 0},
-/* 6 */ { 1, s_0_6, 0, 3, 0},
-/* 7 */ { 1, s_0_7, 0, 4, 0},
-/* 8 */ { 1, s_0_8, 0, 4, 0},
-/* 9 */ { 1, s_0_9, 0, 5, 0},
-/* 10 */ { 1, s_0_10, 0, 5, 0}
+{ 0, 0, -1, 6, 0},
+{ 1, s_0_1, 0, 1, 0},
+{ 1, s_0_2, 0, 1, 0},
+{ 1, s_0_3, 0, 2, 0},
+{ 1, s_0_4, 0, 2, 0},
+{ 1, s_0_5, 0, 3, 0},
+{ 1, s_0_6, 0, 3, 0},
+{ 1, s_0_7, 0, 4, 0},
+{ 1, s_0_8, 0, 4, 0},
+{ 1, s_0_9, 0, 5, 0},
+{ 1, s_0_10, 0, 5, 0}
};
static const symbol s_1_1[1] = { 'I' };
@@ -61,9 +61,9 @@ static const symbol s_1_2[1] = { 'Y' };
static const struct among a_1[3] =
{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 1, s_1_1, 0, 2, 0},
-/* 2 */ { 1, s_1_2, 0, 1, 0}
+{ 0, 0, -1, 3, 0},
+{ 1, s_1_1, 0, 2, 0},
+{ 1, s_1_2, 0, 1, 0}
};
static const symbol s_2_0[2] = { 'd', 'd' };
@@ -72,9 +72,9 @@ static const symbol s_2_2[2] = { 't', 't' };
static const struct among a_2[3] =
{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 2, s_2_1, -1, -1, 0},
-/* 2 */ { 2, s_2_2, -1, -1, 0}
+{ 2, s_2_0, -1, -1, 0},
+{ 2, s_2_1, -1, -1, 0},
+{ 2, s_2_2, -1, -1, 0}
};
static const symbol s_3_0[3] = { 'e', 'n', 'e' };
@@ -85,11 +85,11 @@ static const symbol s_3_4[1] = { 's' };
static const struct among a_3[5] =
{
-/* 0 */ { 3, s_3_0, -1, 2, 0},
-/* 1 */ { 2, s_3_1, -1, 3, 0},
-/* 2 */ { 2, s_3_2, -1, 2, 0},
-/* 3 */ { 5, s_3_3, 2, 1, 0},
-/* 4 */ { 1, s_3_4, -1, 3, 0}
+{ 3, s_3_0, -1, 2, 0},
+{ 2, s_3_1, -1, 3, 0},
+{ 2, s_3_2, -1, 2, 0},
+{ 5, s_3_3, 2, 1, 0},
+{ 1, s_3_4, -1, 3, 0}
};
static const symbol s_4_0[3] = { 'e', 'n', 'd' };
@@ -101,12 +101,12 @@ static const symbol s_4_5[3] = { 'b', 'a', 'r' };
static const struct among a_4[6] =
{
-/* 0 */ { 3, s_4_0, -1, 1, 0},
-/* 1 */ { 2, s_4_1, -1, 2, 0},
-/* 2 */ { 3, s_4_2, -1, 1, 0},
-/* 3 */ { 4, s_4_3, -1, 3, 0},
-/* 4 */ { 4, s_4_4, -1, 4, 0},
-/* 5 */ { 3, s_4_5, -1, 5, 0}
+{ 3, s_4_0, -1, 1, 0},
+{ 2, s_4_1, -1, 2, 0},
+{ 3, s_4_2, -1, 1, 0},
+{ 4, s_4_3, -1, 3, 0},
+{ 4, s_4_4, -1, 4, 0},
+{ 3, s_4_5, -1, 5, 0}
};
static const symbol s_5_0[2] = { 'a', 'a' };
@@ -116,10 +116,10 @@ static const symbol s_5_3[2] = { 'u', 'u' };
static const struct among a_5[4] =
{
-/* 0 */ { 2, s_5_0, -1, -1, 0},
-/* 1 */ { 2, s_5_1, -1, -1, 0},
-/* 2 */ { 2, s_5_2, -1, -1, 0},
-/* 3 */ { 2, s_5_3, -1, -1, 0}
+{ 2, s_5_0, -1, -1, 0},
+{ 2, s_5_1, -1, -1, 0},
+{ 2, s_5_2, -1, -1, 0},
+{ 2, s_5_3, -1, -1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
@@ -144,46 +144,45 @@ static const symbol s_12[] = { 'h', 'e', 'i', 'd' };
static const symbol s_13[] = { 'e', 'n' };
static const symbol s_14[] = { 'i', 'g' };
-static int r_prelude(struct SN_env * z) { /* forwardmode */
+static int r_prelude(struct SN_env * z) {
int among_var;
- { int c_test1 = z->c; /* test, line 42 */
-/* 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 */
+ { int c_test1 = z->c;
+ while(1) {
+ int c2 = z->c;
+ z->bra = z->c;
+ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 7 || !((340306450 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 6; else
among_var = find_among(z, a_0, 11);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 43 */
- switch (among_var) { /* among, line 43 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 45 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 47 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 49 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 51 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 53 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 6:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 54 */
+ z->c++;
break;
}
continue;
@@ -193,39 +192,38 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
}
z->c = c_test1;
}
- { int c3 = z->c; /* try, line 57 */
- z->bra = z->c; /* [, line 57 */
- if (z->c == z->l || z->p[z->c] != 'y') { z->c = c3; goto lab1; } /* literal, line 57 */
+ { int c3 = z->c;
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'y') { z->c = c3; goto lab1; }
z->c++;
- z->ket = z->c; /* ], line 57 */
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 57 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
lab1:
;
}
-/* repeat, line 58 */
-
- while(1) { int c4 = z->c;
- while(1) { /* goto, line 58 */
+ while(1) {
+ int c4 = z->c;
+ while(1) {
int c5 = z->c;
- if (in_grouping(z, g_v, 97, 232, 0)) goto lab3; /* grouping v, line 59 */
- z->bra = z->c; /* [, line 59 */
- { int c6 = z->c; /* or, line 59 */
- if (z->c == z->l || z->p[z->c] != 'i') goto lab5; /* literal, line 59 */
+ if (in_grouping(z, g_v, 97, 232, 0)) goto lab3;
+ z->bra = z->c;
+ { int c6 = z->c;
+ if (z->c == z->l || z->p[z->c] != 'i') goto lab5;
z->c++;
- z->ket = z->c; /* ], line 59 */
- if (in_grouping(z, g_v, 97, 232, 0)) goto lab5; /* grouping v, line 59 */
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 59 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 232, 0)) goto lab5;
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
goto lab4;
lab5:
z->c = c6;
- if (z->c == z->l || z->p[z->c] != 'y') goto lab3; /* literal, line 60 */
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
z->c++;
- z->ket = z->c; /* ], line 60 */
- { int ret = slice_from_s(z, 1, s_7); /* <-, line 60 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
}
@@ -235,7 +233,7 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
lab3:
z->c = c5;
if (z->c >= z->l) goto lab2;
- z->c++; /* goto, line 58 */
+ z->c++;
}
continue;
lab2:
@@ -245,62 +243,61 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 66 */
- z->I[1] = z->l; /* $p2 = , line 67 */
- { /* gopast */ /* grouping v, line 69 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ {
int ret = out_grouping(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
- { /* gopast */ /* non v, line 69 */
+ {
int ret = in_grouping(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 69 */
- /* try, line 70 */
- if (!(z->I[0] < 3)) goto lab0; /* $( < ), line 70 */
- z->I[0] = 3; /* $p1 = , line 70 */
+ z->I[1] = z->c;
+
+ if (!(z->I[1] < 3)) goto lab0;
+ z->I[1] = 3;
lab0:
- { /* gopast */ /* grouping v, line 71 */
+ {
int ret = out_grouping(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
- { /* gopast */ /* non v, line 71 */
+ {
int ret = in_grouping(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p2, line 71 */
+ z->I[0] = z->c;
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
+static int r_postlude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 89)) among_var = 3; else
among_var = find_among(z, a_1, 3);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 77 */
- switch (among_var) { /* among, line 77 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 78 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_9); /* <-, line 79 */
+ { int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
case 3:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 80 */
+ z->c++;
break;
}
continue;
@@ -311,109 +308,109 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 87 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 88 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_undouble(struct SN_env * z) { /* backwardmode */
- { int m_test1 = z->l - z->c; /* test, line 91 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1050640 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 91 */
+static int r_undouble(struct SN_env * z) {
+ { int m_test1 = z->l - z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1050640 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_2, 3))) return 0;
z->c = z->l - m_test1;
}
- z->ket = z->c; /* [, line 91 */
+ z->ket = z->c;
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 91 */
- z->bra = z->c; /* ], line 91 */
- { int ret = slice_del(z); /* delete, line 91 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_e_ending(struct SN_env * z) { /* backwardmode */
- z->B[0] = 0; /* unset e_found, line 95 */
- z->ket = z->c; /* [, line 96 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0; /* literal, line 96 */
+static int r_e_ending(struct SN_env * z) {
+ z->I[2] = 0;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
- z->bra = z->c; /* ], line 96 */
- { int ret = r_R1(z); /* call R1, line 96 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int m_test1 = z->l - z->c; /* test, line 96 */
- if (out_grouping_b(z, g_v, 97, 232, 0)) return 0; /* non v, line 96 */
+ { int m_test1 = z->l - z->c;
+ if (out_grouping_b(z, g_v, 97, 232, 0)) return 0;
z->c = z->l - m_test1;
}
- { int ret = slice_del(z); /* delete, line 96 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->B[0] = 1; /* set e_found, line 97 */
- { int ret = r_undouble(z); /* call undouble, line 98 */
+ z->I[2] = 1;
+ { int ret = r_undouble(z);
if (ret <= 0) return ret;
}
return 1;
}
-static int r_en_ending(struct SN_env * z) { /* backwardmode */
- { int ret = r_R1(z); /* call R1, line 102 */
+static int r_en_ending(struct SN_env * z) {
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int m1 = z->l - z->c; (void)m1; /* and, line 102 */
- if (out_grouping_b(z, g_v, 97, 232, 0)) return 0; /* non v, line 102 */
+ { int m1 = z->l - z->c; (void)m1;
+ if (out_grouping_b(z, g_v, 97, 232, 0)) return 0;
z->c = z->l - m1;
- { int m2 = z->l - z->c; (void)m2; /* not, line 102 */
- if (!(eq_s_b(z, 3, s_10))) goto lab0; /* literal, line 102 */
+ { int m2 = z->l - z->c; (void)m2;
+ if (!(eq_s_b(z, 3, s_10))) goto lab0;
return 0;
lab0:
z->c = z->l - m2;
}
}
- { int ret = slice_del(z); /* delete, line 102 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int ret = r_undouble(z); /* call undouble, line 103 */
+ { int ret = r_undouble(z);
if (ret <= 0) return ret;
}
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- { int m1 = z->l - z->c; (void)m1; /* do, line 107 */
- z->ket = z->c; /* [, line 108 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((540704 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0; /* substring, line 108 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((540704 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
among_var = find_among_b(z, a_3, 5);
if (!(among_var)) goto lab0;
- z->bra = z->c; /* ], line 108 */
- switch (among_var) { /* among, line 108 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R1(z); /* call R1, line 110 */
+ { int ret = r_R1(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
- { int ret = slice_from_s(z, 4, s_11); /* <-, line 110 */
+ { int ret = slice_from_s(z, 4, s_11);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_en_ending(z); /* call en_ending, line 113 */
+ { int ret = r_en_ending(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = r_R1(z); /* call R1, line 116 */
+ { int ret = r_R1(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
- if (out_grouping_b(z, g_v_j, 97, 232, 0)) goto lab0; /* non v_j, line 116 */
- { int ret = slice_del(z); /* delete, line 116 */
+ if (out_grouping_b(z, g_v_j, 97, 232, 0)) goto lab0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -421,77 +418,77 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
lab0:
z->c = z->l - m1;
}
- { int m2 = z->l - z->c; (void)m2; /* do, line 120 */
- { int ret = r_e_ending(z); /* call e_ending, line 120 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_e_ending(z);
if (ret < 0) return ret;
}
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 lab1; /* literal, line 122 */
- z->bra = z->c; /* ], line 122 */
- { int ret = r_R2(z); /* call R2, line 122 */
+ { int m3 = z->l - z->c; (void)m3;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 4, s_12))) goto lab1;
+ z->bra = z->c;
+ { int ret = r_R2(z);
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 lab2; /* literal, line 122 */
+ { int m4 = z->l - z->c; (void)m4;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab2;
z->c--;
goto lab1;
lab2:
z->c = z->l - m4;
}
- { int ret = slice_del(z); /* delete, line 122 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, 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 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_13))) goto lab1;
+ z->bra = z->c;
+ { int ret = r_en_ending(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
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 lab3; /* substring, line 127 */
+ { int m5 = z->l - z->c; (void)m5;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
among_var = find_among_b(z, a_4, 6);
if (!(among_var)) goto lab3;
- z->bra = z->c; /* ], line 127 */
- switch (among_var) { /* among, line 127 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 129 */
+ { int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 129 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { 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 lab5; /* literal, line 130 */
- z->bra = z->c; /* ], line 130 */
- { int ret = r_R2(z); /* call R2, line 130 */
+ { int m6 = z->l - z->c; (void)m6;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_14))) goto lab5;
+ z->bra = z->c;
+ { int ret = r_R2(z);
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 lab6; /* literal, line 130 */
+ { int m7 = z->l - z->c; (void)m7;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
z->c--;
goto lab5;
lab6:
z->c = z->l - m7;
}
- { int ret = slice_del(z); /* delete, line 130 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab4;
lab5:
z->c = z->l - m6;
- { int ret = r_undouble(z); /* call undouble, line 130 */
+ { int ret = r_undouble(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
@@ -499,50 +496,50 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
lab4:
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 133 */
+ { int ret = r_R2(z);
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 lab7; /* literal, line 133 */
+ { int m8 = z->l - z->c; (void)m8;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7;
z->c--;
goto lab3;
lab7:
z->c = z->l - m8;
}
- { int ret = slice_del(z); /* delete, line 133 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 136 */
+ { int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 136 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int ret = r_e_ending(z); /* call e_ending, line 136 */
+ { int ret = r_e_ending(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_R2(z); /* call R2, line 139 */
+ { int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 139 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = r_R2(z); /* call R2, line 142 */
+ { int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
- if (!(z->B[0])) goto lab3; /* Boolean test e_found, line 142 */
- { int ret = slice_del(z); /* delete, line 142 */
+ if (!(z->I[2])) goto lab3;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -550,19 +547,19 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
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 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 lab8; /* among, line 149 */
+ { int m9 = z->l - z->c; (void)m9;
+ if (out_grouping_b(z, g_v_I, 73, 232, 0)) goto lab8;
+ { int m_test10 = z->l - z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab8;
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 */
+ if (out_grouping_b(z, g_v, 97, 232, 0)) goto lab8;
z->c = z->l - m_test10;
}
- z->ket = z->c; /* [, line 152 */
+ z->ket = z->c;
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 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab8:
@@ -571,28 +568,28 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int dutch_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- { int c2 = z->c; /* do, line 160 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 160 */
+ { int c2 = z->c;
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c2;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 161 */
+ z->lb = z->c; z->c = z->l;
- /* do, line 162 */
- { int ret = r_standard_suffix(z); /* call standard_suffix, line 162 */
+
+ { int ret = r_standard_suffix(z);
if (ret < 0) return ret;
}
z->c = z->lb;
- { int c3 = z->c; /* do, line 163 */
- { int ret = r_postlude(z); /* call postlude, line 163 */
+ { int c3 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c3;
@@ -600,7 +597,7 @@ extern int dutch_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * dutch_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); }
+extern struct SN_env * dutch_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void dutch_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_english.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c
index d1f80c6c3b3c8..db67d68aed408 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -42,9 +42,9 @@ static const symbol s_0_2[5] = { 'g', 'e', 'n', 'e', 'r' };
static const struct among a_0[3] =
{
-/* 0 */ { 5, s_0_0, -1, -1, 0},
-/* 1 */ { 6, s_0_1, -1, -1, 0},
-/* 2 */ { 5, s_0_2, -1, -1, 0}
+{ 5, s_0_0, -1, -1, 0},
+{ 6, s_0_1, -1, -1, 0},
+{ 5, s_0_2, -1, -1, 0}
};
static const symbol s_1_0[1] = { '\'' };
@@ -53,9 +53,9 @@ static const symbol s_1_2[2] = { '\'', 's' };
static const struct among a_1[3] =
{
-/* 0 */ { 1, s_1_0, -1, 1, 0},
-/* 1 */ { 3, s_1_1, 0, 1, 0},
-/* 2 */ { 2, s_1_2, -1, 1, 0}
+{ 1, s_1_0, -1, 1, 0},
+{ 3, s_1_1, 0, 1, 0},
+{ 2, s_1_2, -1, 1, 0}
};
static const symbol s_2_0[3] = { 'i', 'e', 'd' };
@@ -67,12 +67,12 @@ static const symbol s_2_5[2] = { 'u', 's' };
static const struct among a_2[6] =
{
-/* 0 */ { 3, s_2_0, -1, 2, 0},
-/* 1 */ { 1, s_2_1, -1, 3, 0},
-/* 2 */ { 3, s_2_2, 1, 2, 0},
-/* 3 */ { 4, s_2_3, 1, 1, 0},
-/* 4 */ { 2, s_2_4, 1, -1, 0},
-/* 5 */ { 2, s_2_5, 1, -1, 0}
+{ 3, s_2_0, -1, 2, 0},
+{ 1, s_2_1, -1, 3, 0},
+{ 3, s_2_2, 1, 2, 0},
+{ 4, s_2_3, 1, 1, 0},
+{ 2, s_2_4, 1, -1, 0},
+{ 2, s_2_5, 1, -1, 0}
};
static const symbol s_3_1[2] = { 'b', 'b' };
@@ -90,19 +90,19 @@ static const symbol s_3_12[2] = { 'i', 'z' };
static const struct among a_3[13] =
{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 2, s_3_1, 0, 2, 0},
-/* 2 */ { 2, s_3_2, 0, 2, 0},
-/* 3 */ { 2, s_3_3, 0, 2, 0},
-/* 4 */ { 2, s_3_4, 0, 2, 0},
-/* 5 */ { 2, s_3_5, 0, 1, 0},
-/* 6 */ { 2, s_3_6, 0, 2, 0},
-/* 7 */ { 2, s_3_7, 0, 2, 0},
-/* 8 */ { 2, s_3_8, 0, 2, 0},
-/* 9 */ { 2, s_3_9, 0, 2, 0},
-/* 10 */ { 2, s_3_10, 0, 1, 0},
-/* 11 */ { 2, s_3_11, 0, 2, 0},
-/* 12 */ { 2, s_3_12, 0, 1, 0}
+{ 0, 0, -1, 3, 0},
+{ 2, s_3_1, 0, 2, 0},
+{ 2, s_3_2, 0, 2, 0},
+{ 2, s_3_3, 0, 2, 0},
+{ 2, s_3_4, 0, 2, 0},
+{ 2, s_3_5, 0, 1, 0},
+{ 2, s_3_6, 0, 2, 0},
+{ 2, s_3_7, 0, 2, 0},
+{ 2, s_3_8, 0, 2, 0},
+{ 2, s_3_9, 0, 2, 0},
+{ 2, s_3_10, 0, 1, 0},
+{ 2, s_3_11, 0, 2, 0},
+{ 2, s_3_12, 0, 1, 0}
};
static const symbol s_4_0[2] = { 'e', 'd' };
@@ -114,12 +114,12 @@ static const symbol s_4_5[5] = { 'i', 'n', 'g', 'l', 'y' };
static const struct among a_4[6] =
{
-/* 0 */ { 2, s_4_0, -1, 2, 0},
-/* 1 */ { 3, s_4_1, 0, 1, 0},
-/* 2 */ { 3, s_4_2, -1, 2, 0},
-/* 3 */ { 4, s_4_3, -1, 2, 0},
-/* 4 */ { 5, s_4_4, 3, 1, 0},
-/* 5 */ { 5, s_4_5, -1, 2, 0}
+{ 2, s_4_0, -1, 2, 0},
+{ 3, s_4_1, 0, 1, 0},
+{ 3, s_4_2, -1, 2, 0},
+{ 4, s_4_3, -1, 2, 0},
+{ 5, s_4_4, 3, 1, 0},
+{ 5, s_4_5, -1, 2, 0}
};
static const symbol s_5_0[4] = { 'a', 'n', 'c', 'i' };
@@ -149,30 +149,30 @@ static const symbol s_5_23[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
static const struct among a_5[24] =
{
-/* 0 */ { 4, s_5_0, -1, 3, 0},
-/* 1 */ { 4, s_5_1, -1, 2, 0},
-/* 2 */ { 3, s_5_2, -1, 13, 0},
-/* 3 */ { 2, s_5_3, -1, 15, 0},
-/* 4 */ { 3, s_5_4, 3, 12, 0},
-/* 5 */ { 4, s_5_5, 4, 4, 0},
-/* 6 */ { 4, s_5_6, 3, 8, 0},
-/* 7 */ { 5, s_5_7, 3, 9, 0},
-/* 8 */ { 6, s_5_8, 3, 14, 0},
-/* 9 */ { 5, s_5_9, 3, 10, 0},
-/* 10 */ { 5, s_5_10, 3, 5, 0},
-/* 11 */ { 5, s_5_11, -1, 8, 0},
-/* 12 */ { 6, s_5_12, -1, 12, 0},
-/* 13 */ { 5, s_5_13, -1, 11, 0},
-/* 14 */ { 6, s_5_14, -1, 1, 0},
-/* 15 */ { 7, s_5_15, 14, 7, 0},
-/* 16 */ { 5, s_5_16, -1, 8, 0},
-/* 17 */ { 5, s_5_17, -1, 7, 0},
-/* 18 */ { 7, s_5_18, 17, 6, 0},
-/* 19 */ { 4, s_5_19, -1, 6, 0},
-/* 20 */ { 4, s_5_20, -1, 7, 0},
-/* 21 */ { 7, s_5_21, -1, 11, 0},
-/* 22 */ { 7, s_5_22, -1, 9, 0},
-/* 23 */ { 7, s_5_23, -1, 10, 0}
+{ 4, s_5_0, -1, 3, 0},
+{ 4, s_5_1, -1, 2, 0},
+{ 3, s_5_2, -1, 13, 0},
+{ 2, s_5_3, -1, 15, 0},
+{ 3, s_5_4, 3, 12, 0},
+{ 4, s_5_5, 4, 4, 0},
+{ 4, s_5_6, 3, 8, 0},
+{ 5, s_5_7, 3, 9, 0},
+{ 6, s_5_8, 3, 14, 0},
+{ 5, s_5_9, 3, 10, 0},
+{ 5, s_5_10, 3, 5, 0},
+{ 5, s_5_11, -1, 8, 0},
+{ 6, s_5_12, -1, 12, 0},
+{ 5, s_5_13, -1, 11, 0},
+{ 6, s_5_14, -1, 1, 0},
+{ 7, s_5_15, 14, 7, 0},
+{ 5, s_5_16, -1, 8, 0},
+{ 5, s_5_17, -1, 7, 0},
+{ 7, s_5_18, 17, 6, 0},
+{ 4, s_5_19, -1, 6, 0},
+{ 4, s_5_20, -1, 7, 0},
+{ 7, s_5_21, -1, 11, 0},
+{ 7, s_5_22, -1, 9, 0},
+{ 7, s_5_23, -1, 10, 0}
};
static const symbol s_6_0[5] = { 'i', 'c', 'a', 't', 'e' };
@@ -187,15 +187,15 @@ static const symbol s_6_8[4] = { 'n', 'e', 's', 's' };
static const struct among a_6[9] =
{
-/* 0 */ { 5, s_6_0, -1, 4, 0},
-/* 1 */ { 5, s_6_1, -1, 6, 0},
-/* 2 */ { 5, s_6_2, -1, 3, 0},
-/* 3 */ { 5, s_6_3, -1, 4, 0},
-/* 4 */ { 4, s_6_4, -1, 4, 0},
-/* 5 */ { 6, s_6_5, -1, 1, 0},
-/* 6 */ { 7, s_6_6, 5, 2, 0},
-/* 7 */ { 3, s_6_7, -1, 5, 0},
-/* 8 */ { 4, s_6_8, -1, 5, 0}
+{ 5, s_6_0, -1, 4, 0},
+{ 5, s_6_1, -1, 6, 0},
+{ 5, s_6_2, -1, 3, 0},
+{ 5, s_6_3, -1, 4, 0},
+{ 4, s_6_4, -1, 4, 0},
+{ 6, s_6_5, -1, 1, 0},
+{ 7, s_6_6, 5, 2, 0},
+{ 3, s_6_7, -1, 5, 0},
+{ 4, s_6_8, -1, 5, 0}
};
static const symbol s_7_0[2] = { 'i', 'c' };
@@ -219,24 +219,24 @@ static const symbol s_7_17[5] = { 'e', 'm', 'e', 'n', 't' };
static const struct among a_7[18] =
{
-/* 0 */ { 2, s_7_0, -1, 1, 0},
-/* 1 */ { 4, s_7_1, -1, 1, 0},
-/* 2 */ { 4, s_7_2, -1, 1, 0},
-/* 3 */ { 4, s_7_3, -1, 1, 0},
-/* 4 */ { 4, s_7_4, -1, 1, 0},
-/* 5 */ { 3, s_7_5, -1, 1, 0},
-/* 6 */ { 3, s_7_6, -1, 1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 3, s_7_8, -1, 1, 0},
-/* 9 */ { 2, s_7_9, -1, 1, 0},
-/* 10 */ { 3, s_7_10, -1, 1, 0},
-/* 11 */ { 3, s_7_11, -1, 2, 0},
-/* 12 */ { 2, s_7_12, -1, 1, 0},
-/* 13 */ { 3, s_7_13, -1, 1, 0},
-/* 14 */ { 3, s_7_14, -1, 1, 0},
-/* 15 */ { 3, s_7_15, -1, 1, 0},
-/* 16 */ { 4, s_7_16, 15, 1, 0},
-/* 17 */ { 5, s_7_17, 16, 1, 0}
+{ 2, s_7_0, -1, 1, 0},
+{ 4, s_7_1, -1, 1, 0},
+{ 4, s_7_2, -1, 1, 0},
+{ 4, s_7_3, -1, 1, 0},
+{ 4, s_7_4, -1, 1, 0},
+{ 3, s_7_5, -1, 1, 0},
+{ 3, s_7_6, -1, 1, 0},
+{ 3, s_7_7, -1, 1, 0},
+{ 3, s_7_8, -1, 1, 0},
+{ 2, s_7_9, -1, 1, 0},
+{ 3, s_7_10, -1, 1, 0},
+{ 3, s_7_11, -1, 2, 0},
+{ 2, s_7_12, -1, 1, 0},
+{ 3, s_7_13, -1, 1, 0},
+{ 3, s_7_14, -1, 1, 0},
+{ 3, s_7_15, -1, 1, 0},
+{ 4, s_7_16, 15, 1, 0},
+{ 5, s_7_17, 16, 1, 0}
};
static const symbol s_8_0[1] = { 'e' };
@@ -244,8 +244,8 @@ static const symbol s_8_1[1] = { 'l' };
static const struct among a_8[2] =
{
-/* 0 */ { 1, s_8_0, -1, 1, 0},
-/* 1 */ { 1, s_8_1, -1, 2, 0}
+{ 1, s_8_0, -1, 1, 0},
+{ 1, s_8_1, -1, 2, 0}
};
static const symbol s_9_0[7] = { 's', 'u', 'c', 'c', 'e', 'e', 'd' };
@@ -259,14 +259,14 @@ static const symbol s_9_7[6] = { 'o', 'u', 't', 'i', 'n', 'g' };
static const struct among a_9[8] =
{
-/* 0 */ { 7, s_9_0, -1, -1, 0},
-/* 1 */ { 7, s_9_1, -1, -1, 0},
-/* 2 */ { 6, s_9_2, -1, -1, 0},
-/* 3 */ { 7, s_9_3, -1, -1, 0},
-/* 4 */ { 6, s_9_4, -1, -1, 0},
-/* 5 */ { 7, s_9_5, -1, -1, 0},
-/* 6 */ { 7, s_9_6, -1, -1, 0},
-/* 7 */ { 6, s_9_7, -1, -1, 0}
+{ 7, s_9_0, -1, -1, 0},
+{ 7, s_9_1, -1, -1, 0},
+{ 6, s_9_2, -1, -1, 0},
+{ 7, s_9_3, -1, -1, 0},
+{ 6, s_9_4, -1, -1, 0},
+{ 7, s_9_5, -1, -1, 0},
+{ 7, s_9_6, -1, -1, 0},
+{ 6, s_9_7, -1, -1, 0}
};
static const symbol s_10_0[5] = { 'a', 'n', 'd', 'e', 's' };
@@ -290,24 +290,24 @@ static const symbol s_10_17[4] = { 'u', 'g', 'l', 'y' };
static const struct among a_10[18] =
{
-/* 0 */ { 5, s_10_0, -1, -1, 0},
-/* 1 */ { 5, s_10_1, -1, -1, 0},
-/* 2 */ { 4, s_10_2, -1, -1, 0},
-/* 3 */ { 6, s_10_3, -1, -1, 0},
-/* 4 */ { 5, s_10_4, -1, 3, 0},
-/* 5 */ { 5, s_10_5, -1, 9, 0},
-/* 6 */ { 6, s_10_6, -1, 7, 0},
-/* 7 */ { 4, s_10_7, -1, -1, 0},
-/* 8 */ { 4, s_10_8, -1, 6, 0},
-/* 9 */ { 5, s_10_9, -1, 4, 0},
-/* 10 */ { 4, s_10_10, -1, -1, 0},
-/* 11 */ { 4, s_10_11, -1, 10, 0},
-/* 12 */ { 6, s_10_12, -1, 11, 0},
-/* 13 */ { 5, s_10_13, -1, 2, 0},
-/* 14 */ { 4, s_10_14, -1, 1, 0},
-/* 15 */ { 3, s_10_15, -1, -1, 0},
-/* 16 */ { 5, s_10_16, -1, 5, 0},
-/* 17 */ { 4, s_10_17, -1, 8, 0}
+{ 5, s_10_0, -1, -1, 0},
+{ 5, s_10_1, -1, -1, 0},
+{ 4, s_10_2, -1, -1, 0},
+{ 6, s_10_3, -1, -1, 0},
+{ 5, s_10_4, -1, 3, 0},
+{ 5, s_10_5, -1, 9, 0},
+{ 6, s_10_6, -1, 7, 0},
+{ 4, s_10_7, -1, -1, 0},
+{ 4, s_10_8, -1, 6, 0},
+{ 5, s_10_9, -1, 4, 0},
+{ 4, s_10_10, -1, -1, 0},
+{ 4, s_10_11, -1, 10, 0},
+{ 6, s_10_12, -1, 11, 0},
+{ 5, s_10_13, -1, 2, 0},
+{ 4, s_10_14, -1, 1, 0},
+{ 3, s_10_15, -1, -1, 0},
+{ 5, s_10_16, -1, 5, 0},
+{ 4, s_10_17, -1, 8, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1 };
@@ -356,53 +356,52 @@ static const symbol s_36[] = { 'o', 'n', 'l', 'i' };
static const symbol s_37[] = { 's', 'i', 'n', 'g', 'l' };
static const symbol s_38[] = { 'y' };
-static int r_prelude(struct SN_env * z) { /* forwardmode */
- z->B[0] = 0; /* unset Y_found, line 26 */
- { int c1 = z->c; /* do, line 27 */
- z->bra = z->c; /* [, line 27 */
- if (z->c == z->l || z->p[z->c] != '\'') goto lab0; /* literal, line 27 */
+static int r_prelude(struct SN_env * z) {
+ z->I[2] = 0;
+ { int c1 = z->c;
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != '\'') goto lab0;
z->c++;
- z->ket = z->c; /* ], line 27 */
- { int ret = slice_del(z); /* delete, line 27 */
+ z->ket = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
z->c = c1;
}
- { int c2 = z->c; /* do, line 28 */
- z->bra = z->c; /* [, line 28 */
- if (z->c == z->l || z->p[z->c] != 'y') goto lab1; /* literal, line 28 */
+ { int c2 = z->c;
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab1;
z->c++;
- z->ket = z->c; /* ], line 28 */
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 28 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
- z->B[0] = 1; /* set Y_found, line 28 */
+ z->I[2] = 1;
lab1:
z->c = c2;
}
- { int c3 = z->c; /* do, line 29 */
-/* repeat, line 29 */
-
- while(1) { int c4 = z->c;
- while(1) { /* goto, line 29 */
+ { int c3 = z->c;
+ while(1) {
+ int c4 = z->c;
+ while(1) {
int c5 = z->c;
- if (in_grouping(z, g_v, 97, 121, 0)) goto lab4; /* grouping v, line 29 */
- z->bra = z->c; /* [, line 29 */
- if (z->c == z->l || z->p[z->c] != 'y') goto lab4; /* literal, line 29 */
+ if (in_grouping(z, g_v, 97, 121, 0)) goto lab4;
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab4;
z->c++;
- z->ket = z->c; /* ], line 29 */
+ z->ket = z->c;
z->c = c5;
break;
lab4:
z->c = c5;
if (z->c >= z->l) goto lab3;
- z->c++; /* goto, line 29 */
+ z->c++;
}
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 29 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
- z->B[0] = 1; /* set Y_found, line 29 */
+ z->I[2] = 1;
continue;
lab3:
z->c = c4;
@@ -413,109 +412,107 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 33 */
- z->I[1] = z->l; /* $p2 = , line 34 */
- { int c1 = z->c; /* do, line 35 */
- { int c2 = z->c; /* or, line 41 */
- if (z->c + 4 >= z->l || z->p[z->c + 4] >> 5 != 3 || !((2375680 >> (z->p[z->c + 4] & 0x1f)) & 1)) goto lab2; /* among, line 36 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (z->c + 4 >= z->l || z->p[z->c + 4] >> 5 != 3 || !((2375680 >> (z->p[z->c + 4] & 0x1f)) & 1)) goto lab2;
if (!(find_among(z, a_0, 3))) goto lab2;
goto lab1;
lab2:
z->c = c2;
- { /* gopast */ /* grouping v, line 41 */
+ {
int ret = out_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- { /* gopast */ /* non v, line 41 */
+ {
int ret = in_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
}
lab1:
- z->I[0] = z->c; /* setmark p1, line 42 */
- { /* gopast */ /* grouping v, line 43 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- { /* gopast */ /* non v, line 43 */
+ {
int ret = in_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p2, line 43 */
+ z->I[0] = z->c;
lab0:
z->c = c1;
}
return 1;
}
-static int r_shortv(struct SN_env * z) { /* backwardmode */
- { int m1 = z->l - z->c; (void)m1; /* or, line 51 */
- if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) goto lab1; /* non v_WXY, line 50 */
- if (in_grouping_b(z, g_v, 97, 121, 0)) goto lab1; /* grouping v, line 50 */
- if (out_grouping_b(z, g_v, 97, 121, 0)) goto lab1; /* non v, line 50 */
+static int r_shortv(struct SN_env * z) {
+ { int m1 = z->l - z->c; (void)m1;
+ if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) goto lab1;
+ if (in_grouping_b(z, g_v, 97, 121, 0)) goto lab1;
+ if (out_grouping_b(z, g_v, 97, 121, 0)) goto lab1;
goto lab0;
lab1:
z->c = z->l - m1;
- if (out_grouping_b(z, g_v, 97, 121, 0)) return 0; /* non v, line 52 */
- if (in_grouping_b(z, g_v, 97, 121, 0)) return 0; /* grouping v, line 52 */
- if (z->c > z->lb) return 0; /* atlimit, line 52 */
+ if (out_grouping_b(z, g_v, 97, 121, 0)) return 0;
+ if (in_grouping_b(z, g_v, 97, 121, 0)) return 0;
+ if (z->c > z->lb) return 0;
}
lab0:
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 55 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 56 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_Step_1a(struct SN_env * z) { /* backwardmode */
+static int r_Step_1a(struct SN_env * z) {
int among_var;
- { int m1 = z->l - z->c; (void)m1; /* try, line 59 */
- z->ket = z->c; /* [, line 60 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 39 && z->p[z->c - 1] != 115)) { z->c = z->l - m1; goto lab0; } /* substring, line 60 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 39 && z->p[z->c - 1] != 115)) { z->c = z->l - m1; goto lab0; }
if (!(find_among_b(z, a_1, 3))) { z->c = z->l - m1; goto lab0; }
- z->bra = z->c; /* ], line 60 */
- { int ret = slice_del(z); /* delete, line 62 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
;
}
- z->ket = z->c; /* [, line 65 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 115)) return 0; /* substring, line 65 */
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 115)) return 0;
among_var = find_among_b(z, a_2, 6);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 65 */
- switch (among_var) { /* among, line 65 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 2, s_2); /* <-, line 66 */
+ { int ret = slice_from_s(z, 2, s_2);
if (ret < 0) return ret;
}
break;
case 2:
- { int m2 = z->l - z->c; (void)m2; /* or, line 68 */
- { int ret = z->c - 2; /* hop, line 68 */
- if (z->lb > ret || ret > z->l) goto lab2;
- z->c = ret;
- }
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 68 */
+ { int m2 = z->l - z->c; (void)m2;
+z->c = z->c - 2;
+ if (z->c < z->lb) goto lab2;
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = z->l - m2;
- { int ret = slice_from_s(z, 2, s_4); /* <-, line 68 */
+ { int ret = slice_from_s(z, 2, s_4);
if (ret < 0) return ret;
}
}
@@ -523,13 +520,13 @@ static int r_Step_1a(struct SN_env * z) { /* backwardmode */
break;
case 3:
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 69 */
- { /* gopast */ /* grouping v, line 69 */
+ z->c--;
+ {
int ret = out_grouping_b(z, g_v, 97, 121, 1);
if (ret < 0) return 0;
z->c -= ret;
}
- { int ret = slice_del(z); /* delete, line 69 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -537,70 +534,70 @@ static int r_Step_1a(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_1b(struct SN_env * z) { /* backwardmode */
+static int r_Step_1b(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 75 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((33554576 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 75 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((33554576 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_4, 6);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 75 */
- switch (among_var) { /* among, line 75 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R1(z); /* call R1, line 77 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 2, s_5); /* <-, line 77 */
+ { int ret = slice_from_s(z, 2, s_5);
if (ret < 0) return ret;
}
break;
case 2:
- { int m_test1 = z->l - z->c; /* test, line 80 */
- { /* gopast */ /* grouping v, line 80 */
+ { int m_test1 = z->l - z->c;
+ {
int ret = out_grouping_b(z, g_v, 97, 121, 1);
if (ret < 0) return 0;
z->c -= ret;
}
z->c = z->l - m_test1;
}
- { int ret = slice_del(z); /* delete, line 80 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m_test2 = z->l - z->c; /* test, line 81 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else /* substring, line 81 */
+ { int m_test2 = z->l - z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else
among_var = find_among_b(z, a_3, 13);
if (!(among_var)) return 0;
z->c = z->l - m_test2;
}
- switch (among_var) { /* among, line 81 */
+ switch (among_var) {
case 1:
{ int ret;
{ int saved_c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_6); /* <+, line 83 */
+ ret = insert_s(z, z->c, z->c, 1, s_6);
z->c = saved_c;
}
if (ret < 0) return ret;
}
break;
case 2:
- z->ket = z->c; /* [, line 86 */
+ z->ket = z->c;
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 86 */
- z->bra = z->c; /* ], line 86 */
- { int ret = slice_del(z); /* delete, line 86 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- if (z->c != z->I[0]) return 0; /* atmark, line 87 */
- { int m_test3 = z->l - z->c; /* test, line 87 */
- { int ret = r_shortv(z); /* call shortv, line 87 */
+ if (z->c != z->I[1]) return 0;
+ { int m_test3 = z->l - z->c;
+ { int ret = r_shortv(z);
if (ret <= 0) return ret;
}
z->c = z->l - m_test3;
}
{ int ret;
{ int saved_c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_7); /* <+, line 87 */
+ ret = insert_s(z, z->c, z->c, 1, s_7);
z->c = saved_c;
}
if (ret < 0) return ret;
@@ -612,116 +609,116 @@ static int r_Step_1b(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_1c(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 94 */
- { int m1 = z->l - z->c; (void)m1; /* or, line 94 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1; /* literal, line 94 */
+static int r_Step_1c(struct SN_env * z) {
+ z->ket = z->c;
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0; /* literal, line 94 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0;
z->c--;
}
lab0:
- z->bra = z->c; /* ], line 94 */
- if (out_grouping_b(z, g_v, 97, 121, 0)) return 0; /* non v, line 95 */
- /* not, line 95 */
- if (z->c > z->lb) goto lab2; /* atlimit, line 95 */
+ z->bra = z->c;
+ if (out_grouping_b(z, g_v, 97, 121, 0)) return 0;
+
+ if (z->c > z->lb) goto lab2;
return 0;
lab2:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 96 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Step_2(struct SN_env * z) { /* backwardmode */
+static int r_Step_2(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 100 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 100 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_5, 24);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 100 */
- { int ret = r_R1(z); /* call R1, line 100 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 100 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 4, s_9); /* <-, line 101 */
+ { int ret = slice_from_s(z, 4, s_9);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 4, s_10); /* <-, line 102 */
+ { int ret = slice_from_s(z, 4, s_10);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 4, s_11); /* <-, line 103 */
+ { int ret = slice_from_s(z, 4, s_11);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 4, s_12); /* <-, line 104 */
+ { int ret = slice_from_s(z, 4, s_12);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 3, s_13); /* <-, line 105 */
+ { int ret = slice_from_s(z, 3, s_13);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 3, s_14); /* <-, line 107 */
+ { int ret = slice_from_s(z, 3, s_14);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = slice_from_s(z, 3, s_15); /* <-, line 109 */
+ { int ret = slice_from_s(z, 3, s_15);
if (ret < 0) return ret;
}
break;
case 8:
- { int ret = slice_from_s(z, 2, s_16); /* <-, line 111 */
+ { int ret = slice_from_s(z, 2, s_16);
if (ret < 0) return ret;
}
break;
case 9:
- { int ret = slice_from_s(z, 3, s_17); /* <-, line 112 */
+ { int ret = slice_from_s(z, 3, s_17);
if (ret < 0) return ret;
}
break;
case 10:
- { int ret = slice_from_s(z, 3, s_18); /* <-, line 114 */
+ { int ret = slice_from_s(z, 3, s_18);
if (ret < 0) return ret;
}
break;
case 11:
- { int ret = slice_from_s(z, 3, s_19); /* <-, line 116 */
+ { int ret = slice_from_s(z, 3, s_19);
if (ret < 0) return ret;
}
break;
case 12:
- { int ret = slice_from_s(z, 3, s_20); /* <-, line 118 */
+ { int ret = slice_from_s(z, 3, s_20);
if (ret < 0) return ret;
}
break;
case 13:
- if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0; /* literal, line 119 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
z->c--;
- { int ret = slice_from_s(z, 2, s_21); /* <-, line 119 */
+ { int ret = slice_from_s(z, 2, s_21);
if (ret < 0) return ret;
}
break;
case 14:
- { int ret = slice_from_s(z, 4, s_22); /* <-, line 121 */
+ { int ret = slice_from_s(z, 4, s_22);
if (ret < 0) return ret;
}
break;
case 15:
- if (in_grouping_b(z, g_valid_LI, 99, 116, 0)) return 0; /* grouping valid_LI, line 122 */
- { int ret = slice_del(z); /* delete, line 122 */
+ if (in_grouping_b(z, g_valid_LI, 99, 116, 0)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -729,47 +726,47 @@ static int r_Step_2(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_3(struct SN_env * z) { /* backwardmode */
+static int r_Step_3(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 127 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 127 */
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_6, 9);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 127 */
- { int ret = r_R1(z); /* call R1, line 127 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 127 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 4, s_23); /* <-, line 128 */
+ { int ret = slice_from_s(z, 4, s_23);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 3, s_24); /* <-, line 129 */
+ { int ret = slice_from_s(z, 3, s_24);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 2, s_25); /* <-, line 130 */
+ { int ret = slice_from_s(z, 2, s_25);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 2, s_26); /* <-, line 132 */
+ { int ret = slice_from_s(z, 2, s_26);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_del(z); /* delete, line 134 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = r_R2(z); /* call R2, line 136 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 136 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -777,34 +774,34 @@ static int r_Step_3(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_4(struct SN_env * z) { /* backwardmode */
+static int r_Step_4(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 141 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1864232 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 141 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1864232 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_7, 18);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 141 */
- { int ret = r_R2(z); /* call R2, line 141 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 141 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 144 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int m1 = z->l - z->c; (void)m1; /* or, line 145 */
- if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1; /* literal, line 145 */
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0; /* literal, line 145 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0;
z->c--;
}
lab0:
- { int ret = slice_del(z); /* delete, line 145 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -812,28 +809,28 @@ static int r_Step_4(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_5(struct SN_env * z) { /* backwardmode */
+static int r_Step_5(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 150 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) return 0; /* substring, line 150 */
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) return 0;
among_var = find_among_b(z, a_8, 2);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 150 */
- switch (among_var) { /* among, line 150 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int m1 = z->l - z->c; (void)m1; /* or, line 151 */
- { int ret = r_R2(z); /* call R2, line 151 */
+ { int m1 = z->l - z->c; (void)m1;
+ { int ret = r_R2(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
goto lab0;
lab1:
z->c = z->l - m1;
- { int ret = r_R1(z); /* call R1, line 151 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int m2 = z->l - z->c; (void)m2; /* not, line 151 */
- { int ret = r_shortv(z); /* call shortv, line 151 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_shortv(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
@@ -843,17 +840,17 @@ static int r_Step_5(struct SN_env * z) { /* backwardmode */
}
}
lab0:
- { int ret = slice_del(z); /* delete, line 151 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 152 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0; /* literal, line 152 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
z->c--;
- { int ret = slice_del(z); /* delete, line 152 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -861,76 +858,76 @@ static int r_Step_5(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_exception2(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 158 */
- if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0; /* substring, line 158 */
+static int r_exception2(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0;
if (!(find_among_b(z, a_9, 8))) return 0;
- z->bra = z->c; /* ], line 158 */
- if (z->c > z->lb) return 0; /* atlimit, line 158 */
+ z->bra = z->c;
+ if (z->c > z->lb) return 0;
return 1;
}
-static int r_exception1(struct SN_env * z) { /* forwardmode */
+static int r_exception1(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 170 */
- if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((42750482 >> (z->p[z->c + 2] & 0x1f)) & 1)) return 0; /* substring, line 170 */
+ z->bra = z->c;
+ if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((42750482 >> (z->p[z->c + 2] & 0x1f)) & 1)) return 0;
among_var = find_among(z, a_10, 18);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 170 */
- if (z->c < z->l) return 0; /* atlimit, line 170 */
- switch (among_var) { /* among, line 170 */
+ z->ket = z->c;
+ if (z->c < z->l) return 0;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 3, s_27); /* <-, line 174 */
+ { int ret = slice_from_s(z, 3, s_27);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 3, s_28); /* <-, line 175 */
+ { int ret = slice_from_s(z, 3, s_28);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 3, s_29); /* <-, line 176 */
+ { int ret = slice_from_s(z, 3, s_29);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 3, s_30); /* <-, line 177 */
+ { int ret = slice_from_s(z, 3, s_30);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 3, s_31); /* <-, line 178 */
+ { int ret = slice_from_s(z, 3, s_31);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 3, s_32); /* <-, line 182 */
+ { int ret = slice_from_s(z, 3, s_32);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = slice_from_s(z, 5, s_33); /* <-, line 183 */
+ { int ret = slice_from_s(z, 5, s_33);
if (ret < 0) return ret;
}
break;
case 8:
- { int ret = slice_from_s(z, 4, s_34); /* <-, line 184 */
+ { int ret = slice_from_s(z, 4, s_34);
if (ret < 0) return ret;
}
break;
case 9:
- { int ret = slice_from_s(z, 5, s_35); /* <-, line 185 */
+ { int ret = slice_from_s(z, 5, s_35);
if (ret < 0) return ret;
}
break;
case 10:
- { int ret = slice_from_s(z, 4, s_36); /* <-, line 186 */
+ { int ret = slice_from_s(z, 4, s_36);
if (ret < 0) return ret;
}
break;
case 11:
- { int ret = slice_from_s(z, 5, s_37); /* <-, line 187 */
+ { int ret = slice_from_s(z, 5, s_37);
if (ret < 0) return ret;
}
break;
@@ -938,25 +935,24 @@ static int r_exception1(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
- if (!(z->B[0])) return 0; /* Boolean test Y_found, line 203 */
-/* repeat, line 203 */
-
- while(1) { int c1 = z->c;
- while(1) { /* goto, line 203 */
+static int r_postlude(struct SN_env * z) {
+ if (!(z->I[2])) return 0;
+ while(1) {
+ int c1 = z->c;
+ while(1) {
int c2 = z->c;
- z->bra = z->c; /* [, line 203 */
- if (z->c == z->l || z->p[z->c] != 'Y') goto lab1; /* literal, line 203 */
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'Y') goto lab1;
z->c++;
- z->ket = z->c; /* ], line 203 */
+ z->ket = z->c;
z->c = c2;
break;
lab1:
z->c = c2;
if (z->c >= z->l) goto lab0;
- z->c++; /* goto, line 203 */
+ z->c++;
}
- { int ret = slice_from_s(z, 1, s_38); /* <-, line 203 */
+ { int ret = slice_from_s(z, 1, s_38);
if (ret < 0) return ret;
}
continue;
@@ -967,20 +963,18 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern int english_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
- { int c1 = z->c; /* or, line 207 */
- { int ret = r_exception1(z); /* call exception1, line 207 */
+extern int english_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_exception1(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
goto lab0;
lab1:
z->c = c1;
- { int c2 = z->c; /* not, line 208 */
- { int ret = z->c + 3; /* hop, line 208 */
- if (0 > ret || ret > z->l) goto lab3;
- z->c = ret;
- }
+ { int c2 = z->c;
+z->c = z->c + 3;
+ if (z->c > z->l) goto lab3;
goto lab2;
lab3:
z->c = c2;
@@ -988,62 +982,62 @@ extern int english_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
goto lab0;
lab2:
z->c = c1;
- /* do, line 209 */
- { int ret = r_prelude(z); /* call prelude, line 209 */
+
+ { int ret = r_prelude(z);
if (ret < 0) return ret;
}
- /* do, line 210 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 210 */
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 211 */
+ z->lb = z->c; z->c = z->l;
- { int m3 = z->l - z->c; (void)m3; /* do, line 213 */
- { int ret = r_Step_1a(z); /* call Step_1a, line 213 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_Step_1a(z);
if (ret < 0) return ret;
}
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_exception2(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
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 */
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_Step_1b(z);
if (ret < 0) return ret;
}
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 */
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_Step_1c(z);
if (ret < 0) return ret;
}
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 */
+ { int m7 = z->l - z->c; (void)m7;
+ { int ret = r_Step_2(z);
if (ret < 0) return ret;
}
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 */
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_Step_3(z);
if (ret < 0) return ret;
}
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 */
+ { int m9 = z->l - z->c; (void)m9;
+ { int ret = r_Step_4(z);
if (ret < 0) return ret;
}
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 */
+ { int m10 = z->l - z->c; (void)m10;
+ { int ret = r_Step_5(z);
if (ret < 0) return ret;
}
z->c = z->l - m10;
@@ -1051,8 +1045,8 @@ extern int english_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
}
lab4:
z->c = z->lb;
- { int c11 = z->c; /* do, line 227 */
- { int ret = r_postlude(z); /* call postlude, line 227 */
+ { int c11 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c11;
@@ -1062,7 +1056,7 @@ extern int english_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * english_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); }
+extern struct SN_env * english_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void english_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_finnish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c
index 3bb6615a68c44..70eae3a3fa380 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -45,16 +45,16 @@ static const symbol s_0_9[2] = { 'k', 0xF6 };
static const struct among a_0[10] =
{
-/* 0 */ { 2, s_0_0, -1, 1, 0},
-/* 1 */ { 3, s_0_1, -1, 2, 0},
-/* 2 */ { 4, s_0_2, -1, 1, 0},
-/* 3 */ { 3, s_0_3, -1, 1, 0},
-/* 4 */ { 3, s_0_4, -1, 1, 0},
-/* 5 */ { 3, s_0_5, -1, 1, 0},
-/* 6 */ { 4, s_0_6, -1, 1, 0},
-/* 7 */ { 2, s_0_7, -1, 1, 0},
-/* 8 */ { 2, s_0_8, -1, 1, 0},
-/* 9 */ { 2, s_0_9, -1, 1, 0}
+{ 2, s_0_0, -1, 1, 0},
+{ 3, s_0_1, -1, 2, 0},
+{ 4, s_0_2, -1, 1, 0},
+{ 3, s_0_3, -1, 1, 0},
+{ 3, s_0_4, -1, 1, 0},
+{ 3, s_0_5, -1, 1, 0},
+{ 4, s_0_6, -1, 1, 0},
+{ 2, s_0_7, -1, 1, 0},
+{ 2, s_0_8, -1, 1, 0},
+{ 2, s_0_9, -1, 1, 0}
};
static const symbol s_1_0[3] = { 'l', 'l', 'a' };
@@ -66,12 +66,12 @@ static const symbol s_1_5[3] = { 's', 't', 'a' };
static const struct among a_1[6] =
{
-/* 0 */ { 3, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0},
-/* 2 */ { 3, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0},
-/* 4 */ { 3, s_1_4, 3, -1, 0},
-/* 5 */ { 3, s_1_5, 3, -1, 0}
+{ 3, s_1_0, -1, -1, 0},
+{ 2, s_1_1, -1, -1, 0},
+{ 3, s_1_2, -1, -1, 0},
+{ 2, s_1_3, -1, -1, 0},
+{ 3, s_1_4, 3, -1, 0},
+{ 3, s_1_5, 3, -1, 0}
};
static const symbol s_2_0[3] = { 'l', 'l', 0xE4 };
@@ -83,12 +83,12 @@ static const symbol s_2_5[3] = { 's', 't', 0xE4 };
static const struct among a_2[6] =
{
-/* 0 */ { 3, s_2_0, -1, -1, 0},
-/* 1 */ { 2, s_2_1, -1, -1, 0},
-/* 2 */ { 3, s_2_2, -1, -1, 0},
-/* 3 */ { 2, s_2_3, -1, -1, 0},
-/* 4 */ { 3, s_2_4, 3, -1, 0},
-/* 5 */ { 3, s_2_5, 3, -1, 0}
+{ 3, s_2_0, -1, -1, 0},
+{ 2, s_2_1, -1, -1, 0},
+{ 3, s_2_2, -1, -1, 0},
+{ 2, s_2_3, -1, -1, 0},
+{ 3, s_2_4, 3, -1, 0},
+{ 3, s_2_5, 3, -1, 0}
};
static const symbol s_3_0[3] = { 'l', 'l', 'e' };
@@ -96,8 +96,8 @@ static const symbol s_3_1[3] = { 'i', 'n', 'e' };
static const struct among a_3[2] =
{
-/* 0 */ { 3, s_3_0, -1, -1, 0},
-/* 1 */ { 3, s_3_1, -1, -1, 0}
+{ 3, s_3_0, -1, -1, 0},
+{ 3, s_3_1, -1, -1, 0}
};
static const symbol s_4_0[3] = { 'n', 's', 'a' };
@@ -112,15 +112,15 @@ static const symbol s_4_8[3] = { 'n', 's', 0xE4 };
static const struct among a_4[9] =
{
-/* 0 */ { 3, s_4_0, -1, 3, 0},
-/* 1 */ { 3, s_4_1, -1, 3, 0},
-/* 2 */ { 3, s_4_2, -1, 3, 0},
-/* 3 */ { 2, s_4_3, -1, 2, 0},
-/* 4 */ { 2, s_4_4, -1, 1, 0},
-/* 5 */ { 2, s_4_5, -1, 4, 0},
-/* 6 */ { 2, s_4_6, -1, 6, 0},
-/* 7 */ { 2, s_4_7, -1, 5, 0},
-/* 8 */ { 3, s_4_8, -1, 3, 0}
+{ 3, s_4_0, -1, 3, 0},
+{ 3, s_4_1, -1, 3, 0},
+{ 3, s_4_2, -1, 3, 0},
+{ 2, s_4_3, -1, 2, 0},
+{ 2, s_4_4, -1, 1, 0},
+{ 2, s_4_5, -1, 4, 0},
+{ 2, s_4_6, -1, 6, 0},
+{ 2, s_4_7, -1, 5, 0},
+{ 3, s_4_8, -1, 3, 0}
};
static const symbol s_5_0[2] = { 'a', 'a' };
@@ -133,13 +133,13 @@ static const symbol s_5_6[2] = { 0xF6, 0xF6 };
static const struct among a_5[7] =
{
-/* 0 */ { 2, s_5_0, -1, -1, 0},
-/* 1 */ { 2, s_5_1, -1, -1, 0},
-/* 2 */ { 2, s_5_2, -1, -1, 0},
-/* 3 */ { 2, s_5_3, -1, -1, 0},
-/* 4 */ { 2, s_5_4, -1, -1, 0},
-/* 5 */ { 2, s_5_5, -1, -1, 0},
-/* 6 */ { 2, s_5_6, -1, -1, 0}
+{ 2, s_5_0, -1, -1, 0},
+{ 2, s_5_1, -1, -1, 0},
+{ 2, s_5_2, -1, -1, 0},
+{ 2, s_5_3, -1, -1, 0},
+{ 2, s_5_4, -1, -1, 0},
+{ 2, s_5_5, -1, -1, 0},
+{ 2, s_5_6, -1, -1, 0}
};
static const symbol s_6_0[1] = { 'a' };
@@ -175,36 +175,36 @@ static const symbol s_6_29[3] = { 't', 't', 0xE4 };
static const struct among a_6[30] =
{
-/* 0 */ { 1, s_6_0, -1, 8, 0},
-/* 1 */ { 3, s_6_1, 0, -1, 0},
-/* 2 */ { 2, s_6_2, 0, -1, 0},
-/* 3 */ { 3, s_6_3, 0, -1, 0},
-/* 4 */ { 2, s_6_4, 0, -1, 0},
-/* 5 */ { 3, s_6_5, 4, -1, 0},
-/* 6 */ { 3, s_6_6, 4, -1, 0},
-/* 7 */ { 3, s_6_7, 4, 2, 0},
-/* 8 */ { 3, s_6_8, -1, -1, 0},
-/* 9 */ { 3, s_6_9, -1, -1, 0},
-/* 10 */ { 3, s_6_10, -1, -1, 0},
-/* 11 */ { 1, s_6_11, -1, 7, 0},
-/* 12 */ { 3, s_6_12, 11, 1, 0},
-/* 13 */ { 3, s_6_13, 11, -1, r_VI},
-/* 14 */ { 4, s_6_14, 11, -1, r_LONG},
-/* 15 */ { 3, s_6_15, 11, 2, 0},
-/* 16 */ { 4, s_6_16, 11, -1, r_VI},
-/* 17 */ { 3, s_6_17, 11, 3, 0},
-/* 18 */ { 4, s_6_18, 11, -1, r_VI},
-/* 19 */ { 3, s_6_19, 11, 4, 0},
-/* 20 */ { 3, s_6_20, 11, 5, 0},
-/* 21 */ { 3, s_6_21, 11, 6, 0},
-/* 22 */ { 1, s_6_22, -1, 8, 0},
-/* 23 */ { 3, s_6_23, 22, -1, 0},
-/* 24 */ { 2, s_6_24, 22, -1, 0},
-/* 25 */ { 3, s_6_25, 22, -1, 0},
-/* 26 */ { 2, s_6_26, 22, -1, 0},
-/* 27 */ { 3, s_6_27, 26, -1, 0},
-/* 28 */ { 3, s_6_28, 26, -1, 0},
-/* 29 */ { 3, s_6_29, 26, 2, 0}
+{ 1, s_6_0, -1, 8, 0},
+{ 3, s_6_1, 0, -1, 0},
+{ 2, s_6_2, 0, -1, 0},
+{ 3, s_6_3, 0, -1, 0},
+{ 2, s_6_4, 0, -1, 0},
+{ 3, s_6_5, 4, -1, 0},
+{ 3, s_6_6, 4, -1, 0},
+{ 3, s_6_7, 4, 2, 0},
+{ 3, s_6_8, -1, -1, 0},
+{ 3, s_6_9, -1, -1, 0},
+{ 3, s_6_10, -1, -1, 0},
+{ 1, s_6_11, -1, 7, 0},
+{ 3, s_6_12, 11, 1, 0},
+{ 3, s_6_13, 11, -1, r_VI},
+{ 4, s_6_14, 11, -1, r_LONG},
+{ 3, s_6_15, 11, 2, 0},
+{ 4, s_6_16, 11, -1, r_VI},
+{ 3, s_6_17, 11, 3, 0},
+{ 4, s_6_18, 11, -1, r_VI},
+{ 3, s_6_19, 11, 4, 0},
+{ 3, s_6_20, 11, 5, 0},
+{ 3, s_6_21, 11, 6, 0},
+{ 1, s_6_22, -1, 8, 0},
+{ 3, s_6_23, 22, -1, 0},
+{ 2, s_6_24, 22, -1, 0},
+{ 3, s_6_25, 22, -1, 0},
+{ 2, s_6_26, 22, -1, 0},
+{ 3, s_6_27, 26, -1, 0},
+{ 3, s_6_28, 26, -1, 0},
+{ 3, s_6_29, 26, 2, 0}
};
static const symbol s_7_0[3] = { 'e', 'j', 'a' };
@@ -224,20 +224,20 @@ static const symbol s_7_13[4] = { 'i', 'm', 'p', 0xE4 };
static const struct among a_7[14] =
{
-/* 0 */ { 3, s_7_0, -1, -1, 0},
-/* 1 */ { 3, s_7_1, -1, 1, 0},
-/* 2 */ { 4, s_7_2, 1, -1, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0},
-/* 4 */ { 4, s_7_4, 3, -1, 0},
-/* 5 */ { 3, s_7_5, -1, 1, 0},
-/* 6 */ { 4, s_7_6, 5, -1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 4, s_7_8, 7, -1, 0},
-/* 9 */ { 3, s_7_9, -1, -1, 0},
-/* 10 */ { 3, s_7_10, -1, 1, 0},
-/* 11 */ { 4, s_7_11, 10, -1, 0},
-/* 12 */ { 3, s_7_12, -1, 1, 0},
-/* 13 */ { 4, s_7_13, 12, -1, 0}
+{ 3, s_7_0, -1, -1, 0},
+{ 3, s_7_1, -1, 1, 0},
+{ 4, s_7_2, 1, -1, 0},
+{ 3, s_7_3, -1, 1, 0},
+{ 4, s_7_4, 3, -1, 0},
+{ 3, s_7_5, -1, 1, 0},
+{ 4, s_7_6, 5, -1, 0},
+{ 3, s_7_7, -1, 1, 0},
+{ 4, s_7_8, 7, -1, 0},
+{ 3, s_7_9, -1, -1, 0},
+{ 3, s_7_10, -1, 1, 0},
+{ 4, s_7_11, 10, -1, 0},
+{ 3, s_7_12, -1, 1, 0},
+{ 4, s_7_13, 12, -1, 0}
};
static const symbol s_8_0[1] = { 'i' };
@@ -245,8 +245,8 @@ static const symbol s_8_1[1] = { 'j' };
static const struct among a_8[2] =
{
-/* 0 */ { 1, s_8_0, -1, -1, 0},
-/* 1 */ { 1, s_8_1, -1, -1, 0}
+{ 1, s_8_0, -1, -1, 0},
+{ 1, s_8_1, -1, -1, 0}
};
static const symbol s_9_0[3] = { 'm', 'm', 'a' };
@@ -254,8 +254,8 @@ static const symbol s_9_1[4] = { 'i', 'm', 'm', 'a' };
static const struct among a_9[2] =
{
-/* 0 */ { 3, s_9_0, -1, 1, 0},
-/* 1 */ { 4, s_9_1, 0, -1, 0}
+{ 3, s_9_0, -1, 1, 0},
+{ 4, s_9_1, 0, -1, 0}
};
static const unsigned char g_AEI[] = { 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 };
@@ -274,118 +274,118 @@ static const symbol s_2[] = { 'i', 'e' };
static const symbol s_3[] = { 'p', 'o' };
static const symbol s_4[] = { 'p', 'o' };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 44 */
- z->I[1] = z->l; /* $p2 = , line 45 */
- if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 47 */
- { /* gopast */ /* non V1, line 47 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0;
+ {
int ret = in_grouping(z, g_V1, 97, 246, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 47 */
- if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 48 */
- { /* gopast */ /* non V1, line 48 */
+ z->I[1] = z->c;
+ if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0;
+ {
int ret = in_grouping(z, g_V1, 97, 246, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p2, line 48 */
+ z->I[0] = z->c;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 53 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_particle_etc(struct SN_env * z) { /* backwardmode */
+static int r_particle_etc(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 56 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 56 */
- among_var = find_among_b(z, a_0, 10); /* substring, line 56 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ among_var = find_among_b(z, a_0, 10);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 56 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 57 */
+ switch (among_var) {
case 1:
- if (in_grouping_b(z, g_particle_end, 97, 246, 0)) return 0; /* grouping particle_end, line 63 */
+ if (in_grouping_b(z, g_particle_end, 97, 246, 0)) return 0;
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 65 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
break;
}
- { int ret = slice_del(z); /* delete, line 67 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_possessive(struct SN_env * z) { /* backwardmode */
+static int r_possessive(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 70 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 70 */
- among_var = find_among_b(z, a_4, 9); /* substring, line 70 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ among_var = find_among_b(z, a_4, 9);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 70 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 71 */
+ switch (among_var) {
case 1:
- { int m2 = z->l - z->c; (void)m2; /* not, line 73 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'k') goto lab0; /* literal, line 73 */
+ { int m2 = z->l - z->c; (void)m2;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'k') goto lab0;
z->c--;
return 0;
lab0:
z->c = z->l - m2;
}
- { int ret = slice_del(z); /* delete, line 73 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 75 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, line 75 */
- if (!(eq_s_b(z, 3, s_0))) return 0; /* literal, line 75 */
- z->bra = z->c; /* ], line 75 */
- { int ret = slice_from_s(z, 3, s_1); /* <-, line 75 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 3, s_0))) return 0;
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 3, s_1);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 79 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 4:
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 97) return 0; /* among, line 82 */
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 97) return 0;
if (!(find_among_b(z, a_1, 6))) return 0;
- { int ret = slice_del(z); /* delete, line 82 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 5:
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 228) return 0; /* among, line 84 */
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 228) return 0;
if (!(find_among_b(z, a_2, 6))) return 0;
- { int ret = slice_del(z); /* delete, line 85 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 6:
- if (z->c - 2 <= z->lb || z->p[z->c - 1] != 101) return 0; /* among, line 87 */
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] != 101) return 0;
if (!(find_among_b(z, a_3, 2))) return 0;
- { int ret = slice_del(z); /* delete, line 87 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -393,244 +393,244 @@ static int r_possessive(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_LONG(struct SN_env * z) { /* backwardmode */
- if (!(find_among_b(z, a_5, 7))) return 0; /* among, line 92 */
+static int r_LONG(struct SN_env * z) {
+ if (!(find_among_b(z, a_5, 7))) return 0;
return 1;
}
-static int r_VI(struct SN_env * z) { /* backwardmode */
- if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0; /* literal, line 94 */
+static int r_VI(struct SN_env * z) {
+ if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
z->c--;
- if (in_grouping_b(z, g_V2, 97, 246, 0)) return 0; /* grouping V2, line 94 */
+ if (in_grouping_b(z, g_V2, 97, 246, 0)) return 0;
return 1;
}
-static int r_case_ending(struct SN_env * z) { /* backwardmode */
+static int r_case_ending(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 97 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 97 */
- among_var = find_among_b(z, a_6, 30); /* substring, line 97 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ among_var = find_among_b(z, a_6, 30);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 97 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 98 */
+ switch (among_var) {
case 1:
- if (z->c <= z->lb || z->p[z->c - 1] != 'a') return 0; /* literal, line 99 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'a') return 0;
z->c--;
break;
case 2:
- if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0; /* literal, line 100 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
break;
case 3:
- if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0; /* literal, line 101 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
z->c--;
break;
case 4:
- if (z->c <= z->lb || z->p[z->c - 1] != 'o') return 0; /* literal, line 102 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'o') return 0;
z->c--;
break;
case 5:
- if (z->c <= z->lb || z->p[z->c - 1] != 0xE4) return 0; /* literal, line 103 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xE4) return 0;
z->c--;
break;
case 6:
- if (z->c <= z->lb || z->p[z->c - 1] != 0xF6) return 0; /* literal, line 104 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xF6) return 0;
z->c--;
break;
case 7:
- { int m2 = z->l - z->c; (void)m2; /* try, line 112 */
- { int m3 = z->l - z->c; (void)m3; /* and, line 114 */
- { int m4 = z->l - z->c; (void)m4; /* or, line 113 */
- { int ret = r_LONG(z); /* call LONG, line 112 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int m3 = z->l - z->c; (void)m3;
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_LONG(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = z->l - m4;
- if (!(eq_s_b(z, 2, s_2))) { z->c = z->l - m2; goto lab0; } /* literal, line 113 */
+ if (!(eq_s_b(z, 2, s_2))) { z->c = z->l - m2; goto lab0; }
}
lab1:
z->c = z->l - m3;
if (z->c <= z->lb) { z->c = z->l - m2; goto lab0; }
- z->c--; /* next, line 114 */
+ z->c--;
}
- z->bra = z->c; /* ], line 114 */
+ z->bra = z->c;
lab0:
;
}
break;
case 8:
- if (in_grouping_b(z, g_V1, 97, 246, 0)) return 0; /* grouping V1, line 120 */
- if (in_grouping_b(z, g_C, 98, 122, 0)) return 0; /* grouping C, line 120 */
+ if (in_grouping_b(z, g_V1, 97, 246, 0)) return 0;
+ if (in_grouping_b(z, g_C, 98, 122, 0)) return 0;
break;
}
- { int ret = slice_del(z); /* delete, line 139 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->B[0] = 1; /* set ending_removed, line 140 */
+ z->I[2] = 1;
return 1;
}
-static int r_other_endings(struct SN_env * z) { /* backwardmode */
+static int r_other_endings(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 143 */
- if (z->c < z->I[1]) return 0;
- mlimit1 = z->lb; z->lb = z->I[1];
- z->ket = z->c; /* [, line 143 */
- among_var = find_among_b(z, a_7, 14); /* substring, line 143 */
+ { int mlimit1;
+ if (z->c < z->I[0]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[0];
+ z->ket = z->c;
+ among_var = find_among_b(z, a_7, 14);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 143 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 144 */
+ switch (among_var) {
case 1:
- { int m2 = z->l - z->c; (void)m2; /* not, line 147 */
- if (!(eq_s_b(z, 2, s_3))) goto lab0; /* literal, line 147 */
+ { int m2 = z->l - z->c; (void)m2;
+ if (!(eq_s_b(z, 2, s_3))) goto lab0;
return 0;
lab0:
z->c = z->l - m2;
}
break;
}
- { int ret = slice_del(z); /* delete, line 152 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_i_plural(struct SN_env * z) { /* backwardmode */
+static int r_i_plural(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 155 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 155 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = mlimit1; return 0; } /* substring, line 155 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = mlimit1; return 0; }
if (!(find_among_b(z, a_8, 2))) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 155 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- { int ret = slice_del(z); /* delete, line 159 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_t_plural(struct SN_env * z) { /* backwardmode */
+static int r_t_plural(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 162 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 163 */
- if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit1; return 0; } /* literal, line 163 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit1; return 0; }
z->c--;
- z->bra = z->c; /* ], line 163 */
- { int m_test2 = z->l - z->c; /* test, line 163 */
- if (in_grouping_b(z, g_V1, 97, 246, 0)) { z->lb = mlimit1; return 0; } /* grouping V1, line 163 */
+ z->bra = z->c;
+ { int m_test2 = z->l - z->c;
+ if (in_grouping_b(z, g_V1, 97, 246, 0)) { z->lb = mlimit1; return 0; }
z->c = z->l - m_test2;
}
- { int ret = slice_del(z); /* delete, line 164 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
z->lb = mlimit1;
}
- { int mlimit3; /* setlimit, line 166 */
- if (z->c < z->I[1]) return 0;
- mlimit3 = z->lb; z->lb = z->I[1];
- z->ket = z->c; /* [, line 166 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = mlimit3; return 0; } /* substring, line 166 */
+ { int mlimit3;
+ if (z->c < z->I[0]) return 0;
+ mlimit3 = z->lb; z->lb = z->I[0];
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = mlimit3; return 0; }
among_var = find_among_b(z, a_9, 2);
if (!(among_var)) { z->lb = mlimit3; return 0; }
- z->bra = z->c; /* ], line 166 */
+ z->bra = z->c;
z->lb = mlimit3;
}
- switch (among_var) { /* among, line 167 */
+ switch (among_var) {
case 1:
- { int m4 = z->l - z->c; (void)m4; /* not, line 168 */
- if (!(eq_s_b(z, 2, s_4))) goto lab0; /* literal, line 168 */
+ { int m4 = z->l - z->c; (void)m4;
+ if (!(eq_s_b(z, 2, s_4))) goto lab0;
return 0;
lab0:
z->c = z->l - m4;
}
break;
}
- { int ret = slice_del(z); /* delete, line 171 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_tidy(struct SN_env * z) { /* backwardmode */
+static int r_tidy(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 174 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- { int m2 = z->l - z->c; (void)m2; /* do, line 175 */
- { int m3 = z->l - z->c; (void)m3; /* and, line 175 */
- { int ret = r_LONG(z); /* call LONG, line 175 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ { int m2 = z->l - z->c; (void)m2;
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_LONG(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
z->c = z->l - m3;
- z->ket = z->c; /* [, line 175 */
+ z->ket = z->c;
if (z->c <= z->lb) goto lab0;
- z->c--; /* next, line 175 */
- z->bra = z->c; /* ], line 175 */
- { int ret = slice_del(z); /* delete, line 175 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
}
lab0:
z->c = z->l - m2;
}
- { int m4 = z->l - z->c; (void)m4; /* do, line 176 */
- z->ket = z->c; /* [, line 176 */
- if (in_grouping_b(z, g_AEI, 97, 228, 0)) goto lab1; /* grouping AEI, line 176 */
- z->bra = z->c; /* ], line 176 */
- if (in_grouping_b(z, g_C, 98, 122, 0)) goto lab1; /* grouping C, line 176 */
- { int ret = slice_del(z); /* delete, line 176 */
+ { int m4 = z->l - z->c; (void)m4;
+ z->ket = z->c;
+ if (in_grouping_b(z, g_AEI, 97, 228, 0)) goto lab1;
+ z->bra = z->c;
+ if (in_grouping_b(z, g_C, 98, 122, 0)) goto lab1;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab1:
z->c = z->l - m4;
}
- { int m5 = z->l - z->c; (void)m5; /* do, line 177 */
- z->ket = z->c; /* [, line 177 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab2; /* literal, line 177 */
+ { int m5 = z->l - z->c; (void)m5;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab2;
z->c--;
- z->bra = z->c; /* ], line 177 */
- { int m6 = z->l - z->c; (void)m6; /* or, line 177 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab4; /* literal, line 177 */
+ z->bra = z->c;
+ { int m6 = z->l - z->c; (void)m6;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab4;
z->c--;
goto lab3;
lab4:
z->c = z->l - m6;
- if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab2; /* literal, line 177 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab2;
z->c--;
}
lab3:
- { int ret = slice_del(z); /* delete, line 177 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab2:
z->c = z->l - m5;
}
- { int m7 = z->l - z->c; (void)m7; /* do, line 178 */
- z->ket = z->c; /* [, line 178 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab5; /* literal, line 178 */
+ { int m7 = z->l - z->c; (void)m7;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab5;
z->c--;
- z->bra = z->c; /* ], line 178 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab5; /* literal, line 178 */
+ z->bra = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab5;
z->c--;
- { int ret = slice_del(z); /* delete, line 178 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab5:
@@ -638,72 +638,72 @@ static int r_tidy(struct SN_env * z) { /* backwardmode */
}
z->lb = mlimit1;
}
- if (in_grouping_b(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* non V1, line 180 */
- z->ket = z->c; /* [, line 180 */
- if (in_grouping_b(z, g_C, 98, 122, 0)) return 0; /* grouping C, line 180 */
- z->bra = z->c; /* ], line 180 */
- z->S[0] = slice_to(z, z->S[0]); /* -> x, line 180 */
- if (z->S[0] == 0) return -1; /* -> x, line 180 */
- if (!(eq_v_b(z, z->S[0]))) return 0; /* name x, line 180 */
- { int ret = slice_del(z); /* delete, line 180 */
+ if (in_grouping_b(z, g_V1, 97, 246, 1) < 0) return 0;
+ z->ket = z->c;
+ if (in_grouping_b(z, g_C, 98, 122, 0)) return 0;
+ z->bra = z->c;
+ z->S[0] = slice_to(z, z->S[0]);
+ if (z->S[0] == 0) return -1;
+ if (!(eq_v_b(z, z->S[0]))) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-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 */
+extern int finnish_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- z->B[0] = 0; /* unset ending_removed, line 187 */
- z->lb = z->c; z->c = z->l; /* backwards, line 188 */
+ z->I[2] = 0;
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 189 */
- { int ret = r_particle_etc(z); /* call particle_etc, line 189 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_particle_etc(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_possessive(z);
if (ret < 0) return ret;
}
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_case_ending(z);
if (ret < 0) return ret;
}
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 */
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_other_endings(z);
if (ret < 0) return ret;
}
z->c = z->l - m5;
}
- /* or, 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 (!(z->I[2])) goto lab1;
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_i_plural(z);
if (ret < 0) return ret;
}
z->c = z->l - m6;
}
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 */
+ { int m7 = z->l - z->c; (void)m7;
+ { int ret = r_t_plural(z);
if (ret < 0) return ret;
}
z->c = z->l - m7;
}
lab0:
- { int m8 = z->l - z->c; (void)m8; /* do, line 194 */
- { int ret = r_tidy(z); /* call tidy, line 194 */
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_tidy(z);
if (ret < 0) return ret;
}
z->c = z->l - m8;
@@ -712,7 +712,7 @@ extern int finnish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * finnish_ISO_8859_1_create_env(void) { return SN_create_env(1, 2, 1); }
+extern struct SN_env * finnish_ISO_8859_1_create_env(void) { return SN_create_env(1, 3); }
extern void finnish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 1); }
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 bbf6985ba5841..05fd6b61a246e 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -39,9 +39,9 @@ static const symbol s_0_2[3] = { 't', 'a', 'p' };
static const struct among a_0[3] =
{
-/* 0 */ { 3, s_0_0, -1, -1, 0},
-/* 1 */ { 3, s_0_1, -1, -1, 0},
-/* 2 */ { 3, s_0_2, -1, -1, 0}
+{ 3, s_0_0, -1, -1, 0},
+{ 3, s_0_1, -1, -1, 0},
+{ 3, s_0_2, -1, -1, 0}
};
static const symbol s_1_1[1] = { 'H' };
@@ -53,13 +53,13 @@ static const symbol s_1_6[1] = { 'Y' };
static const struct among a_1[7] =
{
-/* 0 */ { 0, 0, -1, 7, 0},
-/* 1 */ { 1, s_1_1, 0, 6, 0},
-/* 2 */ { 2, s_1_2, 1, 4, 0},
-/* 3 */ { 2, s_1_3, 1, 5, 0},
-/* 4 */ { 1, s_1_4, 0, 1, 0},
-/* 5 */ { 1, s_1_5, 0, 2, 0},
-/* 6 */ { 1, s_1_6, 0, 3, 0}
+{ 0, 0, -1, 7, 0},
+{ 1, s_1_1, 0, 6, 0},
+{ 2, s_1_2, 1, 4, 0},
+{ 2, s_1_3, 1, 5, 0},
+{ 1, s_1_4, 0, 1, 0},
+{ 1, s_1_5, 0, 2, 0},
+{ 1, s_1_6, 0, 3, 0}
};
static const symbol s_2_0[3] = { 'i', 'q', 'U' };
@@ -71,12 +71,12 @@ static const symbol s_2_5[2] = { 'i', 'v' };
static const struct among a_2[6] =
{
-/* 0 */ { 3, s_2_0, -1, 3, 0},
-/* 1 */ { 3, s_2_1, -1, 3, 0},
-/* 2 */ { 3, s_2_2, -1, 4, 0},
-/* 3 */ { 3, s_2_3, -1, 4, 0},
-/* 4 */ { 3, s_2_4, -1, 2, 0},
-/* 5 */ { 2, s_2_5, -1, 1, 0}
+{ 3, s_2_0, -1, 3, 0},
+{ 3, s_2_1, -1, 3, 0},
+{ 3, s_2_2, -1, 4, 0},
+{ 3, s_2_3, -1, 4, 0},
+{ 3, s_2_4, -1, 2, 0},
+{ 2, s_2_5, -1, 1, 0}
};
static const symbol s_3_0[2] = { 'i', 'c' };
@@ -85,9 +85,9 @@ static const symbol s_3_2[2] = { 'i', 'v' };
static const struct among a_3[3] =
{
-/* 0 */ { 2, s_3_0, -1, 2, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0},
-/* 2 */ { 2, s_3_2, -1, 3, 0}
+{ 2, s_3_0, -1, 2, 0},
+{ 4, s_3_1, -1, 1, 0},
+{ 2, s_3_2, -1, 3, 0}
};
static const symbol s_4_0[4] = { 'i', 'q', 'U', 'e' };
@@ -136,49 +136,49 @@ static const symbol s_4_42[3] = { 'i', 't', 0xE9 };
static const struct among a_4[43] =
{
-/* 0 */ { 4, s_4_0, -1, 1, 0},
-/* 1 */ { 6, s_4_1, -1, 2, 0},
-/* 2 */ { 4, s_4_2, -1, 1, 0},
-/* 3 */ { 4, s_4_3, -1, 5, 0},
-/* 4 */ { 5, s_4_4, -1, 3, 0},
-/* 5 */ { 4, s_4_5, -1, 1, 0},
-/* 6 */ { 4, s_4_6, -1, 1, 0},
-/* 7 */ { 4, s_4_7, -1, 11, 0},
-/* 8 */ { 4, s_4_8, -1, 1, 0},
-/* 9 */ { 3, s_4_9, -1, 8, 0},
-/* 10 */ { 2, s_4_10, -1, 8, 0},
-/* 11 */ { 5, s_4_11, -1, 4, 0},
-/* 12 */ { 5, s_4_12, -1, 2, 0},
-/* 13 */ { 5, s_4_13, -1, 4, 0},
-/* 14 */ { 5, s_4_14, -1, 2, 0},
-/* 15 */ { 5, s_4_15, -1, 1, 0},
-/* 16 */ { 7, s_4_16, -1, 2, 0},
-/* 17 */ { 5, s_4_17, -1, 1, 0},
-/* 18 */ { 5, s_4_18, -1, 5, 0},
-/* 19 */ { 6, s_4_19, -1, 3, 0},
-/* 20 */ { 5, s_4_20, -1, 1, 0},
-/* 21 */ { 5, s_4_21, -1, 1, 0},
-/* 22 */ { 5, s_4_22, -1, 11, 0},
-/* 23 */ { 5, s_4_23, -1, 1, 0},
-/* 24 */ { 4, s_4_24, -1, 8, 0},
-/* 25 */ { 3, s_4_25, -1, 8, 0},
-/* 26 */ { 6, s_4_26, -1, 4, 0},
-/* 27 */ { 6, s_4_27, -1, 2, 0},
-/* 28 */ { 6, s_4_28, -1, 4, 0},
-/* 29 */ { 6, s_4_29, -1, 2, 0},
-/* 30 */ { 5, s_4_30, -1, 15, 0},
-/* 31 */ { 6, s_4_31, 30, 6, 0},
-/* 32 */ { 9, s_4_32, 31, 12, 0},
-/* 33 */ { 4, s_4_33, -1, 7, 0},
-/* 34 */ { 4, s_4_34, -1, 15, 0},
-/* 35 */ { 5, s_4_35, 34, 6, 0},
-/* 36 */ { 8, s_4_36, 35, 12, 0},
-/* 37 */ { 6, s_4_37, 34, 13, 0},
-/* 38 */ { 6, s_4_38, 34, 14, 0},
-/* 39 */ { 3, s_4_39, -1, 10, 0},
-/* 40 */ { 4, s_4_40, 39, 9, 0},
-/* 41 */ { 3, s_4_41, -1, 1, 0},
-/* 42 */ { 3, s_4_42, -1, 7, 0}
+{ 4, s_4_0, -1, 1, 0},
+{ 6, s_4_1, -1, 2, 0},
+{ 4, s_4_2, -1, 1, 0},
+{ 4, s_4_3, -1, 5, 0},
+{ 5, s_4_4, -1, 3, 0},
+{ 4, s_4_5, -1, 1, 0},
+{ 4, s_4_6, -1, 1, 0},
+{ 4, s_4_7, -1, 11, 0},
+{ 4, s_4_8, -1, 1, 0},
+{ 3, s_4_9, -1, 8, 0},
+{ 2, s_4_10, -1, 8, 0},
+{ 5, s_4_11, -1, 4, 0},
+{ 5, s_4_12, -1, 2, 0},
+{ 5, s_4_13, -1, 4, 0},
+{ 5, s_4_14, -1, 2, 0},
+{ 5, s_4_15, -1, 1, 0},
+{ 7, s_4_16, -1, 2, 0},
+{ 5, s_4_17, -1, 1, 0},
+{ 5, s_4_18, -1, 5, 0},
+{ 6, s_4_19, -1, 3, 0},
+{ 5, s_4_20, -1, 1, 0},
+{ 5, s_4_21, -1, 1, 0},
+{ 5, s_4_22, -1, 11, 0},
+{ 5, s_4_23, -1, 1, 0},
+{ 4, s_4_24, -1, 8, 0},
+{ 3, s_4_25, -1, 8, 0},
+{ 6, s_4_26, -1, 4, 0},
+{ 6, s_4_27, -1, 2, 0},
+{ 6, s_4_28, -1, 4, 0},
+{ 6, s_4_29, -1, 2, 0},
+{ 5, s_4_30, -1, 15, 0},
+{ 6, s_4_31, 30, 6, 0},
+{ 9, s_4_32, 31, 12, 0},
+{ 4, s_4_33, -1, 7, 0},
+{ 4, s_4_34, -1, 15, 0},
+{ 5, s_4_35, 34, 6, 0},
+{ 8, s_4_36, 35, 12, 0},
+{ 6, s_4_37, 34, 13, 0},
+{ 6, s_4_38, 34, 14, 0},
+{ 3, s_4_39, -1, 10, 0},
+{ 4, s_4_40, 39, 9, 0},
+{ 3, s_4_41, -1, 1, 0},
+{ 3, s_4_42, -1, 7, 0}
};
static const symbol s_5_0[3] = { 'i', 'r', 'a' };
@@ -219,41 +219,41 @@ static const symbol s_5_34[5] = { 'i', 's', 's', 'e', 'z' };
static const struct among a_5[35] =
{
-/* 0 */ { 3, s_5_0, -1, 1, 0},
-/* 1 */ { 2, s_5_1, -1, 1, 0},
-/* 2 */ { 4, s_5_2, -1, 1, 0},
-/* 3 */ { 7, s_5_3, -1, 1, 0},
-/* 4 */ { 1, s_5_4, -1, 1, 0},
-/* 5 */ { 4, s_5_5, 4, 1, 0},
-/* 6 */ { 2, s_5_6, -1, 1, 0},
-/* 7 */ { 4, s_5_7, -1, 1, 0},
-/* 8 */ { 3, s_5_8, -1, 1, 0},
-/* 9 */ { 4, s_5_9, -1, 1, 0},
-/* 10 */ { 5, s_5_10, -1, 1, 0},
-/* 11 */ { 8, s_5_11, -1, 1, 0},
-/* 12 */ { 4, s_5_12, -1, 1, 0},
-/* 13 */ { 2, s_5_13, -1, 1, 0},
-/* 14 */ { 5, s_5_14, 13, 1, 0},
-/* 15 */ { 6, s_5_15, 13, 1, 0},
-/* 16 */ { 6, s_5_16, -1, 1, 0},
-/* 17 */ { 7, s_5_17, -1, 1, 0},
-/* 18 */ { 5, s_5_18, -1, 1, 0},
-/* 19 */ { 6, s_5_19, -1, 1, 0},
-/* 20 */ { 7, s_5_20, -1, 1, 0},
-/* 21 */ { 2, s_5_21, -1, 1, 0},
-/* 22 */ { 5, s_5_22, 21, 1, 0},
-/* 23 */ { 6, s_5_23, 21, 1, 0},
-/* 24 */ { 6, s_5_24, -1, 1, 0},
-/* 25 */ { 7, s_5_25, -1, 1, 0},
-/* 26 */ { 8, s_5_26, -1, 1, 0},
-/* 27 */ { 5, s_5_27, -1, 1, 0},
-/* 28 */ { 6, s_5_28, -1, 1, 0},
-/* 29 */ { 5, s_5_29, -1, 1, 0},
-/* 30 */ { 2, s_5_30, -1, 1, 0},
-/* 31 */ { 5, s_5_31, -1, 1, 0},
-/* 32 */ { 6, s_5_32, -1, 1, 0},
-/* 33 */ { 4, s_5_33, -1, 1, 0},
-/* 34 */ { 5, s_5_34, -1, 1, 0}
+{ 3, s_5_0, -1, 1, 0},
+{ 2, s_5_1, -1, 1, 0},
+{ 4, s_5_2, -1, 1, 0},
+{ 7, s_5_3, -1, 1, 0},
+{ 1, s_5_4, -1, 1, 0},
+{ 4, s_5_5, 4, 1, 0},
+{ 2, s_5_6, -1, 1, 0},
+{ 4, s_5_7, -1, 1, 0},
+{ 3, s_5_8, -1, 1, 0},
+{ 4, s_5_9, -1, 1, 0},
+{ 5, s_5_10, -1, 1, 0},
+{ 8, s_5_11, -1, 1, 0},
+{ 4, s_5_12, -1, 1, 0},
+{ 2, s_5_13, -1, 1, 0},
+{ 5, s_5_14, 13, 1, 0},
+{ 6, s_5_15, 13, 1, 0},
+{ 6, s_5_16, -1, 1, 0},
+{ 7, s_5_17, -1, 1, 0},
+{ 5, s_5_18, -1, 1, 0},
+{ 6, s_5_19, -1, 1, 0},
+{ 7, s_5_20, -1, 1, 0},
+{ 2, s_5_21, -1, 1, 0},
+{ 5, s_5_22, 21, 1, 0},
+{ 6, s_5_23, 21, 1, 0},
+{ 6, s_5_24, -1, 1, 0},
+{ 7, s_5_25, -1, 1, 0},
+{ 8, s_5_26, -1, 1, 0},
+{ 5, s_5_27, -1, 1, 0},
+{ 6, s_5_28, -1, 1, 0},
+{ 5, s_5_29, -1, 1, 0},
+{ 2, s_5_30, -1, 1, 0},
+{ 5, s_5_31, -1, 1, 0},
+{ 6, s_5_32, -1, 1, 0},
+{ 4, s_5_33, -1, 1, 0},
+{ 5, s_5_34, -1, 1, 0}
};
static const symbol s_6_0[1] = { 'a' };
@@ -297,44 +297,44 @@ static const symbol s_6_37[1] = { 0xE9 };
static const struct among a_6[38] =
{
-/* 0 */ { 1, s_6_0, -1, 3, 0},
-/* 1 */ { 3, s_6_1, 0, 2, 0},
-/* 2 */ { 4, s_6_2, -1, 3, 0},
-/* 3 */ { 4, s_6_3, -1, 3, 0},
-/* 4 */ { 2, s_6_4, -1, 2, 0},
-/* 5 */ { 2, s_6_5, -1, 3, 0},
-/* 6 */ { 4, s_6_6, 5, 2, 0},
-/* 7 */ { 2, s_6_7, -1, 2, 0},
-/* 8 */ { 2, s_6_8, -1, 3, 0},
-/* 9 */ { 4, s_6_9, 8, 2, 0},
-/* 10 */ { 4, s_6_10, -1, 3, 0},
-/* 11 */ { 5, s_6_11, -1, 3, 0},
-/* 12 */ { 5, s_6_12, -1, 3, 0},
-/* 13 */ { 4, s_6_13, -1, 3, 0},
-/* 14 */ { 3, s_6_14, -1, 2, 0},
-/* 15 */ { 3, s_6_15, -1, 3, 0},
-/* 16 */ { 5, s_6_16, 15, 2, 0},
-/* 17 */ { 4, s_6_17, -1, 1, 0},
-/* 18 */ { 6, s_6_18, 17, 2, 0},
-/* 19 */ { 7, s_6_19, 17, 3, 0},
-/* 20 */ { 5, s_6_20, -1, 2, 0},
-/* 21 */ { 4, s_6_21, -1, 3, 0},
-/* 22 */ { 2, s_6_22, -1, 2, 0},
-/* 23 */ { 3, s_6_23, -1, 3, 0},
-/* 24 */ { 5, s_6_24, 23, 2, 0},
-/* 25 */ { 3, s_6_25, -1, 3, 0},
-/* 26 */ { 5, s_6_26, -1, 3, 0},
-/* 27 */ { 7, s_6_27, 26, 2, 0},
-/* 28 */ { 5, s_6_28, -1, 2, 0},
-/* 29 */ { 6, s_6_29, -1, 3, 0},
-/* 30 */ { 5, s_6_30, -1, 2, 0},
-/* 31 */ { 2, s_6_31, -1, 3, 0},
-/* 32 */ { 2, s_6_32, -1, 2, 0},
-/* 33 */ { 3, s_6_33, 32, 2, 0},
-/* 34 */ { 5, s_6_34, 33, 2, 0},
-/* 35 */ { 6, s_6_35, 33, 3, 0},
-/* 36 */ { 4, s_6_36, 32, 2, 0},
-/* 37 */ { 1, s_6_37, -1, 2, 0}
+{ 1, s_6_0, -1, 3, 0},
+{ 3, s_6_1, 0, 2, 0},
+{ 4, s_6_2, -1, 3, 0},
+{ 4, s_6_3, -1, 3, 0},
+{ 2, s_6_4, -1, 2, 0},
+{ 2, s_6_5, -1, 3, 0},
+{ 4, s_6_6, 5, 2, 0},
+{ 2, s_6_7, -1, 2, 0},
+{ 2, s_6_8, -1, 3, 0},
+{ 4, s_6_9, 8, 2, 0},
+{ 4, s_6_10, -1, 3, 0},
+{ 5, s_6_11, -1, 3, 0},
+{ 5, s_6_12, -1, 3, 0},
+{ 4, s_6_13, -1, 3, 0},
+{ 3, s_6_14, -1, 2, 0},
+{ 3, s_6_15, -1, 3, 0},
+{ 5, s_6_16, 15, 2, 0},
+{ 4, s_6_17, -1, 1, 0},
+{ 6, s_6_18, 17, 2, 0},
+{ 7, s_6_19, 17, 3, 0},
+{ 5, s_6_20, -1, 2, 0},
+{ 4, s_6_21, -1, 3, 0},
+{ 2, s_6_22, -1, 2, 0},
+{ 3, s_6_23, -1, 3, 0},
+{ 5, s_6_24, 23, 2, 0},
+{ 3, s_6_25, -1, 3, 0},
+{ 5, s_6_26, -1, 3, 0},
+{ 7, s_6_27, 26, 2, 0},
+{ 5, s_6_28, -1, 2, 0},
+{ 6, s_6_29, -1, 3, 0},
+{ 5, s_6_30, -1, 2, 0},
+{ 2, s_6_31, -1, 3, 0},
+{ 2, s_6_32, -1, 2, 0},
+{ 3, s_6_33, 32, 2, 0},
+{ 5, s_6_34, 33, 2, 0},
+{ 6, s_6_35, 33, 3, 0},
+{ 4, s_6_36, 32, 2, 0},
+{ 1, s_6_37, -1, 2, 0}
};
static const symbol s_7_0[1] = { 'e' };
@@ -346,12 +346,12 @@ static const symbol s_7_5[3] = { 'i', 'e', 'r' };
static const struct among a_7[6] =
{
-/* 0 */ { 1, s_7_0, -1, 3, 0},
-/* 1 */ { 4, s_7_1, 0, 2, 0},
-/* 2 */ { 4, s_7_2, 0, 2, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0},
-/* 4 */ { 3, s_7_4, -1, 2, 0},
-/* 5 */ { 3, s_7_5, -1, 2, 0}
+{ 1, s_7_0, -1, 3, 0},
+{ 4, s_7_1, 0, 2, 0},
+{ 4, s_7_2, 0, 2, 0},
+{ 3, s_7_3, -1, 1, 0},
+{ 3, s_7_4, -1, 2, 0},
+{ 3, s_7_5, -1, 2, 0}
};
static const symbol s_8_0[3] = { 'e', 'l', 'l' };
@@ -362,11 +362,11 @@ static const symbol s_8_4[3] = { 'e', 't', 't' };
static const struct among a_8[5] =
{
-/* 0 */ { 3, s_8_0, -1, -1, 0},
-/* 1 */ { 4, s_8_1, -1, -1, 0},
-/* 2 */ { 3, s_8_2, -1, -1, 0},
-/* 3 */ { 3, s_8_3, -1, -1, 0},
-/* 4 */ { 3, s_8_4, -1, -1, 0}
+{ 3, s_8_0, -1, -1, 0},
+{ 4, s_8_1, -1, -1, 0},
+{ 3, s_8_2, -1, -1, 0},
+{ 3, s_8_3, -1, -1, 0},
+{ 3, s_8_4, -1, -1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 };
@@ -409,40 +409,39 @@ static const symbol s_32[] = { 'e' };
static const symbol s_33[] = { 'i' };
static const symbol s_34[] = { 'c' };
-static int r_prelude(struct SN_env * z) { /* forwardmode */
-/* repeat, line 38 */
-
- while(1) { int c1 = z->c;
- while(1) { /* goto, line 38 */
+static int r_prelude(struct SN_env * z) {
+ while(1) {
+ int c1 = z->c;
+ while(1) {
int c2 = z->c;
- { int c3 = z->c; /* or, line 44 */
- if (in_grouping(z, g_v, 97, 251, 0)) goto lab3; /* grouping v, line 40 */
- z->bra = z->c; /* [, line 40 */
- { int c4 = z->c; /* or, line 40 */
- if (z->c == z->l || z->p[z->c] != 'u') goto lab5; /* literal, line 40 */
+ { int c3 = z->c;
+ if (in_grouping(z, g_v, 97, 251, 0)) goto lab3;
+ z->bra = z->c;
+ { int c4 = z->c;
+ if (z->c == z->l || z->p[z->c] != 'u') goto lab5;
z->c++;
- z->ket = z->c; /* ], line 40 */
- if (in_grouping(z, g_v, 97, 251, 0)) goto lab5; /* grouping v, line 40 */
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 40 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 251, 0)) goto lab5;
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
goto lab4;
lab5:
z->c = c4;
- if (z->c == z->l || z->p[z->c] != 'i') goto lab6; /* literal, line 41 */
+ if (z->c == z->l || z->p[z->c] != 'i') goto lab6;
z->c++;
- z->ket = z->c; /* ], line 41 */
- if (in_grouping(z, g_v, 97, 251, 0)) goto lab6; /* grouping v, line 41 */
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 41 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 251, 0)) goto lab6;
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
goto lab4;
lab6:
z->c = c4;
- if (z->c == z->l || z->p[z->c] != 'y') goto lab3; /* literal, line 42 */
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
z->c++;
- z->ket = z->c; /* ], line 42 */
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 42 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
}
@@ -450,44 +449,44 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
goto lab2;
lab3:
z->c = c3;
- z->bra = z->c; /* [, line 45 */
- if (z->c == z->l || z->p[z->c] != 0xEB) goto lab7; /* literal, line 45 */
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 0xEB) goto lab7;
z->c++;
- z->ket = z->c; /* ], line 45 */
- { int ret = slice_from_s(z, 2, s_3); /* <-, line 45 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 2, s_3);
if (ret < 0) return ret;
}
goto lab2;
lab7:
z->c = c3;
- z->bra = z->c; /* [, line 47 */
- if (z->c == z->l || z->p[z->c] != 0xEF) goto lab8; /* literal, line 47 */
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 0xEF) goto lab8;
z->c++;
- z->ket = z->c; /* ], line 47 */
- { int ret = slice_from_s(z, 2, s_4); /* <-, line 47 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 2, s_4);
if (ret < 0) return ret;
}
goto lab2;
lab8:
z->c = c3;
- z->bra = z->c; /* [, line 49 */
- if (z->c == z->l || z->p[z->c] != 'y') goto lab9; /* literal, line 49 */
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab9;
z->c++;
- z->ket = z->c; /* ], line 49 */
- if (in_grouping(z, g_v, 97, 251, 0)) goto lab9; /* grouping v, line 49 */
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 49 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 251, 0)) goto lab9;
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
goto lab2;
lab9:
z->c = c3;
- if (z->c == z->l || z->p[z->c] != 'q') goto lab1; /* literal, line 51 */
+ if (z->c == z->l || z->p[z->c] != 'q') goto lab1;
z->c++;
- z->bra = z->c; /* [, line 51 */
- if (z->c == z->l || z->p[z->c] != 'u') goto lab1; /* literal, line 51 */
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'u') goto lab1;
z->c++;
- z->ket = z->c; /* ], line 51 */
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 51 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
}
@@ -497,7 +496,7 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
lab1:
z->c = c2;
if (z->c >= z->l) goto lab0;
- z->c++; /* goto, line 38 */
+ z->c++;
}
continue;
lab0:
@@ -507,110 +506,109 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $pV = , line 56 */
- z->I[1] = z->l; /* $p1 = , line 57 */
- z->I[2] = z->l; /* $p2 = , line 58 */
- { int c1 = z->c; /* do, line 60 */
- { int c2 = z->c; /* or, line 62 */
- if (in_grouping(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 61 */
- if (in_grouping(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 61 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping(z, g_v, 97, 251, 0)) goto lab2;
+ if (in_grouping(z, g_v, 97, 251, 0)) goto lab2;
if (z->c >= z->l) goto lab2;
- z->c++; /* next, line 61 */
+ z->c++;
goto lab1;
lab2:
z->c = c2;
- if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((331776 >> (z->p[z->c + 2] & 0x1f)) & 1)) goto lab3; /* among, line 63 */
+ if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((331776 >> (z->p[z->c + 2] & 0x1f)) & 1)) goto lab3;
if (!(find_among(z, a_0, 3))) goto lab3;
goto lab1;
lab3:
z->c = c2;
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 70 */
- { /* gopast */ /* grouping v, line 70 */
+ z->c++;
+ {
int ret = out_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
}
lab1:
- z->I[0] = z->c; /* setmark pV, line 71 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c3 = z->c; /* do, line 73 */
- { /* gopast */ /* grouping v, line 74 */
+ { int c3 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- { /* gopast */ /* non v, line 74 */
+ {
int ret = in_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p1, line 74 */
- { /* gopast */ /* grouping v, line 75 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- { /* gopast */ /* non v, line 75 */
+ {
int ret = in_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- z->I[2] = z->c; /* setmark p2, line 75 */
+ z->I[0] = z->c;
lab4:
z->c = c3;
}
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
+static int r_postlude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652352 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 7; else
among_var = find_among(z, a_1, 7);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 81 */
- switch (among_var) { /* among, line 81 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_7); /* <-, line 82 */
+ { int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 83 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_9); /* <-, line 84 */
+ { int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_10); /* <-, line 85 */
+ { int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 1, s_11); /* <-, line 86 */
+ { int ret = slice_from_s(z, 1, s_11);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_del(z); /* delete, line 87 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 7:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 88 */
+ z->c++;
break;
}
continue;
@@ -621,59 +619,59 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_RV(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 94 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 95 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 96 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 99 */
- among_var = find_among_b(z, a_4, 43); /* substring, line 99 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_4, 43);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 99 */
- switch (among_var) { /* among, line 99 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 103 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 103 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 106 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 106 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m1 = z->l - z->c; (void)m1; /* try, line 107 */
- z->ket = z->c; /* [, line 107 */
- if (!(eq_s_b(z, 2, s_12))) { z->c = z->l - m1; goto lab0; } /* literal, line 107 */
- z->bra = z->c; /* ], line 107 */
- { int m2 = z->l - z->c; (void)m2; /* or, line 107 */
- { int ret = r_R2(z); /* call R2, line 107 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_12))) { z->c = z->l - m1; goto lab0; }
+ z->bra = z->c;
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_R2(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 107 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = z->l - m2;
- { int ret = slice_from_s(z, 3, s_13); /* <-, line 107 */
+ { int ret = slice_from_s(z, 3, s_13);
if (ret < 0) return ret;
}
}
@@ -683,98 +681,98 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 111 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_14); /* <-, line 111 */
+ { int ret = slice_from_s(z, 3, s_14);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_R2(z); /* call R2, line 114 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 1, s_15); /* <-, line 114 */
+ { int ret = slice_from_s(z, 1, s_15);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = r_R2(z); /* call R2, line 117 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_16); /* <-, line 117 */
+ { int ret = slice_from_s(z, 3, s_16);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = r_RV(z); /* call RV, line 121 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 121 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m3 = z->l - z->c; (void)m3; /* try, line 122 */
- z->ket = z->c; /* [, line 123 */
- among_var = find_among_b(z, a_2, 6); /* substring, line 123 */
+ { int m3 = z->l - z->c; (void)m3;
+ z->ket = z->c;
+ among_var = find_among_b(z, a_2, 6);
if (!(among_var)) { z->c = z->l - m3; goto lab3; }
- z->bra = z->c; /* ], line 123 */
- switch (among_var) { /* among, line 123 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 124 */
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 124 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, line 124 */
- if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m3; goto lab3; } /* literal, line 124 */
- z->bra = z->c; /* ], line 124 */
- { int ret = r_R2(z); /* call R2, line 124 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m3; goto lab3; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 124 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int m4 = z->l - z->c; (void)m4; /* or, line 125 */
- { int ret = r_R2(z); /* call R2, line 125 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_R2(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 125 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab4;
lab5:
z->c = z->l - m4;
- { int ret = r_R1(z); /* call R1, line 125 */
+ { int ret = r_R1(z);
if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_18); /* <-, line 125 */
+ { int ret = slice_from_s(z, 3, s_18);
if (ret < 0) return ret;
}
}
lab4:
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 127 */
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 127 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_RV(z); /* call RV, line 129 */
+ { int ret = r_RV(z);
if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_from_s(z, 1, s_19); /* <-, line 129 */
+ { int ret = slice_from_s(z, 1, s_19);
if (ret < 0) return ret;
}
break;
@@ -784,61 +782,61 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 7:
- { int ret = r_R2(z); /* call R2, line 136 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 136 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m5 = z->l - z->c; (void)m5; /* try, line 137 */
- z->ket = z->c; /* [, line 138 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m5; goto lab6; } /* substring, line 138 */
+ { int m5 = z->l - z->c; (void)m5;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m5; goto lab6; }
among_var = find_among_b(z, a_3, 3);
if (!(among_var)) { z->c = z->l - m5; goto lab6; }
- z->bra = z->c; /* ], line 138 */
- switch (among_var) { /* among, line 138 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int m6 = z->l - z->c; (void)m6; /* or, line 139 */
- { int ret = r_R2(z); /* call R2, line 139 */
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_R2(z);
if (ret == 0) goto lab8;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 139 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab7;
lab8:
z->c = z->l - m6;
- { int ret = slice_from_s(z, 3, s_20); /* <-, line 139 */
+ { int ret = slice_from_s(z, 3, s_20);
if (ret < 0) return ret;
}
}
lab7:
break;
case 2:
- { int m7 = z->l - z->c; (void)m7; /* or, line 140 */
- { int ret = r_R2(z); /* call R2, line 140 */
+ { int m7 = z->l - z->c; (void)m7;
+ { int ret = r_R2(z);
if (ret == 0) goto lab10;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 140 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab9;
lab10:
z->c = z->l - m7;
- { int ret = slice_from_s(z, 3, s_21); /* <-, line 140 */
+ { int ret = slice_from_s(z, 3, s_21);
if (ret < 0) return ret;
}
}
lab9:
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 141 */
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m5; goto lab6; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 141 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -848,38 +846,38 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 8:
- { int ret = r_R2(z); /* call R2, line 148 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 148 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m8 = z->l - z->c; (void)m8; /* try, line 149 */
- z->ket = z->c; /* [, line 149 */
- if (!(eq_s_b(z, 2, s_22))) { z->c = z->l - m8; goto lab11; } /* literal, line 149 */
- z->bra = z->c; /* ], line 149 */
- { int ret = r_R2(z); /* call R2, line 149 */
+ { int m8 = z->l - z->c; (void)m8;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_22))) { z->c = z->l - m8; goto lab11; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m8; goto lab11; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 149 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, line 149 */
- if (!(eq_s_b(z, 2, s_23))) { z->c = z->l - m8; goto lab11; } /* literal, line 149 */
- z->bra = z->c; /* ], line 149 */
- { int m9 = z->l - z->c; (void)m9; /* or, line 149 */
- { int ret = r_R2(z); /* call R2, line 149 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_23))) { z->c = z->l - m8; goto lab11; }
+ z->bra = z->c;
+ { int m9 = z->l - z->c; (void)m9;
+ { int ret = r_R2(z);
if (ret == 0) goto lab13;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 149 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab12;
lab13:
z->c = z->l - m9;
- { int ret = slice_from_s(z, 3, s_24); /* <-, line 149 */
+ { int ret = slice_from_s(z, 3, s_24);
if (ret < 0) return ret;
}
}
@@ -889,101 +887,101 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 9:
- { int ret = slice_from_s(z, 3, s_25); /* <-, line 151 */
+ { int ret = slice_from_s(z, 3, s_25);
if (ret < 0) return ret;
}
break;
case 10:
- { int ret = r_R1(z); /* call R1, line 152 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 2, s_26); /* <-, line 152 */
+ { int ret = slice_from_s(z, 2, s_26);
if (ret < 0) return ret;
}
break;
case 11:
- { int m10 = z->l - z->c; (void)m10; /* or, line 154 */
- { int ret = r_R2(z); /* call R2, line 154 */
+ { int m10 = z->l - z->c; (void)m10;
+ { int ret = r_R2(z);
if (ret == 0) goto lab15;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 154 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab14;
lab15:
z->c = z->l - m10;
- { int ret = r_R1(z); /* call R1, line 154 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_27); /* <-, line 154 */
+ { int ret = slice_from_s(z, 3, s_27);
if (ret < 0) return ret;
}
}
lab14:
break;
case 12:
- { int ret = r_R1(z); /* call R1, line 157 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- if (out_grouping_b(z, g_v, 97, 251, 0)) return 0; /* non v, line 157 */
- { int ret = slice_del(z); /* delete, line 157 */
+ if (out_grouping_b(z, g_v, 97, 251, 0)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 13:
- { int ret = r_RV(z); /* call RV, line 162 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_28); /* <-, line 162 */
+ { int ret = slice_from_s(z, 3, s_28);
if (ret < 0) return ret;
}
- return 0; /* fail, line 162 */
+ return 0;
break;
case 14:
- { int ret = r_RV(z); /* call RV, line 163 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_29); /* <-, line 163 */
+ { int ret = slice_from_s(z, 3, s_29);
if (ret < 0) return ret;
}
- return 0; /* fail, line 163 */
+ return 0;
break;
case 15:
- { int m_test11 = z->l - z->c; /* test, line 165 */
- if (in_grouping_b(z, g_v, 97, 251, 0)) return 0; /* grouping v, line 165 */
- { int ret = r_RV(z); /* call RV, line 165 */
+ { int m_test11 = z->l - z->c;
+ if (in_grouping_b(z, g_v, 97, 251, 0)) return 0;
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
z->c = z->l - m_test11;
}
- { int ret = slice_del(z); /* delete, line 165 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- return 0; /* fail, line 165 */
+ return 0;
break;
}
return 1;
}
-static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_i_verb_suffix(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 170 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 171 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 171 */
+ { int mlimit1;
+ if (z->c < z->I[2]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
if (!(find_among_b(z, a_5, 35))) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 171 */
- { int m2 = z->l - z->c; (void)m2; /* not, line 177 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'H') goto lab0; /* literal, line 177 */
+ z->bra = z->c;
+ { int m2 = z->l - z->c; (void)m2;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'H') goto lab0;
z->c--;
{ z->lb = mlimit1; return 0; }
lab0:
z->c = z->l - m2;
}
- if (out_grouping_b(z, g_v, 97, 251, 0)) { z->lb = mlimit1; return 0; } /* non v, line 177 */
- { int ret = slice_del(z); /* delete, line 177 */
+ if (out_grouping_b(z, g_v, 97, 251, 0)) { z->lb = mlimit1; return 0; }
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
z->lb = mlimit1;
@@ -991,41 +989,41 @@ static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_verb_suffix(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 181 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 182 */
- among_var = find_among_b(z, a_6, 38); /* substring, line 182 */
+ { int mlimit1;
+ if (z->c < z->I[2]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ among_var = find_among_b(z, a_6, 38);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 182 */
- switch (among_var) { /* among, line 182 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 184 */
+ { int ret = r_R2(z);
if (ret == 0) { z->lb = mlimit1; return 0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 184 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 192 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 197 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m2 = z->l - z->c; (void)m2; /* try, line 198 */
- z->ket = z->c; /* [, line 198 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - m2; goto lab0; } /* literal, line 198 */
+ { int m2 = z->l - z->c; (void)m2;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - m2; goto lab0; }
z->c--;
- z->bra = z->c; /* ], line 198 */
- { int ret = slice_del(z); /* delete, line 198 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
@@ -1038,66 +1036,66 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
+static int r_residual_suffix(struct SN_env * z) {
int among_var;
- { int m1 = z->l - z->c; (void)m1; /* try, line 206 */
- z->ket = z->c; /* [, line 206 */
- if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m1; goto lab0; } /* literal, line 206 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m1; goto lab0; }
z->c--;
- z->bra = z->c; /* ], line 206 */
- { int m_test2 = z->l - z->c; /* test, line 206 */
- { int m3 = z->l - z->c; (void)m3; /* or, line 206 */
- if (!(eq_s_b(z, 2, s_30))) goto lab2; /* literal, line 206 */
+ z->bra = z->c;
+ { int m_test2 = z->l - z->c;
+ { int m3 = z->l - z->c; (void)m3;
+ if (!(eq_s_b(z, 2, s_30))) goto lab2;
goto lab1;
lab2:
z->c = z->l - m3;
- if (out_grouping_b(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m1; goto lab0; } /* non keep_with_s, line 206 */
+ if (out_grouping_b(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m1; goto lab0; }
}
lab1:
z->c = z->l - m_test2;
}
- { int ret = slice_del(z); /* delete, line 206 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
;
}
- { int mlimit4; /* setlimit, line 207 */
- if (z->c < z->I[0]) return 0;
- mlimit4 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 208 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((278560 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit4; return 0; } /* substring, line 208 */
+ { int mlimit4;
+ if (z->c < z->I[2]) return 0;
+ mlimit4 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((278560 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit4; return 0; }
among_var = find_among_b(z, a_7, 6);
if (!(among_var)) { z->lb = mlimit4; return 0; }
- z->bra = z->c; /* ], line 208 */
- switch (among_var) { /* among, line 208 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 209 */
+ { int ret = r_R2(z);
if (ret == 0) { z->lb = mlimit4; return 0; }
if (ret < 0) return ret;
}
- { int m5 = z->l - z->c; (void)m5; /* or, line 209 */
- if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab4; /* literal, line 209 */
+ { int m5 = z->l - z->c; (void)m5;
+ if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab4;
z->c--;
goto lab3;
lab4:
z->c = z->l - m5;
- if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit4; return 0; } /* literal, line 209 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit4; return 0; }
z->c--;
}
lab3:
- { int ret = slice_del(z); /* delete, line 209 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_31); /* <-, line 211 */
+ { int ret = slice_from_s(z, 1, s_31);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 212 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -1107,25 +1105,26 @@ static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_un_double(struct SN_env * z) { /* backwardmode */
- { int m_test1 = z->l - z->c; /* test, line 218 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1069056 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 218 */
+static int r_un_double(struct SN_env * z) {
+ { int m_test1 = z->l - z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1069056 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_8, 5))) return 0;
z->c = z->l - m_test1;
}
- z->ket = z->c; /* [, line 218 */
+ z->ket = z->c;
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 218 */
- z->bra = z->c; /* ], line 218 */
- { int ret = slice_del(z); /* delete, line 218 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_un_accent(struct SN_env * z) { /* backwardmode */
+static int r_un_accent(struct SN_env * z) {
{ int i = 1;
- while(1) { 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;
i--;
continue;
lab0:
@@ -1133,78 +1132,78 @@ static int r_un_accent(struct SN_env * z) { /* backwardmode */
}
if (i > 0) return 0;
}
- z->ket = z->c; /* [, line 223 */
- { int m1 = z->l - z->c; (void)m1; /* or, line 223 */
- if (z->c <= z->lb || z->p[z->c - 1] != 0xE9) goto lab2; /* literal, line 223 */
+ z->ket = z->c;
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xE9) goto lab2;
z->c--;
goto lab1;
lab2:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 0xE8) return 0; /* literal, line 223 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xE8) return 0;
z->c--;
}
lab1:
- z->bra = z->c; /* ], line 223 */
- { int ret = slice_from_s(z, 1, s_32); /* <-, line 223 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 1, s_32);
if (ret < 0) return ret;
}
return 1;
}
-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 */
+extern int french_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- /* do, line 230 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 230 */
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 231 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 233 */
- { int m3 = z->l - z->c; (void)m3; /* or, line 243 */
- { 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 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int m3 = z->l - z->c; (void)m3;
+ { int m4 = z->l - z->c; (void)m4;
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_standard_suffix(z);
if (ret == 0) goto lab4;
if (ret < 0) return ret;
}
goto lab3;
lab4:
z->c = z->l - m5;
- { int ret = r_i_verb_suffix(z); /* call i_verb_suffix, line 236 */
+ { int ret = r_i_verb_suffix(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
goto lab3;
lab5:
z->c = z->l - m5;
- { int ret = r_verb_suffix(z); /* call verb_suffix, line 237 */
+ { int ret = r_verb_suffix(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
}
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 lab8; /* literal, line 240 */
+ { int m6 = z->l - z->c; (void)m6;
+ z->ket = z->c;
+ { int m7 = z->l - z->c; (void)m7;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab8;
z->c--;
- z->bra = z->c; /* ], line 240 */
- { int ret = slice_from_s(z, 1, s_33); /* <-, line 240 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 1, s_33);
if (ret < 0) return ret;
}
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 lab6; } /* literal, line 241 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xE7) { z->c = z->l - m6; goto lab6; }
z->c--;
- z->bra = z->c; /* ], line 241 */
- { int ret = slice_from_s(z, 1, s_34); /* <-, line 241 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 1, s_34);
if (ret < 0) return ret;
}
}
@@ -1216,7 +1215,7 @@ extern int french_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
goto lab1;
lab2:
z->c = z->l - m3;
- { int ret = r_residual_suffix(z); /* call residual_suffix, line 244 */
+ { int ret = r_residual_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -1225,21 +1224,21 @@ extern int french_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_un_double(z);
if (ret < 0) return ret;
}
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 */
+ { int m9 = z->l - z->c; (void)m9;
+ { int ret = r_un_accent(z);
if (ret < 0) return ret;
}
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 */
+ { int c10 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c10;
@@ -1247,7 +1246,7 @@ extern int french_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * french_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); }
+extern struct SN_env * french_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void french_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_german.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c
index 48d6fbc294a1c..5c5cfb6e80a07 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -35,12 +35,12 @@ static const symbol s_0_5[1] = { 0xFC };
static const struct among a_0[6] =
{
-/* 0 */ { 0, 0, -1, 5, 0},
-/* 1 */ { 1, s_0_1, 0, 2, 0},
-/* 2 */ { 1, s_0_2, 0, 1, 0},
-/* 3 */ { 1, s_0_3, 0, 3, 0},
-/* 4 */ { 1, s_0_4, 0, 4, 0},
-/* 5 */ { 1, s_0_5, 0, 2, 0}
+{ 0, 0, -1, 5, 0},
+{ 1, s_0_1, 0, 2, 0},
+{ 1, s_0_2, 0, 1, 0},
+{ 1, s_0_3, 0, 3, 0},
+{ 1, s_0_4, 0, 4, 0},
+{ 1, s_0_5, 0, 2, 0}
};
static const symbol s_1_0[1] = { 'e' };
@@ -53,13 +53,13 @@ static const symbol s_1_6[2] = { 'e', 's' };
static const struct among a_1[7] =
{
-/* 0 */ { 1, s_1_0, -1, 2, 0},
-/* 1 */ { 2, s_1_1, -1, 1, 0},
-/* 2 */ { 2, s_1_2, -1, 2, 0},
-/* 3 */ { 3, s_1_3, -1, 1, 0},
-/* 4 */ { 2, s_1_4, -1, 1, 0},
-/* 5 */ { 1, s_1_5, -1, 3, 0},
-/* 6 */ { 2, s_1_6, 5, 2, 0}
+{ 1, s_1_0, -1, 2, 0},
+{ 2, s_1_1, -1, 1, 0},
+{ 2, s_1_2, -1, 2, 0},
+{ 3, s_1_3, -1, 1, 0},
+{ 2, s_1_4, -1, 1, 0},
+{ 1, s_1_5, -1, 3, 0},
+{ 2, s_1_6, 5, 2, 0}
};
static const symbol s_2_0[2] = { 'e', 'n' };
@@ -69,10 +69,10 @@ static const symbol s_2_3[3] = { 'e', 's', 't' };
static const struct among a_2[4] =
{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 2, s_2_1, -1, 1, 0},
-/* 2 */ { 2, s_2_2, -1, 2, 0},
-/* 3 */ { 3, s_2_3, 2, 1, 0}
+{ 2, s_2_0, -1, 1, 0},
+{ 2, s_2_1, -1, 1, 0},
+{ 2, s_2_2, -1, 2, 0},
+{ 3, s_2_3, 2, 1, 0}
};
static const symbol s_3_0[2] = { 'i', 'g' };
@@ -80,8 +80,8 @@ static const symbol s_3_1[4] = { 'l', 'i', 'c', 'h' };
static const struct among a_3[2] =
{
-/* 0 */ { 2, s_3_0, -1, 1, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0}
+{ 2, s_3_0, -1, 1, 0},
+{ 4, s_3_1, -1, 1, 0}
};
static const symbol s_4_0[3] = { 'e', 'n', 'd' };
@@ -95,14 +95,14 @@ static const symbol s_4_7[4] = { 'k', 'e', 'i', 't' };
static const struct among a_4[8] =
{
-/* 0 */ { 3, s_4_0, -1, 1, 0},
-/* 1 */ { 2, s_4_1, -1, 2, 0},
-/* 2 */ { 3, s_4_2, -1, 1, 0},
-/* 3 */ { 4, s_4_3, -1, 3, 0},
-/* 4 */ { 4, s_4_4, -1, 2, 0},
-/* 5 */ { 2, s_4_5, -1, 2, 0},
-/* 6 */ { 4, s_4_6, -1, 3, 0},
-/* 7 */ { 4, s_4_7, -1, 4, 0}
+{ 3, s_4_0, -1, 1, 0},
+{ 2, s_4_1, -1, 2, 0},
+{ 3, s_4_2, -1, 1, 0},
+{ 4, s_4_3, -1, 3, 0},
+{ 4, s_4_4, -1, 2, 0},
+{ 2, s_4_5, -1, 2, 0},
+{ 4, s_4_6, -1, 3, 0},
+{ 4, s_4_7, -1, 4, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 };
@@ -123,24 +123,23 @@ static const symbol s_8[] = { 'i', 'g' };
static const symbol s_9[] = { 'e', 'r' };
static const symbol s_10[] = { 'e', 'n' };
-static int r_prelude(struct SN_env * z) { /* forwardmode */
- { int c_test1 = z->c; /* test, line 35 */
-/* 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 */
+static int r_prelude(struct SN_env * z) {
+ { int c_test1 = z->c;
+ while(1) {
+ int c2 = z->c;
+ { int c3 = z->c;
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 0xDF) goto lab2;
z->c++;
- z->ket = z->c; /* ], line 37 */
- { int ret = slice_from_s(z, 2, s_0); /* <-, line 37 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 2, s_0);
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = c3;
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 38 */
+ z->c++;
}
lab1:
continue;
@@ -150,29 +149,28 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
}
z->c = c_test1;
}
-/* repeat, line 41 */
-
- while(1) { int c4 = z->c;
- while(1) { /* goto, line 41 */
+ while(1) {
+ int c4 = z->c;
+ while(1) {
int c5 = z->c;
- if (in_grouping(z, g_v, 97, 252, 0)) goto lab4; /* grouping v, line 42 */
- z->bra = z->c; /* [, line 42 */
- { int c6 = z->c; /* or, line 42 */
- if (z->c == z->l || z->p[z->c] != 'u') goto lab6; /* literal, line 42 */
+ if (in_grouping(z, g_v, 97, 252, 0)) goto lab4;
+ z->bra = z->c;
+ { int c6 = z->c;
+ if (z->c == z->l || z->p[z->c] != 'u') goto lab6;
z->c++;
- z->ket = z->c; /* ], line 42 */
- if (in_grouping(z, g_v, 97, 252, 0)) goto lab6; /* grouping v, line 42 */
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 42 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 252, 0)) goto lab6;
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
goto lab5;
lab6:
z->c = c6;
- if (z->c == z->l || z->p[z->c] != 'y') goto lab4; /* literal, line 43 */
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab4;
z->c++;
- z->ket = z->c; /* ], line 43 */
- if (in_grouping(z, g_v, 97, 252, 0)) goto lab4; /* grouping v, line 43 */
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 43 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 252, 0)) goto lab4;
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
}
@@ -182,7 +180,7 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
lab4:
z->c = c5;
if (z->c >= z->l) goto lab3;
- z->c++; /* goto, line 41 */
+ z->c++;
}
continue;
lab3:
@@ -192,79 +190,76 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 49 */
- z->I[1] = z->l; /* $p2 = , line 50 */
- { int c_test1 = z->c; /* test, line 52 */
- { int ret = z->c + 3; /* hop, line 52 */
- if (0 > ret || ret > z->l) return 0;
- z->c = ret;
- }
- z->I[2] = z->c; /* setmark x, line 52 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ { int c_test1 = z->c;
+z->c = z->c + 3;
+ if (z->c > z->l) return 0;
+ z->I[0] = z->c;
z->c = c_test1;
}
- { /* gopast */ /* grouping v, line 54 */
+ {
int ret = out_grouping(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
- { /* gopast */ /* non v, line 54 */
+ {
int ret = in_grouping(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 54 */
- /* try, line 55 */
- if (!(z->I[0] < z->I[2])) goto lab0; /* $( < ), line 55 */
- z->I[0] = z->I[2]; /* $p1 = , line 55 */
+ z->I[2] = z->c;
+
+ if (!(z->I[2] < z->I[0])) goto lab0;
+ z->I[2] = z->I[0];
lab0:
- { /* gopast */ /* grouping v, line 56 */
+ {
int ret = out_grouping(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
- { /* gopast */ /* non v, line 56 */
+ {
int ret = in_grouping(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p2, line 56 */
+ z->I[1] = z->c;
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
+static int r_postlude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ among_var = find_among(z, a_0, 6);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 62 */
- switch (among_var) { /* among, line 62 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 63 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 64 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 65 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 66 */
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 5:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 68 */
+ z->c++;
break;
}
continue;
@@ -275,45 +270,45 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 75 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 76 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- { int m1 = z->l - z->c; (void)m1; /* do, line 79 */
- z->ket = z->c; /* [, line 80 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((811040 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0; /* substring, line 80 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((811040 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
among_var = find_among_b(z, a_1, 7);
if (!(among_var)) goto lab0;
- z->bra = z->c; /* ], line 80 */
- { int ret = r_R1(z); /* call R1, line 80 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
- switch (among_var) { /* among, line 80 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 82 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 85 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m2 = z->l - z->c; (void)m2; /* try, line 86 */
- z->ket = z->c; /* [, line 86 */
- if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m2; goto lab1; } /* literal, line 86 */
+ { int m2 = z->l - z->c; (void)m2;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m2; goto lab1; }
z->c--;
- z->bra = z->c; /* ], line 86 */
- if (!(eq_s_b(z, 3, s_7))) { z->c = z->l - m2; goto lab1; } /* literal, line 86 */
- { int ret = slice_del(z); /* delete, line 86 */
+ z->bra = z->c;
+ if (!(eq_s_b(z, 3, s_7))) { z->c = z->l - m2; goto lab1; }
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab1:
@@ -321,8 +316,8 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 3:
- if (in_grouping_b(z, g_s_ending, 98, 116, 0)) goto lab0; /* grouping s_ending, line 89 */
- { int ret = slice_del(z); /* delete, line 89 */
+ if (in_grouping_b(z, g_s_ending, 98, 116, 0)) goto lab0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -330,29 +325,27 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
lab0:
z->c = z->l - m1;
}
- { int m3 = z->l - z->c; (void)m3; /* do, line 93 */
- z->ket = z->c; /* [, line 94 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2; /* substring, line 94 */
+ { int m3 = z->l - z->c; (void)m3;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2;
among_var = find_among_b(z, a_2, 4);
if (!(among_var)) goto lab2;
- z->bra = z->c; /* ], line 94 */
- { int ret = r_R1(z); /* call R1, line 94 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
- switch (among_var) { /* among, line 94 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 96 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (in_grouping_b(z, g_st_ending, 98, 116, 0)) goto lab2; /* grouping st_ending, line 99 */
- { int ret = z->c - 3; /* hop, line 99 */
- if (z->lb > ret || ret > z->l) goto lab2;
- z->c = ret;
- }
- { int ret = slice_del(z); /* delete, line 99 */
+ if (in_grouping_b(z, g_st_ending, 98, 116, 0)) goto lab2;
+z->c = z->c - 3;
+ if (z->c < z->lb) goto lab2;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -360,37 +353,37 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
lab2:
z->c = z->l - m3;
}
- { int m4 = z->l - z->c; (void)m4; /* do, line 103 */
- z->ket = z->c; /* [, line 104 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3; /* substring, line 104 */
+ { int m4 = z->l - z->c; (void)m4;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
among_var = find_among_b(z, a_4, 8);
if (!(among_var)) goto lab3;
- z->bra = z->c; /* ], line 104 */
- { int ret = r_R2(z); /* call R2, line 104 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
- switch (among_var) { /* among, line 104 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 106 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m5 = z->l - z->c; (void)m5; /* try, line 107 */
- z->ket = z->c; /* [, line 107 */
- if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m5; goto lab4; } /* literal, line 107 */
- z->bra = z->c; /* ], line 107 */
- { int m6 = z->l - z->c; (void)m6; /* not, line 107 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab5; /* literal, line 107 */
+ { int m5 = z->l - z->c; (void)m5;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m5; goto lab4; }
+ z->bra = z->c;
+ { int m6 = z->l - z->c; (void)m6;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab5;
z->c--;
{ z->c = z->l - m5; goto lab4; }
lab5:
z->c = z->l - m6;
}
- { int ret = r_R2(z); /* call R2, line 107 */
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m5; goto lab4; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 107 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab4:
@@ -398,37 +391,37 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 2:
- { int m7 = z->l - z->c; (void)m7; /* not, line 110 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6; /* literal, line 110 */
+ { int m7 = z->l - z->c; (void)m7;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
z->c--;
goto lab3;
lab6:
z->c = z->l - m7;
}
- { int ret = slice_del(z); /* delete, line 110 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 113 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m8 = z->l - z->c; (void)m8; /* try, line 114 */
- z->ket = z->c; /* [, line 115 */
- { int m9 = z->l - z->c; (void)m9; /* or, line 115 */
- if (!(eq_s_b(z, 2, s_9))) goto lab9; /* literal, line 115 */
+ { int m8 = z->l - z->c; (void)m8;
+ z->ket = z->c;
+ { int m9 = z->l - z->c; (void)m9;
+ if (!(eq_s_b(z, 2, s_9))) goto lab9;
goto lab8;
lab9:
z->c = z->l - m9;
- if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m8; goto lab7; } /* literal, line 115 */
+ if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m8; goto lab7; }
}
lab8:
- z->bra = z->c; /* ], line 115 */
- { int ret = r_R1(z); /* call R1, line 115 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret == 0) { z->c = z->l - m8; goto lab7; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 115 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab7:
@@ -436,19 +429,19 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 4:
- { int ret = slice_del(z); /* delete, line 119 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m10 = z->l - z->c; (void)m10; /* try, line 120 */
- z->ket = z->c; /* [, line 121 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - m10; goto lab10; } /* substring, line 121 */
+ { int m10 = z->l - z->c; (void)m10;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - m10; goto lab10; }
if (!(find_among_b(z, a_3, 2))) { z->c = z->l - m10; goto lab10; }
- z->bra = z->c; /* ], line 121 */
- { int ret = r_R2(z); /* call R2, line 121 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m10; goto lab10; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 123 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab10:
@@ -462,28 +455,28 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int german_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- { int c2 = z->c; /* do, line 135 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 135 */
+ { int c2 = z->c;
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c2;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 136 */
+ z->lb = z->c; z->c = z->l;
- /* do, line 137 */
- { int ret = r_standard_suffix(z); /* call standard_suffix, line 137 */
+
+ { int ret = r_standard_suffix(z);
if (ret < 0) return ret;
}
z->c = z->lb;
- { int c3 = z->c; /* do, line 138 */
- { int ret = r_postlude(z); /* call postlude, line 138 */
+ { int c3 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c3;
@@ -491,7 +484,7 @@ extern int german_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * german_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); }
+extern struct SN_env * german_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void german_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_indonesian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c
index 6e0c911d690f9..5fda5450cf87e 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -37,9 +37,9 @@ static const symbol s_0_2[3] = { 'p', 'u', 'n' };
static const struct among a_0[3] =
{
-/* 0 */ { 3, s_0_0, -1, 1, 0},
-/* 1 */ { 3, s_0_1, -1, 1, 0},
-/* 2 */ { 3, s_0_2, -1, 1, 0}
+{ 3, s_0_0, -1, 1, 0},
+{ 3, s_0_1, -1, 1, 0},
+{ 3, s_0_2, -1, 1, 0}
};
static const symbol s_1_0[3] = { 'n', 'y', 'a' };
@@ -48,9 +48,9 @@ static const symbol s_1_2[2] = { 'm', 'u' };
static const struct among a_1[3] =
{
-/* 0 */ { 3, s_1_0, -1, 1, 0},
-/* 1 */ { 2, s_1_1, -1, 1, 0},
-/* 2 */ { 2, s_1_2, -1, 1, 0}
+{ 3, s_1_0, -1, 1, 0},
+{ 2, s_1_1, -1, 1, 0},
+{ 2, s_1_2, -1, 1, 0}
};
static const symbol s_2_0[1] = { 'i' };
@@ -59,9 +59,9 @@ static const symbol s_2_2[3] = { 'k', 'a', 'n' };
static const struct among a_2[3] =
{
-/* 0 */ { 1, s_2_0, -1, 1, r_SUFFIX_I_OK},
-/* 1 */ { 2, s_2_1, -1, 1, r_SUFFIX_AN_OK},
-/* 2 */ { 3, s_2_2, 1, 1, r_SUFFIX_KAN_OK}
+{ 1, s_2_0, -1, 1, r_SUFFIX_I_OK},
+{ 2, s_2_1, -1, 1, r_SUFFIX_AN_OK},
+{ 3, s_2_2, 1, 1, r_SUFFIX_KAN_OK}
};
static const symbol s_3_0[2] = { 'd', 'i' };
@@ -79,18 +79,18 @@ static const symbol s_3_11[3] = { 't', 'e', 'r' };
static const struct among a_3[12] =
{
-/* 0 */ { 2, s_3_0, -1, 1, 0},
-/* 1 */ { 2, s_3_1, -1, 2, 0},
-/* 2 */ { 2, s_3_2, -1, 1, 0},
-/* 3 */ { 3, s_3_3, 2, 5, 0},
-/* 4 */ { 3, s_3_4, 2, 1, 0},
-/* 5 */ { 4, s_3_5, 4, 1, 0},
-/* 6 */ { 4, s_3_6, 4, 3, r_VOWEL},
-/* 7 */ { 3, s_3_7, -1, 6, 0},
-/* 8 */ { 3, s_3_8, -1, 2, 0},
-/* 9 */ { 4, s_3_9, 8, 2, 0},
-/* 10 */ { 4, s_3_10, 8, 4, r_VOWEL},
-/* 11 */ { 3, s_3_11, -1, 1, 0}
+{ 2, s_3_0, -1, 1, 0},
+{ 2, s_3_1, -1, 2, 0},
+{ 2, s_3_2, -1, 1, 0},
+{ 3, s_3_3, 2, 5, 0},
+{ 3, s_3_4, 2, 1, 0},
+{ 4, s_3_5, 4, 1, 0},
+{ 4, s_3_6, 4, 3, r_VOWEL},
+{ 3, s_3_7, -1, 6, 0},
+{ 3, s_3_8, -1, 2, 0},
+{ 4, s_3_9, 8, 2, 0},
+{ 4, s_3_10, 8, 4, r_VOWEL},
+{ 3, s_3_11, -1, 1, 0}
};
static const symbol s_4_0[2] = { 'b', 'e' };
@@ -102,12 +102,12 @@ static const symbol s_4_5[3] = { 'p', 'e', 'r' };
static const struct among a_4[6] =
{
-/* 0 */ { 2, s_4_0, -1, 3, r_KER},
-/* 1 */ { 7, s_4_1, 0, 4, 0},
-/* 2 */ { 3, s_4_2, 0, 3, 0},
-/* 3 */ { 2, s_4_3, -1, 1, 0},
-/* 4 */ { 7, s_4_4, 3, 2, 0},
-/* 5 */ { 3, s_4_5, 3, 1, 0}
+{ 2, s_4_0, -1, 3, r_KER},
+{ 7, s_4_1, 0, 4, 0},
+{ 3, s_4_2, 0, 3, 0},
+{ 2, s_4_3, -1, 1, 0},
+{ 7, s_4_4, 3, 2, 0},
+{ 3, s_4_5, 3, 1, 0}
};
static const unsigned char g_vowel[] = { 17, 65, 16 };
@@ -120,46 +120,46 @@ static const symbol s_4[] = { 'p' };
static const symbol s_5[] = { 'a', 'j', 'a', 'r' };
static const symbol s_6[] = { 'a', 'j', 'a', 'r' };
-static int r_remove_particle(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 51 */
- if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 104 && z->p[z->c - 1] != 110)) return 0; /* substring, line 51 */
+static int r_remove_particle(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 104 && z->p[z->c - 1] != 110)) return 0;
if (!(find_among_b(z, a_0, 3))) return 0;
- z->bra = z->c; /* ], line 51 */
- { int ret = slice_del(z); /* delete, line 52 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->I[0] -= 1; /* $measure -= , line 52 */
+ z->I[1] -= 1;
return 1;
}
-static int r_remove_possessive_pronoun(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 57 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 117)) return 0; /* substring, line 57 */
+static int r_remove_possessive_pronoun(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 117)) return 0;
if (!(find_among_b(z, a_1, 3))) return 0;
- z->bra = z->c; /* ], line 57 */
- { int ret = slice_del(z); /* delete, line 58 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->I[0] -= 1; /* $measure -= , line 58 */
+ z->I[1] -= 1;
return 1;
}
-static int r_SUFFIX_KAN_OK(struct SN_env * z) { /* backwardmode */
- /* and, line 85 */
- if (!(z->I[1] != 3)) return 0; /* $( != ), line 85 */
- if (!(z->I[1] != 2)) return 0; /* $( != ), line 85 */
+static int r_SUFFIX_KAN_OK(struct SN_env * z) {
+
+ if (!(z->I[0] != 3)) return 0;
+ if (!(z->I[0] != 2)) return 0;
return 1;
}
-static int r_SUFFIX_AN_OK(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] != 1)) return 0; /* $( != ), line 89 */
+static int r_SUFFIX_AN_OK(struct SN_env * z) {
+ if (!(z->I[0] != 1)) return 0;
return 1;
}
-static int r_SUFFIX_I_OK(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= 2)) return 0; /* $( <= ), line 93 */
- { int m1 = z->l - z->c; (void)m1; /* not, line 128 */
- if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab0; /* literal, line 128 */
+static int r_SUFFIX_I_OK(struct SN_env * z) {
+ if (!(z->I[0] <= 2)) return 0;
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab0;
z->c--;
return 0;
lab0:
@@ -168,100 +168,100 @@ static int r_SUFFIX_I_OK(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_remove_suffix(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 132 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 110)) return 0; /* substring, line 132 */
+static int r_remove_suffix(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 110)) return 0;
if (!(find_among_b(z, a_2, 3))) return 0;
- z->bra = z->c; /* ], line 132 */
- { int ret = slice_del(z); /* delete, line 134 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->I[0] -= 1; /* $measure -= , line 134 */
+ z->I[1] -= 1;
return 1;
}
-static int r_VOWEL(struct SN_env * z) { /* forwardmode */
- if (in_grouping(z, g_vowel, 97, 117, 0)) return 0; /* grouping vowel, line 141 */
+static int r_VOWEL(struct SN_env * z) {
+ if (in_grouping(z, g_vowel, 97, 117, 0)) return 0;
return 1;
}
-static int r_KER(struct SN_env * z) { /* forwardmode */
- if (out_grouping(z, g_vowel, 97, 117, 0)) return 0; /* non vowel, line 143 */
- if (!(eq_s(z, 2, s_0))) return 0; /* literal, line 143 */
+static int r_KER(struct SN_env * z) {
+ if (out_grouping(z, g_vowel, 97, 117, 0)) return 0;
+ if (!(eq_s(z, 2, s_0))) return 0;
return 1;
}
-static int r_remove_first_order_prefix(struct SN_env * z) { /* forwardmode */
+static int r_remove_first_order_prefix(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 146 */
- if (z->c + 1 >= z->l || (z->p[z->c + 1] != 105 && z->p[z->c + 1] != 101)) return 0; /* substring, line 146 */
+ z->bra = z->c;
+ if (z->c + 1 >= z->l || (z->p[z->c + 1] != 105 && z->p[z->c + 1] != 101)) return 0;
among_var = find_among(z, a_3, 12);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 146 */
- switch (among_var) { /* among, line 146 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 147 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->I[1] = 1; /* $prefix = , line 147 */
- z->I[0] -= 1; /* $measure -= , line 147 */
+ z->I[0] = 1;
+ z->I[1] -= 1;
break;
case 2:
- { int ret = slice_del(z); /* delete, line 148 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->I[1] = 3; /* $prefix = , line 148 */
- z->I[0] -= 1; /* $measure -= , line 148 */
+ z->I[0] = 3;
+ z->I[1] -= 1;
break;
case 3:
- z->I[1] = 1; /* $prefix = , line 149 */
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 149 */
+ z->I[0] = 1;
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
- z->I[0] -= 1; /* $measure -= , line 149 */
+ z->I[1] -= 1;
break;
case 4:
- z->I[1] = 3; /* $prefix = , line 150 */
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 150 */
+ z->I[0] = 3;
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
- z->I[0] -= 1; /* $measure -= , line 150 */
+ z->I[1] -= 1;
break;
case 5:
- z->I[1] = 1; /* $prefix = , line 151 */
- z->I[0] -= 1; /* $measure -= , line 151 */
- { int c1 = z->c; /* or, line 151 */
- { int c2 = z->c; /* and, line 151 */
- if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab1; /* grouping vowel, line 151 */
+ z->I[0] = 1;
+ z->I[1] -= 1;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab1;
z->c = c2;
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 151 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
}
goto lab0;
lab1:
z->c = c1;
- { int ret = slice_del(z); /* delete, line 151 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
}
lab0:
break;
case 6:
- z->I[1] = 3; /* $prefix = , line 152 */
- z->I[0] -= 1; /* $measure -= , line 152 */
- { int c3 = z->c; /* or, line 152 */
- { int c4 = z->c; /* and, line 152 */
- if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab3; /* grouping vowel, line 152 */
+ z->I[0] = 3;
+ z->I[1] -= 1;
+ { int c3 = z->c;
+ { int c4 = z->c;
+ if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab3;
z->c = c4;
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 152 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
}
goto lab2;
lab3:
z->c = c3;
- { int ret = slice_del(z); /* delete, line 152 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
}
@@ -271,57 +271,56 @@ static int r_remove_first_order_prefix(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_remove_second_order_prefix(struct SN_env * z) { /* forwardmode */
+static int r_remove_second_order_prefix(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 162 */
- if (z->c + 1 >= z->l || z->p[z->c + 1] != 101) return 0; /* substring, line 162 */
+ z->bra = z->c;
+ if (z->c + 1 >= z->l || z->p[z->c + 1] != 101) return 0;
among_var = find_among(z, a_4, 6);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 162 */
- switch (among_var) { /* among, line 162 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 163 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->I[1] = 2; /* $prefix = , line 163 */
- z->I[0] -= 1; /* $measure -= , line 163 */
+ z->I[0] = 2;
+ z->I[1] -= 1;
break;
case 2:
- { int ret = slice_from_s(z, 4, s_5); /* <-, line 164 */
+ { int ret = slice_from_s(z, 4, s_5);
if (ret < 0) return ret;
}
- z->I[0] -= 1; /* $measure -= , line 164 */
+ z->I[1] -= 1;
break;
case 3:
- { int ret = slice_del(z); /* delete, line 165 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->I[1] = 4; /* $prefix = , line 165 */
- z->I[0] -= 1; /* $measure -= , line 165 */
+ z->I[0] = 4;
+ z->I[1] -= 1;
break;
case 4:
- { int ret = slice_from_s(z, 4, s_6); /* <-, line 166 */
+ { int ret = slice_from_s(z, 4, s_6);
if (ret < 0) return ret;
}
- z->I[1] = 4; /* $prefix = , line 166 */
- z->I[0] -= 1; /* $measure -= , line 166 */
+ z->I[0] = 4;
+ z->I[1] -= 1;
break;
}
return 1;
}
-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 */
-/* repeat, line 173 */
-
- while(1) { int c2 = z->c;
- { /* gopast */ /* grouping vowel, line 173 */
+extern int indonesian_ISO_8859_1_stem(struct SN_env * z) {
+ z->I[1] = 0;
+ { int c1 = z->c;
+ while(1) {
+ int c2 = z->c;
+ {
int ret = out_grouping(z, g_vowel, 97, 117, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
- z->I[0] += 1; /* $measure += , line 173 */
+ z->I[1] += 1;
continue;
lab1:
z->c = c2;
@@ -329,45 +328,45 @@ extern int indonesian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
}
z->c = c1;
}
- if (!(z->I[0] > 2)) return 0; /* $( > ), line 174 */
- z->I[1] = 0; /* $prefix = , line 175 */
- z->lb = z->c; z->c = z->l; /* backwards, line 176 */
+ if (!(z->I[1] > 2)) return 0;
+ z->I[0] = 0;
+ z->lb = z->c; z->c = z->l;
- { int m3 = z->l - z->c; (void)m3; /* do, line 177 */
- { int ret = r_remove_particle(z); /* call remove_particle, line 177 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_remove_particle(z);
if (ret < 0) return ret;
}
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 (!(z->I[1] > 2)) return 0;
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_remove_possessive_pronoun(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
}
z->c = z->lb;
- if (!(z->I[0] > 2)) return 0; /* $( > ), line 181 */
- { 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 (!(z->I[1] > 2)) return 0;
+ { int c5 = z->c;
+ { int c_test6 = z->c;
+ { int ret = r_remove_first_order_prefix(z);
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 lab4; /* $( > ), line 185 */
- z->lb = z->c; z->c = z->l; /* backwards, line 185 */
+ { int c7 = z->c;
+ { int c_test8 = z->c;
+ if (!(z->I[1] > 2)) goto lab4;
+ z->lb = z->c; z->c = z->l;
- { int ret = r_remove_suffix(z); /* call remove_suffix, line 185 */
+ { int ret = r_remove_suffix(z);
if (ret == 0) goto lab4;
if (ret < 0) return ret;
}
z->c = z->lb;
z->c = c_test8;
}
- 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 (!(z->I[1] > 2)) goto lab4;
+ { int ret = r_remove_second_order_prefix(z);
if (ret == 0) goto lab4;
if (ret < 0) return ret;
}
@@ -379,17 +378,17 @@ extern int indonesian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int c9 = z->c;
+ { int ret = r_remove_second_order_prefix(z);
if (ret < 0) return ret;
}
z->c = c9;
}
- { int c10 = z->c; /* do, line 190 */
- if (!(z->I[0] > 2)) goto lab5; /* $( > ), line 190 */
- z->lb = z->c; z->c = z->l; /* backwards, line 190 */
+ { int c10 = z->c;
+ if (!(z->I[1] > 2)) goto lab5;
+ z->lb = z->c; z->c = z->l;
- { int ret = r_remove_suffix(z); /* call remove_suffix, line 190 */
+ { int ret = r_remove_suffix(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
@@ -402,7 +401,7 @@ extern int indonesian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * indonesian_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); }
+extern struct SN_env * indonesian_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
extern void indonesian_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_irish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c
index 87df430aea649..fbe75f89a0c1b 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -56,30 +56,30 @@ static const symbol s_0_23[2] = { 't', 's' };
static const struct among a_0[24] =
{
-/* 0 */ { 2, s_0_0, -1, 1, 0},
-/* 1 */ { 2, s_0_1, -1, 4, 0},
-/* 2 */ { 3, s_0_2, 1, 2, 0},
-/* 3 */ { 2, s_0_3, -1, 8, 0},
-/* 4 */ { 2, s_0_4, -1, 5, 0},
-/* 5 */ { 2, s_0_5, -1, 1, 0},
-/* 6 */ { 4, s_0_6, 5, 2, 0},
-/* 7 */ { 2, s_0_7, -1, 6, 0},
-/* 8 */ { 2, s_0_8, -1, 9, 0},
-/* 9 */ { 2, s_0_9, -1, 2, 0},
-/* 10 */ { 2, s_0_10, -1, 5, 0},
-/* 11 */ { 2, s_0_11, -1, 7, 0},
-/* 12 */ { 2, s_0_12, -1, 1, 0},
-/* 13 */ { 2, s_0_13, -1, 1, 0},
-/* 14 */ { 2, s_0_14, -1, 4, 0},
-/* 15 */ { 2, s_0_15, -1, 10, 0},
-/* 16 */ { 2, s_0_16, -1, 1, 0},
-/* 17 */ { 2, s_0_17, -1, 6, 0},
-/* 18 */ { 2, s_0_18, -1, 7, 0},
-/* 19 */ { 2, s_0_19, -1, 8, 0},
-/* 20 */ { 2, s_0_20, -1, 3, 0},
-/* 21 */ { 2, s_0_21, -1, 1, 0},
-/* 22 */ { 2, s_0_22, -1, 9, 0},
-/* 23 */ { 2, s_0_23, -1, 3, 0}
+{ 2, s_0_0, -1, 1, 0},
+{ 2, s_0_1, -1, 4, 0},
+{ 3, s_0_2, 1, 2, 0},
+{ 2, s_0_3, -1, 8, 0},
+{ 2, s_0_4, -1, 5, 0},
+{ 2, s_0_5, -1, 1, 0},
+{ 4, s_0_6, 5, 2, 0},
+{ 2, s_0_7, -1, 6, 0},
+{ 2, s_0_8, -1, 9, 0},
+{ 2, s_0_9, -1, 2, 0},
+{ 2, s_0_10, -1, 5, 0},
+{ 2, s_0_11, -1, 7, 0},
+{ 2, s_0_12, -1, 1, 0},
+{ 2, s_0_13, -1, 1, 0},
+{ 2, s_0_14, -1, 4, 0},
+{ 2, s_0_15, -1, 10, 0},
+{ 2, s_0_16, -1, 1, 0},
+{ 2, s_0_17, -1, 6, 0},
+{ 2, s_0_18, -1, 7, 0},
+{ 2, s_0_19, -1, 8, 0},
+{ 2, s_0_20, -1, 3, 0},
+{ 2, s_0_21, -1, 1, 0},
+{ 2, s_0_22, -1, 9, 0},
+{ 2, s_0_23, -1, 3, 0}
};
static const symbol s_1_0[6] = { 0xED, 'o', 'c', 'h', 't', 'a' };
@@ -101,22 +101,22 @@ static const symbol s_1_15[4] = { 'a', 'i', 'r', 0xED };
static const struct among a_1[16] =
{
-/* 0 */ { 6, s_1_0, -1, 1, 0},
-/* 1 */ { 7, s_1_1, 0, 1, 0},
-/* 2 */ { 3, s_1_2, -1, 2, 0},
-/* 3 */ { 4, s_1_3, 2, 2, 0},
-/* 4 */ { 3, s_1_4, -1, 1, 0},
-/* 5 */ { 4, s_1_5, 4, 1, 0},
-/* 6 */ { 3, s_1_6, -1, 1, 0},
-/* 7 */ { 4, s_1_7, 6, 1, 0},
-/* 8 */ { 3, s_1_8, -1, 1, 0},
-/* 9 */ { 4, s_1_9, 8, 1, 0},
-/* 10 */ { 3, s_1_10, -1, 1, 0},
-/* 11 */ { 4, s_1_11, 10, 1, 0},
-/* 12 */ { 5, s_1_12, -1, 1, 0},
-/* 13 */ { 6, s_1_13, 12, 1, 0},
-/* 14 */ { 3, s_1_14, -1, 2, 0},
-/* 15 */ { 4, s_1_15, 14, 2, 0}
+{ 6, s_1_0, -1, 1, 0},
+{ 7, s_1_1, 0, 1, 0},
+{ 3, s_1_2, -1, 2, 0},
+{ 4, s_1_3, 2, 2, 0},
+{ 3, s_1_4, -1, 1, 0},
+{ 4, s_1_5, 4, 1, 0},
+{ 3, s_1_6, -1, 1, 0},
+{ 4, s_1_7, 6, 1, 0},
+{ 3, s_1_8, -1, 1, 0},
+{ 4, s_1_9, 8, 1, 0},
+{ 3, s_1_10, -1, 1, 0},
+{ 4, s_1_11, 10, 1, 0},
+{ 5, s_1_12, -1, 1, 0},
+{ 6, s_1_13, 12, 1, 0},
+{ 3, s_1_14, -1, 2, 0},
+{ 4, s_1_15, 14, 2, 0}
};
static const symbol s_2_0[8] = { 0xF3, 'i', 'd', 'e', 'a', 'c', 'h', 'a' };
@@ -147,31 +147,31 @@ static const symbol s_2_24[12] = { 'g', 'r', 'a', 'f', 'a', 0xED, 'o', 'c', 'h',
static const struct among a_2[25] =
{
-/* 0 */ { 8, s_2_0, -1, 6, 0},
-/* 1 */ { 7, s_2_1, -1, 5, 0},
-/* 2 */ { 5, s_2_2, -1, 1, 0},
-/* 3 */ { 8, s_2_3, 2, 2, 0},
-/* 4 */ { 6, s_2_4, 2, 1, 0},
-/* 5 */ { 11, s_2_5, -1, 4, 0},
-/* 6 */ { 5, s_2_6, -1, 5, 0},
-/* 7 */ { 3, s_2_7, -1, 1, 0},
-/* 8 */ { 4, s_2_8, 7, 1, 0},
-/* 9 */ { 7, s_2_9, 8, 6, 0},
-/* 10 */ { 7, s_2_10, 8, 3, 0},
-/* 11 */ { 6, s_2_11, 7, 5, 0},
-/* 12 */ { 9, s_2_12, -1, 4, 0},
-/* 13 */ { 7, s_2_13, -1, 5, 0},
-/* 14 */ { 6, s_2_14, -1, 6, 0},
-/* 15 */ { 7, s_2_15, -1, 1, 0},
-/* 16 */ { 8, s_2_16, 15, 1, 0},
-/* 17 */ { 6, s_2_17, -1, 3, 0},
-/* 18 */ { 5, s_2_18, -1, 3, 0},
-/* 19 */ { 4, s_2_19, -1, 1, 0},
-/* 20 */ { 7, s_2_20, 19, 2, 0},
-/* 21 */ { 5, s_2_21, 19, 1, 0},
-/* 22 */ { 10, s_2_22, -1, 4, 0},
-/* 23 */ { 9, s_2_23, -1, 2, 0},
-/* 24 */ { 12, s_2_24, -1, 4, 0}
+{ 8, s_2_0, -1, 6, 0},
+{ 7, s_2_1, -1, 5, 0},
+{ 5, s_2_2, -1, 1, 0},
+{ 8, s_2_3, 2, 2, 0},
+{ 6, s_2_4, 2, 1, 0},
+{ 11, s_2_5, -1, 4, 0},
+{ 5, s_2_6, -1, 5, 0},
+{ 3, s_2_7, -1, 1, 0},
+{ 4, s_2_8, 7, 1, 0},
+{ 7, s_2_9, 8, 6, 0},
+{ 7, s_2_10, 8, 3, 0},
+{ 6, s_2_11, 7, 5, 0},
+{ 9, s_2_12, -1, 4, 0},
+{ 7, s_2_13, -1, 5, 0},
+{ 6, s_2_14, -1, 6, 0},
+{ 7, s_2_15, -1, 1, 0},
+{ 8, s_2_16, 15, 1, 0},
+{ 6, s_2_17, -1, 3, 0},
+{ 5, s_2_18, -1, 3, 0},
+{ 4, s_2_19, -1, 1, 0},
+{ 7, s_2_20, 19, 2, 0},
+{ 5, s_2_21, 19, 1, 0},
+{ 10, s_2_22, -1, 4, 0},
+{ 9, s_2_23, -1, 2, 0},
+{ 12, s_2_24, -1, 4, 0}
};
static const symbol s_3_0[4] = { 'i', 'm', 'i', 'd' };
@@ -189,18 +189,18 @@ static const symbol s_3_11[3] = { 't', 'a', 'r' };
static const struct among a_3[12] =
{
-/* 0 */ { 4, s_3_0, -1, 1, 0},
-/* 1 */ { 5, s_3_1, 0, 1, 0},
-/* 2 */ { 4, s_3_2, -1, 1, 0},
-/* 3 */ { 5, s_3_3, 2, 1, 0},
-/* 4 */ { 3, s_3_4, -1, 2, 0},
-/* 5 */ { 4, s_3_5, 4, 2, 0},
-/* 6 */ { 5, s_3_6, -1, 1, 0},
-/* 7 */ { 4, s_3_7, -1, 1, 0},
-/* 8 */ { 3, s_3_8, -1, 2, 0},
-/* 9 */ { 3, s_3_9, -1, 2, 0},
-/* 10 */ { 4, s_3_10, -1, 2, 0},
-/* 11 */ { 3, s_3_11, -1, 2, 0}
+{ 4, s_3_0, -1, 1, 0},
+{ 5, s_3_1, 0, 1, 0},
+{ 4, s_3_2, -1, 1, 0},
+{ 5, s_3_3, 2, 1, 0},
+{ 3, s_3_4, -1, 2, 0},
+{ 4, s_3_5, 4, 2, 0},
+{ 5, s_3_6, -1, 1, 0},
+{ 4, s_3_7, -1, 1, 0},
+{ 3, s_3_8, -1, 2, 0},
+{ 3, s_3_9, -1, 2, 0},
+{ 4, s_3_10, -1, 2, 0},
+{ 3, s_3_11, -1, 2, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 2 };
@@ -220,103 +220,103 @@ static const symbol s_11[] = { 'g', 'r', 'a', 'f' };
static const symbol s_12[] = { 'p', 'a', 'i', 't', 'e' };
static const symbol s_13[] = { 0xF3, 'i', 'd' };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $pV = , line 30 */
- z->I[1] = z->l; /* $p1 = , line 31 */
- z->I[2] = z->l; /* $p2 = , line 32 */
- { int c1 = z->c; /* do, line 34 */
- { /* gopast */ /* grouping v, line 35 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark pV, line 35 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c2 = z->c; /* do, line 37 */
- { /* gopast */ /* grouping v, line 38 */
+ { int c2 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
- { /* gopast */ /* non v, line 38 */
+ {
int ret = in_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p1, line 38 */
- { /* gopast */ /* grouping v, line 39 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
- { /* gopast */ /* non v, line 39 */
+ {
int ret = in_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
- z->I[2] = z->c; /* setmark p2, line 39 */
+ z->I[0] = z->c;
lab1:
z->c = c2;
}
return 1;
}
-static int r_initial_morph(struct SN_env * z) { /* forwardmode */
+static int r_initial_morph(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 44 */
- among_var = find_among(z, a_0, 24); /* substring, line 44 */
+ z->bra = z->c;
+ among_var = find_among(z, a_0, 24);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 44 */
- switch (among_var) { /* among, line 44 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 46 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 52 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 58 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 61 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 63 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 65 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 69 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 8:
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 71 */
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 9:
- { int ret = slice_from_s(z, 1, s_7); /* <-, line 75 */
+ { int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 10:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 89 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
@@ -324,41 +324,41 @@ static int r_initial_morph(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_RV(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 99 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 100 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 101 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_noun_sfx(struct SN_env * z) { /* backwardmode */
+static int r_noun_sfx(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 104 */
- among_var = find_among_b(z, a_1, 16); /* substring, line 104 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_1, 16);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 104 */
- switch (among_var) { /* among, line 104 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R1(z); /* call R1, line 108 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 108 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 110 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 110 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -366,43 +366,43 @@ static int r_noun_sfx(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_deriv(struct SN_env * z) { /* backwardmode */
+static int r_deriv(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 114 */
- among_var = find_among_b(z, a_2, 25); /* substring, line 114 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_2, 25);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 114 */
- switch (among_var) { /* among, line 114 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 116 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 116 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 3, s_9); /* <-, line 118 */
+ { int ret = slice_from_s(z, 3, s_9);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 3, s_10); /* <-, line 120 */
+ { int ret = slice_from_s(z, 3, s_10);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 4, s_11); /* <-, line 122 */
+ { int ret = slice_from_s(z, 4, s_11);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 5, s_12); /* <-, line 124 */
+ { int ret = slice_from_s(z, 5, s_12);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 3, s_13); /* <-, line 126 */
+ { int ret = slice_from_s(z, 3, s_13);
if (ret < 0) return ret;
}
break;
@@ -410,27 +410,27 @@ static int r_deriv(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_verb_sfx(struct SN_env * z) { /* backwardmode */
+static int r_verb_sfx(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 130 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((282896 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 130 */
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((282896 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_3, 12);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 130 */
- switch (among_var) { /* among, line 130 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_RV(z); /* call RV, line 133 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 133 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R1(z); /* call R1, line 138 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 138 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -438,33 +438,33 @@ static int r_verb_sfx(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int irish_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_initial_morph(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- /* do, line 145 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 145 */
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 146 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 147 */
- { int ret = r_noun_sfx(z); /* call noun_sfx, line 147 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_noun_sfx(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_deriv(z);
if (ret < 0) return ret;
}
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_verb_sfx(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
@@ -473,7 +473,7 @@ extern int irish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * irish_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); }
+extern struct SN_env * irish_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void irish_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_italian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c
index a06e8902d93df..e71178e404dbc 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -40,13 +40,13 @@ static const symbol s_0_6[1] = { 0xFA };
static const struct among a_0[7] =
{
-/* 0 */ { 0, 0, -1, 7, 0},
-/* 1 */ { 2, s_0_1, 0, 6, 0},
-/* 2 */ { 1, s_0_2, 0, 1, 0},
-/* 3 */ { 1, s_0_3, 0, 2, 0},
-/* 4 */ { 1, s_0_4, 0, 3, 0},
-/* 5 */ { 1, s_0_5, 0, 4, 0},
-/* 6 */ { 1, s_0_6, 0, 5, 0}
+{ 0, 0, -1, 7, 0},
+{ 2, s_0_1, 0, 6, 0},
+{ 1, s_0_2, 0, 1, 0},
+{ 1, s_0_3, 0, 2, 0},
+{ 1, s_0_4, 0, 3, 0},
+{ 1, s_0_5, 0, 4, 0},
+{ 1, s_0_6, 0, 5, 0}
};
static const symbol s_1_1[1] = { 'I' };
@@ -54,9 +54,9 @@ static const symbol s_1_2[1] = { 'U' };
static const struct among a_1[3] =
{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 1, s_1_1, 0, 1, 0},
-/* 2 */ { 1, s_1_2, 0, 2, 0}
+{ 0, 0, -1, 3, 0},
+{ 1, s_1_1, 0, 1, 0},
+{ 1, s_1_2, 0, 2, 0}
};
static const symbol s_2_0[2] = { 'l', 'a' };
@@ -99,43 +99,43 @@ static const symbol s_2_36[4] = { 'v', 'e', 'l', 'o' };
static const struct among a_2[37] =
{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 4, s_2_1, 0, -1, 0},
-/* 2 */ { 6, s_2_2, 0, -1, 0},
-/* 3 */ { 4, s_2_3, 0, -1, 0},
-/* 4 */ { 4, s_2_4, 0, -1, 0},
-/* 5 */ { 4, s_2_5, 0, -1, 0},
-/* 6 */ { 2, s_2_6, -1, -1, 0},
-/* 7 */ { 4, s_2_7, 6, -1, 0},
-/* 8 */ { 6, s_2_8, 6, -1, 0},
-/* 9 */ { 4, s_2_9, 6, -1, 0},
-/* 10 */ { 4, s_2_10, 6, -1, 0},
-/* 11 */ { 4, s_2_11, 6, -1, 0},
-/* 12 */ { 2, s_2_12, -1, -1, 0},
-/* 13 */ { 4, s_2_13, 12, -1, 0},
-/* 14 */ { 6, s_2_14, 12, -1, 0},
-/* 15 */ { 4, s_2_15, 12, -1, 0},
-/* 16 */ { 4, s_2_16, 12, -1, 0},
-/* 17 */ { 4, s_2_17, 12, -1, 0},
-/* 18 */ { 4, s_2_18, 12, -1, 0},
-/* 19 */ { 2, s_2_19, -1, -1, 0},
-/* 20 */ { 2, s_2_20, -1, -1, 0},
-/* 21 */ { 4, s_2_21, 20, -1, 0},
-/* 22 */ { 6, s_2_22, 20, -1, 0},
-/* 23 */ { 4, s_2_23, 20, -1, 0},
-/* 24 */ { 4, s_2_24, 20, -1, 0},
-/* 25 */ { 4, s_2_25, 20, -1, 0},
-/* 26 */ { 3, s_2_26, 20, -1, 0},
-/* 27 */ { 2, s_2_27, -1, -1, 0},
-/* 28 */ { 2, s_2_28, -1, -1, 0},
-/* 29 */ { 2, s_2_29, -1, -1, 0},
-/* 30 */ { 2, s_2_30, -1, -1, 0},
-/* 31 */ { 2, s_2_31, -1, -1, 0},
-/* 32 */ { 4, s_2_32, 31, -1, 0},
-/* 33 */ { 6, s_2_33, 31, -1, 0},
-/* 34 */ { 4, s_2_34, 31, -1, 0},
-/* 35 */ { 4, s_2_35, 31, -1, 0},
-/* 36 */ { 4, s_2_36, 31, -1, 0}
+{ 2, s_2_0, -1, -1, 0},
+{ 4, s_2_1, 0, -1, 0},
+{ 6, s_2_2, 0, -1, 0},
+{ 4, s_2_3, 0, -1, 0},
+{ 4, s_2_4, 0, -1, 0},
+{ 4, s_2_5, 0, -1, 0},
+{ 2, s_2_6, -1, -1, 0},
+{ 4, s_2_7, 6, -1, 0},
+{ 6, s_2_8, 6, -1, 0},
+{ 4, s_2_9, 6, -1, 0},
+{ 4, s_2_10, 6, -1, 0},
+{ 4, s_2_11, 6, -1, 0},
+{ 2, s_2_12, -1, -1, 0},
+{ 4, s_2_13, 12, -1, 0},
+{ 6, s_2_14, 12, -1, 0},
+{ 4, s_2_15, 12, -1, 0},
+{ 4, s_2_16, 12, -1, 0},
+{ 4, s_2_17, 12, -1, 0},
+{ 4, s_2_18, 12, -1, 0},
+{ 2, s_2_19, -1, -1, 0},
+{ 2, s_2_20, -1, -1, 0},
+{ 4, s_2_21, 20, -1, 0},
+{ 6, s_2_22, 20, -1, 0},
+{ 4, s_2_23, 20, -1, 0},
+{ 4, s_2_24, 20, -1, 0},
+{ 4, s_2_25, 20, -1, 0},
+{ 3, s_2_26, 20, -1, 0},
+{ 2, s_2_27, -1, -1, 0},
+{ 2, s_2_28, -1, -1, 0},
+{ 2, s_2_29, -1, -1, 0},
+{ 2, s_2_30, -1, -1, 0},
+{ 2, s_2_31, -1, -1, 0},
+{ 4, s_2_32, 31, -1, 0},
+{ 6, s_2_33, 31, -1, 0},
+{ 4, s_2_34, 31, -1, 0},
+{ 4, s_2_35, 31, -1, 0},
+{ 4, s_2_36, 31, -1, 0}
};
static const symbol s_3_0[4] = { 'a', 'n', 'd', 'o' };
@@ -146,11 +146,11 @@ static const symbol s_3_4[2] = { 'i', 'r' };
static const struct among a_3[5] =
{
-/* 0 */ { 4, s_3_0, -1, 1, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0},
-/* 2 */ { 2, s_3_2, -1, 2, 0},
-/* 3 */ { 2, s_3_3, -1, 2, 0},
-/* 4 */ { 2, s_3_4, -1, 2, 0}
+{ 4, s_3_0, -1, 1, 0},
+{ 4, s_3_1, -1, 1, 0},
+{ 2, s_3_2, -1, 2, 0},
+{ 2, s_3_3, -1, 2, 0},
+{ 2, s_3_4, -1, 2, 0}
};
static const symbol s_4_0[2] = { 'i', 'c' };
@@ -160,10 +160,10 @@ static const symbol s_4_3[2] = { 'i', 'v' };
static const struct among a_4[4] =
{
-/* 0 */ { 2, s_4_0, -1, -1, 0},
-/* 1 */ { 4, s_4_1, -1, -1, 0},
-/* 2 */ { 2, s_4_2, -1, -1, 0},
-/* 3 */ { 2, s_4_3, -1, 1, 0}
+{ 2, s_4_0, -1, -1, 0},
+{ 4, s_4_1, -1, -1, 0},
+{ 2, s_4_2, -1, -1, 0},
+{ 2, s_4_3, -1, 1, 0}
};
static const symbol s_5_0[2] = { 'i', 'c' };
@@ -172,9 +172,9 @@ static const symbol s_5_2[2] = { 'i', 'v' };
static const struct among a_5[3] =
{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 4, s_5_1, -1, 1, 0},
-/* 2 */ { 2, s_5_2, -1, 1, 0}
+{ 2, s_5_0, -1, 1, 0},
+{ 4, s_5_1, -1, 1, 0},
+{ 2, s_5_2, -1, 1, 0}
};
static const symbol s_6_0[3] = { 'i', 'c', 'a' };
@@ -231,57 +231,57 @@ static const symbol s_6_50[4] = { 'i', 's', 't', 0xEC };
static const struct among a_6[51] =
{
-/* 0 */ { 3, s_6_0, -1, 1, 0},
-/* 1 */ { 5, s_6_1, -1, 3, 0},
-/* 2 */ { 3, s_6_2, -1, 1, 0},
-/* 3 */ { 4, s_6_3, -1, 1, 0},
-/* 4 */ { 3, s_6_4, -1, 9, 0},
-/* 5 */ { 4, s_6_5, -1, 1, 0},
-/* 6 */ { 4, s_6_6, -1, 5, 0},
-/* 7 */ { 3, s_6_7, -1, 1, 0},
-/* 8 */ { 6, s_6_8, 7, 1, 0},
-/* 9 */ { 4, s_6_9, -1, 1, 0},
-/* 10 */ { 5, s_6_10, -1, 3, 0},
-/* 11 */ { 5, s_6_11, -1, 1, 0},
-/* 12 */ { 5, s_6_12, -1, 1, 0},
-/* 13 */ { 6, s_6_13, -1, 4, 0},
-/* 14 */ { 6, s_6_14, -1, 2, 0},
-/* 15 */ { 6, s_6_15, -1, 4, 0},
-/* 16 */ { 5, s_6_16, -1, 2, 0},
-/* 17 */ { 3, s_6_17, -1, 1, 0},
-/* 18 */ { 4, s_6_18, -1, 1, 0},
-/* 19 */ { 5, s_6_19, -1, 1, 0},
-/* 20 */ { 6, s_6_20, 19, 7, 0},
-/* 21 */ { 4, s_6_21, -1, 1, 0},
-/* 22 */ { 3, s_6_22, -1, 9, 0},
-/* 23 */ { 4, s_6_23, -1, 1, 0},
-/* 24 */ { 4, s_6_24, -1, 5, 0},
-/* 25 */ { 3, s_6_25, -1, 1, 0},
-/* 26 */ { 6, s_6_26, 25, 1, 0},
-/* 27 */ { 4, s_6_27, -1, 1, 0},
-/* 28 */ { 5, s_6_28, -1, 1, 0},
-/* 29 */ { 5, s_6_29, -1, 1, 0},
-/* 30 */ { 4, s_6_30, -1, 1, 0},
-/* 31 */ { 6, s_6_31, -1, 4, 0},
-/* 32 */ { 6, s_6_32, -1, 2, 0},
-/* 33 */ { 6, s_6_33, -1, 4, 0},
-/* 34 */ { 5, s_6_34, -1, 2, 0},
-/* 35 */ { 3, s_6_35, -1, 1, 0},
-/* 36 */ { 4, s_6_36, -1, 1, 0},
-/* 37 */ { 6, s_6_37, -1, 6, 0},
-/* 38 */ { 6, s_6_38, -1, 6, 0},
-/* 39 */ { 4, s_6_39, -1, 1, 0},
-/* 40 */ { 3, s_6_40, -1, 9, 0},
-/* 41 */ { 3, s_6_41, -1, 1, 0},
-/* 42 */ { 4, s_6_42, -1, 1, 0},
-/* 43 */ { 3, s_6_43, -1, 1, 0},
-/* 44 */ { 6, s_6_44, -1, 6, 0},
-/* 45 */ { 6, s_6_45, -1, 6, 0},
-/* 46 */ { 3, s_6_46, -1, 9, 0},
-/* 47 */ { 3, s_6_47, -1, 8, 0},
-/* 48 */ { 4, s_6_48, -1, 1, 0},
-/* 49 */ { 4, s_6_49, -1, 1, 0},
-/* 50 */ { 4, s_6_50, -1, 1, 0}
+{ 3, s_6_0, -1, 1, 0},
+{ 5, s_6_1, -1, 3, 0},
+{ 3, s_6_2, -1, 1, 0},
+{ 4, s_6_3, -1, 1, 0},
+{ 3, s_6_4, -1, 9, 0},
+{ 4, s_6_5, -1, 1, 0},
+{ 4, s_6_6, -1, 5, 0},
+{ 3, s_6_7, -1, 1, 0},
+{ 6, s_6_8, 7, 1, 0},
+{ 4, s_6_9, -1, 1, 0},
+{ 5, s_6_10, -1, 3, 0},
+{ 5, s_6_11, -1, 1, 0},
+{ 5, s_6_12, -1, 1, 0},
+{ 6, s_6_13, -1, 4, 0},
+{ 6, s_6_14, -1, 2, 0},
+{ 6, s_6_15, -1, 4, 0},
+{ 5, s_6_16, -1, 2, 0},
+{ 3, s_6_17, -1, 1, 0},
+{ 4, s_6_18, -1, 1, 0},
+{ 5, s_6_19, -1, 1, 0},
+{ 6, s_6_20, 19, 7, 0},
+{ 4, s_6_21, -1, 1, 0},
+{ 3, s_6_22, -1, 9, 0},
+{ 4, s_6_23, -1, 1, 0},
+{ 4, s_6_24, -1, 5, 0},
+{ 3, s_6_25, -1, 1, 0},
+{ 6, s_6_26, 25, 1, 0},
+{ 4, s_6_27, -1, 1, 0},
+{ 5, s_6_28, -1, 1, 0},
+{ 5, s_6_29, -1, 1, 0},
+{ 4, s_6_30, -1, 1, 0},
+{ 6, s_6_31, -1, 4, 0},
+{ 6, s_6_32, -1, 2, 0},
+{ 6, s_6_33, -1, 4, 0},
+{ 5, s_6_34, -1, 2, 0},
+{ 3, s_6_35, -1, 1, 0},
+{ 4, s_6_36, -1, 1, 0},
+{ 6, s_6_37, -1, 6, 0},
+{ 6, s_6_38, -1, 6, 0},
+{ 4, s_6_39, -1, 1, 0},
+{ 3, s_6_40, -1, 9, 0},
+{ 3, s_6_41, -1, 1, 0},
+{ 4, s_6_42, -1, 1, 0},
+{ 3, s_6_43, -1, 1, 0},
+{ 6, s_6_44, -1, 6, 0},
+{ 6, s_6_45, -1, 6, 0},
+{ 3, s_6_46, -1, 9, 0},
+{ 3, s_6_47, -1, 8, 0},
+{ 4, s_6_48, -1, 1, 0},
+{ 4, s_6_49, -1, 1, 0},
+{ 4, s_6_50, -1, 1, 0}
};
static const symbol s_7_0[4] = { 'i', 's', 'c', 'a' };
@@ -374,93 +374,93 @@ static const symbol s_7_86[3] = { 'i', 'r', 0xF2 };
static const struct among a_7[87] =
{
-/* 0 */ { 4, s_7_0, -1, 1, 0},
-/* 1 */ { 4, s_7_1, -1, 1, 0},
-/* 2 */ { 3, s_7_2, -1, 1, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0},
-/* 4 */ { 3, s_7_4, -1, 1, 0},
-/* 5 */ { 3, s_7_5, -1, 1, 0},
-/* 6 */ { 3, s_7_6, -1, 1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 6, s_7_8, -1, 1, 0},
-/* 9 */ { 6, s_7_9, -1, 1, 0},
-/* 10 */ { 4, s_7_10, -1, 1, 0},
-/* 11 */ { 4, s_7_11, -1, 1, 0},
-/* 12 */ { 3, s_7_12, -1, 1, 0},
-/* 13 */ { 3, s_7_13, -1, 1, 0},
-/* 14 */ { 3, s_7_14, -1, 1, 0},
-/* 15 */ { 4, s_7_15, -1, 1, 0},
-/* 16 */ { 3, s_7_16, -1, 1, 0},
-/* 17 */ { 5, s_7_17, 16, 1, 0},
-/* 18 */ { 5, s_7_18, 16, 1, 0},
-/* 19 */ { 5, s_7_19, 16, 1, 0},
-/* 20 */ { 3, s_7_20, -1, 1, 0},
-/* 21 */ { 5, s_7_21, 20, 1, 0},
-/* 22 */ { 5, s_7_22, 20, 1, 0},
-/* 23 */ { 3, s_7_23, -1, 1, 0},
-/* 24 */ { 6, s_7_24, -1, 1, 0},
-/* 25 */ { 6, s_7_25, -1, 1, 0},
-/* 26 */ { 3, s_7_26, -1, 1, 0},
-/* 27 */ { 4, s_7_27, -1, 1, 0},
-/* 28 */ { 4, s_7_28, -1, 1, 0},
-/* 29 */ { 4, s_7_29, -1, 1, 0},
-/* 30 */ { 4, s_7_30, -1, 1, 0},
-/* 31 */ { 4, s_7_31, -1, 1, 0},
-/* 32 */ { 4, s_7_32, -1, 1, 0},
-/* 33 */ { 4, s_7_33, -1, 1, 0},
-/* 34 */ { 3, s_7_34, -1, 1, 0},
-/* 35 */ { 3, s_7_35, -1, 1, 0},
-/* 36 */ { 6, s_7_36, -1, 1, 0},
-/* 37 */ { 6, s_7_37, -1, 1, 0},
-/* 38 */ { 3, s_7_38, -1, 1, 0},
-/* 39 */ { 3, s_7_39, -1, 1, 0},
-/* 40 */ { 3, s_7_40, -1, 1, 0},
-/* 41 */ { 3, s_7_41, -1, 1, 0},
-/* 42 */ { 4, s_7_42, -1, 1, 0},
-/* 43 */ { 4, s_7_43, -1, 1, 0},
-/* 44 */ { 4, s_7_44, -1, 1, 0},
-/* 45 */ { 4, s_7_45, -1, 1, 0},
-/* 46 */ { 4, s_7_46, -1, 1, 0},
-/* 47 */ { 5, s_7_47, -1, 1, 0},
-/* 48 */ { 5, s_7_48, -1, 1, 0},
-/* 49 */ { 5, s_7_49, -1, 1, 0},
-/* 50 */ { 5, s_7_50, -1, 1, 0},
-/* 51 */ { 5, s_7_51, -1, 1, 0},
-/* 52 */ { 6, s_7_52, -1, 1, 0},
-/* 53 */ { 4, s_7_53, -1, 1, 0},
-/* 54 */ { 4, s_7_54, -1, 1, 0},
-/* 55 */ { 6, s_7_55, 54, 1, 0},
-/* 56 */ { 6, s_7_56, 54, 1, 0},
-/* 57 */ { 4, s_7_57, -1, 1, 0},
-/* 58 */ { 3, s_7_58, -1, 1, 0},
-/* 59 */ { 6, s_7_59, 58, 1, 0},
-/* 60 */ { 5, s_7_60, 58, 1, 0},
-/* 61 */ { 5, s_7_61, 58, 1, 0},
-/* 62 */ { 5, s_7_62, 58, 1, 0},
-/* 63 */ { 6, s_7_63, -1, 1, 0},
-/* 64 */ { 6, s_7_64, -1, 1, 0},
-/* 65 */ { 3, s_7_65, -1, 1, 0},
-/* 66 */ { 6, s_7_66, 65, 1, 0},
-/* 67 */ { 5, s_7_67, 65, 1, 0},
-/* 68 */ { 5, s_7_68, 65, 1, 0},
-/* 69 */ { 5, s_7_69, 65, 1, 0},
-/* 70 */ { 8, s_7_70, -1, 1, 0},
-/* 71 */ { 8, s_7_71, -1, 1, 0},
-/* 72 */ { 6, s_7_72, -1, 1, 0},
-/* 73 */ { 6, s_7_73, -1, 1, 0},
-/* 74 */ { 6, s_7_74, -1, 1, 0},
-/* 75 */ { 3, s_7_75, -1, 1, 0},
-/* 76 */ { 3, s_7_76, -1, 1, 0},
-/* 77 */ { 3, s_7_77, -1, 1, 0},
-/* 78 */ { 3, s_7_78, -1, 1, 0},
-/* 79 */ { 3, s_7_79, -1, 1, 0},
-/* 80 */ { 3, s_7_80, -1, 1, 0},
-/* 81 */ { 2, s_7_81, -1, 1, 0},
-/* 82 */ { 2, s_7_82, -1, 1, 0},
-/* 83 */ { 3, s_7_83, -1, 1, 0},
-/* 84 */ { 3, s_7_84, -1, 1, 0},
-/* 85 */ { 3, s_7_85, -1, 1, 0},
-/* 86 */ { 3, s_7_86, -1, 1, 0}
+{ 4, s_7_0, -1, 1, 0},
+{ 4, s_7_1, -1, 1, 0},
+{ 3, s_7_2, -1, 1, 0},
+{ 3, s_7_3, -1, 1, 0},
+{ 3, s_7_4, -1, 1, 0},
+{ 3, s_7_5, -1, 1, 0},
+{ 3, s_7_6, -1, 1, 0},
+{ 3, s_7_7, -1, 1, 0},
+{ 6, s_7_8, -1, 1, 0},
+{ 6, s_7_9, -1, 1, 0},
+{ 4, s_7_10, -1, 1, 0},
+{ 4, s_7_11, -1, 1, 0},
+{ 3, s_7_12, -1, 1, 0},
+{ 3, s_7_13, -1, 1, 0},
+{ 3, s_7_14, -1, 1, 0},
+{ 4, s_7_15, -1, 1, 0},
+{ 3, s_7_16, -1, 1, 0},
+{ 5, s_7_17, 16, 1, 0},
+{ 5, s_7_18, 16, 1, 0},
+{ 5, s_7_19, 16, 1, 0},
+{ 3, s_7_20, -1, 1, 0},
+{ 5, s_7_21, 20, 1, 0},
+{ 5, s_7_22, 20, 1, 0},
+{ 3, s_7_23, -1, 1, 0},
+{ 6, s_7_24, -1, 1, 0},
+{ 6, s_7_25, -1, 1, 0},
+{ 3, s_7_26, -1, 1, 0},
+{ 4, s_7_27, -1, 1, 0},
+{ 4, s_7_28, -1, 1, 0},
+{ 4, s_7_29, -1, 1, 0},
+{ 4, s_7_30, -1, 1, 0},
+{ 4, s_7_31, -1, 1, 0},
+{ 4, s_7_32, -1, 1, 0},
+{ 4, s_7_33, -1, 1, 0},
+{ 3, s_7_34, -1, 1, 0},
+{ 3, s_7_35, -1, 1, 0},
+{ 6, s_7_36, -1, 1, 0},
+{ 6, s_7_37, -1, 1, 0},
+{ 3, s_7_38, -1, 1, 0},
+{ 3, s_7_39, -1, 1, 0},
+{ 3, s_7_40, -1, 1, 0},
+{ 3, s_7_41, -1, 1, 0},
+{ 4, s_7_42, -1, 1, 0},
+{ 4, s_7_43, -1, 1, 0},
+{ 4, s_7_44, -1, 1, 0},
+{ 4, s_7_45, -1, 1, 0},
+{ 4, s_7_46, -1, 1, 0},
+{ 5, s_7_47, -1, 1, 0},
+{ 5, s_7_48, -1, 1, 0},
+{ 5, s_7_49, -1, 1, 0},
+{ 5, s_7_50, -1, 1, 0},
+{ 5, s_7_51, -1, 1, 0},
+{ 6, s_7_52, -1, 1, 0},
+{ 4, s_7_53, -1, 1, 0},
+{ 4, s_7_54, -1, 1, 0},
+{ 6, s_7_55, 54, 1, 0},
+{ 6, s_7_56, 54, 1, 0},
+{ 4, s_7_57, -1, 1, 0},
+{ 3, s_7_58, -1, 1, 0},
+{ 6, s_7_59, 58, 1, 0},
+{ 5, s_7_60, 58, 1, 0},
+{ 5, s_7_61, 58, 1, 0},
+{ 5, s_7_62, 58, 1, 0},
+{ 6, s_7_63, -1, 1, 0},
+{ 6, s_7_64, -1, 1, 0},
+{ 3, s_7_65, -1, 1, 0},
+{ 6, s_7_66, 65, 1, 0},
+{ 5, s_7_67, 65, 1, 0},
+{ 5, s_7_68, 65, 1, 0},
+{ 5, s_7_69, 65, 1, 0},
+{ 8, s_7_70, -1, 1, 0},
+{ 8, s_7_71, -1, 1, 0},
+{ 6, s_7_72, -1, 1, 0},
+{ 6, s_7_73, -1, 1, 0},
+{ 6, s_7_74, -1, 1, 0},
+{ 3, s_7_75, -1, 1, 0},
+{ 3, s_7_76, -1, 1, 0},
+{ 3, s_7_77, -1, 1, 0},
+{ 3, s_7_78, -1, 1, 0},
+{ 3, s_7_79, -1, 1, 0},
+{ 3, s_7_80, -1, 1, 0},
+{ 2, s_7_81, -1, 1, 0},
+{ 2, s_7_82, -1, 1, 0},
+{ 3, s_7_83, -1, 1, 0},
+{ 3, s_7_84, -1, 1, 0},
+{ 3, s_7_85, -1, 1, 0},
+{ 3, s_7_86, -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, 128, 8, 2, 1 };
@@ -488,50 +488,49 @@ static const symbol s_15[] = { 'a', 't' };
static const symbol s_16[] = { 'a', 't' };
static const symbol s_17[] = { 'i', 'c' };
-static int r_prelude(struct SN_env * z) { /* forwardmode */
+static int r_prelude(struct SN_env * z) {
int among_var;
- { int c_test1 = z->c; /* test, line 35 */
-/* 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 */
+ { int c_test1 = z->c;
+ while(1) {
+ int c2 = z->c;
+ z->bra = z->c;
+ among_var = find_among(z, a_0, 7);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 36 */
- switch (among_var) { /* among, line 36 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 37 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 38 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 39 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 40 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 41 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 2, s_5); /* <-, line 42 */
+ { int ret = slice_from_s(z, 2, s_5);
if (ret < 0) return ret;
}
break;
case 7:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 43 */
+ z->c++;
break;
}
continue;
@@ -541,29 +540,28 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
}
z->c = c_test1;
}
-/* repeat, line 46 */
-
- while(1) { int c3 = z->c;
- while(1) { /* goto, line 46 */
+ while(1) {
+ int c3 = z->c;
+ while(1) {
int c4 = z->c;
- if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; /* grouping v, line 47 */
- z->bra = z->c; /* [, line 47 */
- { int c5 = z->c; /* or, line 47 */
- if (z->c == z->l || z->p[z->c] != 'u') goto lab4; /* literal, line 47 */
+ if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
+ z->bra = z->c;
+ { int c5 = z->c;
+ if (z->c == z->l || z->p[z->c] != 'u') goto lab4;
z->c++;
- z->ket = z->c; /* ], line 47 */
- if (in_grouping(z, g_v, 97, 249, 0)) goto lab4; /* grouping v, line 47 */
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 47 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 249, 0)) goto lab4;
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
goto lab3;
lab4:
z->c = c5;
- if (z->c == z->l || z->p[z->c] != 'i') goto lab2; /* literal, line 48 */
+ if (z->c == z->l || z->p[z->c] != 'i') goto lab2;
z->c++;
- z->ket = z->c; /* ], line 48 */
- if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; /* grouping v, line 48 */
- { int ret = slice_from_s(z, 1, s_7); /* <-, line 48 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
+ { int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
}
@@ -573,7 +571,7 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
lab2:
z->c = c4;
if (z->c >= z->l) goto lab1;
- z->c++; /* goto, line 46 */
+ z->c++;
}
continue;
lab1:
@@ -583,16 +581,16 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $pV = , line 54 */
- z->I[1] = z->l; /* $p1 = , line 55 */
- z->I[2] = z->l; /* $p2 = , line 56 */
- { int c1 = z->c; /* do, line 58 */
- { int c2 = z->c; /* or, line 60 */
- if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; /* grouping v, line 59 */
- { int c3 = z->c; /* or, line 59 */
- if (out_grouping(z, g_v, 97, 249, 0)) goto lab4; /* non v, line 59 */
- { /* gopast */ /* grouping v, line 59 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
+ { int c3 = z->c;
+ if (out_grouping(z, g_v, 97, 249, 0)) goto lab4;
+ {
int ret = out_grouping(z, g_v, 97, 249, 1);
if (ret < 0) goto lab4;
z->c += ret;
@@ -600,8 +598,8 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab3;
lab4:
z->c = c3;
- if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; /* grouping v, line 59 */
- { /* gopast */ /* non v, line 59 */
+ if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
+ {
int ret = in_grouping(z, g_v, 97, 249, 1);
if (ret < 0) goto lab2;
z->c += ret;
@@ -611,10 +609,10 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab1;
lab2:
z->c = c2;
- if (out_grouping(z, g_v, 97, 249, 0)) goto lab0; /* non v, line 61 */
- { int c4 = z->c; /* or, line 61 */
- if (out_grouping(z, g_v, 97, 249, 0)) goto lab6; /* non v, line 61 */
- { /* gopast */ /* grouping v, line 61 */
+ if (out_grouping(z, g_v, 97, 249, 0)) goto lab0;
+ { int c4 = z->c;
+ if (out_grouping(z, g_v, 97, 249, 0)) goto lab6;
+ {
int ret = out_grouping(z, g_v, 97, 249, 1);
if (ret < 0) goto lab6;
z->c += ret;
@@ -622,71 +620,70 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab5;
lab6:
z->c = c4;
- if (in_grouping(z, g_v, 97, 249, 0)) goto lab0; /* grouping v, line 61 */
+ if (in_grouping(z, g_v, 97, 249, 0)) goto lab0;
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 61 */
+ z->c++;
}
lab5:
;
}
lab1:
- z->I[0] = z->c; /* setmark pV, line 62 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c5 = z->c; /* do, line 64 */
- { /* gopast */ /* grouping v, line 65 */
+ { int c5 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 249, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 65 */
+ {
int ret = in_grouping(z, g_v, 97, 249, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p1, line 65 */
- { /* gopast */ /* grouping v, line 66 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 249, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 66 */
+ {
int ret = in_grouping(z, g_v, 97, 249, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[2] = z->c; /* setmark p2, line 66 */
+ z->I[0] = z->c;
lab7:
z->c = c5;
}
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
+static int r_postlude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else
among_var = find_among(z, a_1, 3);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 72 */
- switch (among_var) { /* among, line 72 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 73 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_9); /* <-, line 74 */
+ { int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
case 3:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 75 */
+ z->c++;
break;
}
continue;
@@ -697,41 +694,41 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_RV(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 82 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 83 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 84 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_attached_pronoun(struct SN_env * z) { /* backwardmode */
+static int r_attached_pronoun(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 87 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((33314 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 87 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((33314 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_2, 37))) return 0;
- z->bra = z->c; /* ], line 87 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 111 && z->p[z->c - 1] != 114)) return 0; /* among, line 97 */
+ z->bra = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 111 && z->p[z->c - 1] != 114)) return 0;
among_var = find_among_b(z, a_3, 5);
if (!(among_var)) return 0;
- { int ret = r_RV(z); /* call RV, line 97 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 97 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 98 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_10); /* <-, line 99 */
+ { int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
break;
@@ -739,37 +736,37 @@ static int r_attached_pronoun(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 104 */
- among_var = find_among_b(z, a_6, 51); /* substring, line 104 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_6, 51);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 104 */
- switch (among_var) { /* among, line 104 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 111 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 111 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 113 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 113 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m1 = z->l - z->c; (void)m1; /* try, line 114 */
- z->ket = z->c; /* [, line 114 */
- if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m1; goto lab0; } /* literal, line 114 */
- z->bra = z->c; /* ], line 114 */
- { int ret = r_R2(z); /* call R2, line 114 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m1; goto lab0; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 114 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
@@ -777,67 +774,67 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 117 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_12); /* <-, line 117 */
+ { int ret = slice_from_s(z, 3, s_12);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_R2(z); /* call R2, line 119 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 1, s_13); /* <-, line 119 */
+ { int ret = slice_from_s(z, 1, s_13);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = r_R2(z); /* call R2, line 121 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 4, s_14); /* <-, line 121 */
+ { int ret = slice_from_s(z, 4, s_14);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = r_RV(z); /* call RV, line 123 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 123 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = r_R1(z); /* call R1, line 125 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 125 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m2 = z->l - z->c; (void)m2; /* try, line 126 */
- z->ket = z->c; /* [, line 127 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4722696 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m2; goto lab1; } /* substring, line 127 */
+ { int m2 = z->l - z->c; (void)m2;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4722696 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m2; goto lab1; }
among_var = find_among_b(z, a_4, 4);
if (!(among_var)) { z->c = z->l - m2; goto lab1; }
- z->bra = z->c; /* ], line 127 */
- { int ret = r_R2(z); /* call R2, line 127 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m2; goto lab1; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 127 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- switch (among_var) { /* among, line 127 */
+ switch (among_var) {
case 1:
- z->ket = z->c; /* [, line 128 */
- if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m2; goto lab1; } /* literal, line 128 */
- z->bra = z->c; /* ], line 128 */
- { int ret = r_R2(z); /* call R2, line 128 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m2; goto lab1; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m2; goto lab1; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 128 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -847,22 +844,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 8:
- { int ret = r_R2(z); /* call R2, line 134 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 134 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m3 = z->l - z->c; (void)m3; /* try, line 135 */
- z->ket = z->c; /* [, line 136 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m3; goto lab2; } /* substring, line 136 */
+ { int m3 = z->l - z->c; (void)m3;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m3; goto lab2; }
if (!(find_among_b(z, a_5, 3))) { z->c = z->l - m3; goto lab2; }
- z->bra = z->c; /* ], line 136 */
- { int ret = r_R2(z); /* call R2, line 137 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m3; goto lab2; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 137 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab2:
@@ -870,31 +867,31 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 9:
- { int ret = r_R2(z); /* call R2, line 142 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 142 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m4 = z->l - z->c; (void)m4; /* try, line 143 */
- z->ket = z->c; /* [, line 143 */
- if (!(eq_s_b(z, 2, s_16))) { z->c = z->l - m4; goto lab3; } /* literal, line 143 */
- z->bra = z->c; /* ], line 143 */
- { int ret = r_R2(z); /* call R2, line 143 */
+ { int m4 = z->l - z->c; (void)m4;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_16))) { z->c = z->l - m4; goto lab3; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m4; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 143 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, line 143 */
- if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m4; goto lab3; } /* literal, line 143 */
- z->bra = z->c; /* ], line 143 */
- { int ret = r_R2(z); /* call R2, line 143 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m4; goto lab3; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m4; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 143 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab3:
@@ -905,15 +902,15 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_verb_suffix(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 148 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 149 */
- if (!(find_among_b(z, a_7, 87))) { z->lb = mlimit1; return 0; } /* substring, line 149 */
- z->bra = z->c; /* ], line 149 */
- { int ret = slice_del(z); /* delete, line 163 */
+ { int mlimit1;
+ if (z->c < z->I[2]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ if (!(find_among_b(z, a_7, 87))) { z->lb = mlimit1; return 0; }
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
z->lb = mlimit1;
@@ -921,43 +918,43 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_vowel_suffix(struct SN_env * z) { /* backwardmode */
- { int m1 = z->l - z->c; (void)m1; /* try, line 171 */
- z->ket = z->c; /* [, line 172 */
- if (in_grouping_b(z, g_AEIO, 97, 242, 0)) { z->c = z->l - m1; goto lab0; } /* grouping AEIO, line 172 */
- z->bra = z->c; /* ], line 172 */
- { int ret = r_RV(z); /* call RV, line 172 */
+static int r_vowel_suffix(struct SN_env * z) {
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (in_grouping_b(z, g_AEIO, 97, 242, 0)) { z->c = z->l - m1; goto lab0; }
+ z->bra = z->c;
+ { int ret = r_RV(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 172 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, line 173 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'i') { z->c = z->l - m1; goto lab0; } /* literal, line 173 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'i') { z->c = z->l - m1; goto lab0; }
z->c--;
- z->bra = z->c; /* ], line 173 */
- { int ret = r_RV(z); /* call RV, line 173 */
+ z->bra = z->c;
+ { int ret = r_RV(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 173 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
;
}
- { int m2 = z->l - z->c; (void)m2; /* try, line 175 */
- z->ket = z->c; /* [, line 176 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'h') { z->c = z->l - m2; goto lab1; } /* literal, line 176 */
+ { int m2 = z->l - z->c; (void)m2;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'h') { z->c = z->l - m2; goto lab1; }
z->c--;
- z->bra = z->c; /* ], line 176 */
- if (in_grouping_b(z, g_CG, 99, 103, 0)) { z->c = z->l - m2; goto lab1; } /* grouping CG, line 176 */
- { int ret = r_RV(z); /* call RV, line 176 */
+ z->bra = z->c;
+ if (in_grouping_b(z, g_CG, 99, 103, 0)) { z->c = z->l - m2; goto lab1; }
+ { int ret = r_RV(z);
if (ret == 0) { z->c = z->l - m2; goto lab1; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 176 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab1:
@@ -966,35 +963,35 @@ static int r_vowel_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int italian_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- /* do, line 183 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 183 */
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 184 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 185 */
- { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 185 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_attached_pronoun(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_standard_suffix(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = z->l - m4;
- { int ret = r_verb_suffix(z); /* call verb_suffix, line 186 */
+ { int ret = r_verb_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -1003,15 +1000,15 @@ extern int italian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_vowel_suffix(z);
if (ret < 0) return ret;
}
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 */
+ { int c6 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c6;
@@ -1019,7 +1016,7 @@ extern int italian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * italian_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); }
+extern struct SN_env * italian_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void italian_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_norwegian.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c
index a70f6f5aa200a..59f7579f1d70e 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -57,35 +57,35 @@ static const symbol s_0_28[3] = { 'a', 's', 't' };
static const struct among a_0[29] =
{
-/* 0 */ { 1, s_0_0, -1, 1, 0},
-/* 1 */ { 1, s_0_1, -1, 1, 0},
-/* 2 */ { 3, s_0_2, 1, 1, 0},
-/* 3 */ { 4, s_0_3, 1, 1, 0},
-/* 4 */ { 4, s_0_4, 1, 1, 0},
-/* 5 */ { 3, s_0_5, 1, 1, 0},
-/* 6 */ { 3, s_0_6, 1, 1, 0},
-/* 7 */ { 6, s_0_7, 6, 1, 0},
-/* 8 */ { 4, s_0_8, 1, 3, 0},
-/* 9 */ { 2, s_0_9, -1, 1, 0},
-/* 10 */ { 5, s_0_10, 9, 1, 0},
-/* 11 */ { 2, s_0_11, -1, 1, 0},
-/* 12 */ { 2, s_0_12, -1, 1, 0},
-/* 13 */ { 5, s_0_13, 12, 1, 0},
-/* 14 */ { 1, s_0_14, -1, 2, 0},
-/* 15 */ { 2, s_0_15, 14, 1, 0},
-/* 16 */ { 2, s_0_16, 14, 1, 0},
-/* 17 */ { 4, s_0_17, 16, 1, 0},
-/* 18 */ { 5, s_0_18, 16, 1, 0},
-/* 19 */ { 4, s_0_19, 16, 1, 0},
-/* 20 */ { 7, s_0_20, 19, 1, 0},
-/* 21 */ { 3, s_0_21, 14, 1, 0},
-/* 22 */ { 6, s_0_22, 21, 1, 0},
-/* 23 */ { 3, s_0_23, 14, 1, 0},
-/* 24 */ { 3, s_0_24, 14, 1, 0},
-/* 25 */ { 2, s_0_25, -1, 1, 0},
-/* 26 */ { 3, s_0_26, 25, 1, 0},
-/* 27 */ { 3, s_0_27, -1, 3, 0},
-/* 28 */ { 3, s_0_28, -1, 1, 0}
+{ 1, s_0_0, -1, 1, 0},
+{ 1, s_0_1, -1, 1, 0},
+{ 3, s_0_2, 1, 1, 0},
+{ 4, s_0_3, 1, 1, 0},
+{ 4, s_0_4, 1, 1, 0},
+{ 3, s_0_5, 1, 1, 0},
+{ 3, s_0_6, 1, 1, 0},
+{ 6, s_0_7, 6, 1, 0},
+{ 4, s_0_8, 1, 3, 0},
+{ 2, s_0_9, -1, 1, 0},
+{ 5, s_0_10, 9, 1, 0},
+{ 2, s_0_11, -1, 1, 0},
+{ 2, s_0_12, -1, 1, 0},
+{ 5, s_0_13, 12, 1, 0},
+{ 1, s_0_14, -1, 2, 0},
+{ 2, s_0_15, 14, 1, 0},
+{ 2, s_0_16, 14, 1, 0},
+{ 4, s_0_17, 16, 1, 0},
+{ 5, s_0_18, 16, 1, 0},
+{ 4, s_0_19, 16, 1, 0},
+{ 7, s_0_20, 19, 1, 0},
+{ 3, s_0_21, 14, 1, 0},
+{ 6, s_0_22, 21, 1, 0},
+{ 3, s_0_23, 14, 1, 0},
+{ 3, s_0_24, 14, 1, 0},
+{ 2, s_0_25, -1, 1, 0},
+{ 3, s_0_26, 25, 1, 0},
+{ 3, s_0_27, -1, 3, 0},
+{ 3, s_0_28, -1, 1, 0}
};
static const symbol s_1_0[2] = { 'd', 't' };
@@ -93,8 +93,8 @@ static const symbol s_1_1[2] = { 'v', 't' };
static const struct among a_1[2] =
{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0}
+{ 2, s_1_0, -1, -1, 0},
+{ 2, s_1_1, -1, -1, 0}
};
static const symbol s_2_0[3] = { 'l', 'e', 'g' };
@@ -111,17 +111,17 @@ static const symbol s_2_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
static const struct among a_2[11] =
{
-/* 0 */ { 3, s_2_0, -1, 1, 0},
-/* 1 */ { 4, s_2_1, 0, 1, 0},
-/* 2 */ { 2, s_2_2, -1, 1, 0},
-/* 3 */ { 3, s_2_3, 2, 1, 0},
-/* 4 */ { 3, s_2_4, 2, 1, 0},
-/* 5 */ { 4, s_2_5, 4, 1, 0},
-/* 6 */ { 3, s_2_6, -1, 1, 0},
-/* 7 */ { 3, s_2_7, -1, 1, 0},
-/* 8 */ { 4, s_2_8, 7, 1, 0},
-/* 9 */ { 4, s_2_9, 7, 1, 0},
-/* 10 */ { 7, s_2_10, 9, 1, 0}
+{ 3, s_2_0, -1, 1, 0},
+{ 4, s_2_1, 0, 1, 0},
+{ 2, s_2_2, -1, 1, 0},
+{ 3, s_2_3, 2, 1, 0},
+{ 3, s_2_4, 2, 1, 0},
+{ 4, s_2_5, 4, 1, 0},
+{ 3, s_2_6, -1, 1, 0},
+{ 3, s_2_7, -1, 1, 0},
+{ 4, s_2_8, 7, 1, 0},
+{ 4, s_2_9, 7, 1, 0},
+{ 7, s_2_10, 9, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
@@ -130,66 +130,64 @@ static const unsigned char g_s_ending[] = { 119, 125, 149, 1 };
static const symbol s_0[] = { 'e', 'r' };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 28 */
- { int c_test1 = z->c; /* test, line 30 */
- { int ret = z->c + 3; /* hop, line 30 */
- if (0 > ret || ret > z->l) return 0;
- z->c = ret;
- }
- z->I[1] = z->c; /* setmark x, line 30 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ { int c_test1 = z->c;
+z->c = z->c + 3;
+ if (z->c > z->l) return 0;
+ z->I[0] = z->c;
z->c = c_test1;
}
- if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 31 */
- { /* gopast */ /* non v, line 31 */
+ if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0;
+ {
int ret = in_grouping(z, g_v, 97, 248, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 31 */
- /* try, line 32 */
- if (!(z->I[0] < z->I[1])) goto lab0; /* $( < ), line 32 */
- z->I[0] = z->I[1]; /* $p1 = , line 32 */
+ z->I[1] = z->c;
+
+ if (!(z->I[1] < z->I[0])) goto lab0;
+ z->I[1] = z->I[0];
lab0:
return 1;
}
-static int r_main_suffix(struct SN_env * z) { /* backwardmode */
+static int r_main_suffix(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 38 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 38 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 38 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_0, 29);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 38 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 39 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 44 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int m2 = z->l - z->c; (void)m2; /* or, line 46 */
- if (in_grouping_b(z, g_s_ending, 98, 122, 0)) goto lab1; /* grouping s_ending, line 46 */
+ { int m2 = z->l - z->c; (void)m2;
+ if (in_grouping_b(z, g_s_ending, 98, 122, 0)) goto lab1;
goto lab0;
lab1:
z->c = z->l - m2;
- if (z->c <= z->lb || z->p[z->c - 1] != 'k') return 0; /* literal, line 46 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'k') return 0;
z->c--;
- if (out_grouping_b(z, g_v, 97, 248, 0)) return 0; /* non v, line 46 */
+ if (out_grouping_b(z, g_v, 97, 248, 0)) return 0;
}
lab0:
- { int ret = slice_del(z); /* delete, line 46 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 2, s_0); /* <-, line 48 */
+ { int ret = slice_from_s(z, 2, s_0);
if (ret < 0) return ret;
}
break;
@@ -197,69 +195,69 @@ static int r_main_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
- { int m_test1 = z->l - z->c; /* test, line 53 */
+static int r_consonant_pair(struct SN_env * z) {
+ { int m_test1 = z->l - z->c;
- { int mlimit2; /* setlimit, line 54 */
- if (z->c < z->I[0]) return 0;
- mlimit2 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 54 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit2; return 0; } /* substring, line 54 */
+ { int mlimit2;
+ if (z->c < z->I[1]) return 0;
+ mlimit2 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit2; return 0; }
if (!(find_among_b(z, a_1, 2))) { z->lb = mlimit2; return 0; }
- z->bra = z->c; /* ], line 54 */
+ z->bra = z->c;
z->lb = mlimit2;
}
z->c = z->l - m_test1;
}
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 59 */
- z->bra = z->c; /* ], line 59 */
- { int ret = slice_del(z); /* delete, line 59 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_other_suffix(struct SN_env * z) { /* backwardmode */
+static int r_other_suffix(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 63 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 63 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 63 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
if (!(find_among_b(z, a_2, 11))) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 63 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- { int ret = slice_del(z); /* delete, line 67 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-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 */
+extern int norwegian_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 75 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 76 */
- { int ret = r_main_suffix(z); /* call main_suffix, line 76 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_main_suffix(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_other_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
@@ -268,7 +266,7 @@ extern int norwegian_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * norwegian_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); }
+extern struct SN_env * norwegian_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
extern void norwegian_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_porter.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c
index 4666afb725f20..c698662d42ce4 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -39,10 +39,10 @@ static const symbol s_0_3[2] = { 's', 's' };
static const struct among a_0[4] =
{
-/* 0 */ { 1, s_0_0, -1, 3, 0},
-/* 1 */ { 3, s_0_1, 0, 2, 0},
-/* 2 */ { 4, s_0_2, 0, 1, 0},
-/* 3 */ { 2, s_0_3, 0, -1, 0}
+{ 1, s_0_0, -1, 3, 0},
+{ 3, s_0_1, 0, 2, 0},
+{ 4, s_0_2, 0, 1, 0},
+{ 2, s_0_3, 0, -1, 0}
};
static const symbol s_1_1[2] = { 'b', 'b' };
@@ -60,19 +60,19 @@ static const symbol s_1_12[2] = { 'i', 'z' };
static const struct among a_1[13] =
{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 2, s_1_1, 0, 2, 0},
-/* 2 */ { 2, s_1_2, 0, 2, 0},
-/* 3 */ { 2, s_1_3, 0, 2, 0},
-/* 4 */ { 2, s_1_4, 0, 2, 0},
-/* 5 */ { 2, s_1_5, 0, 1, 0},
-/* 6 */ { 2, s_1_6, 0, 2, 0},
-/* 7 */ { 2, s_1_7, 0, 2, 0},
-/* 8 */ { 2, s_1_8, 0, 2, 0},
-/* 9 */ { 2, s_1_9, 0, 2, 0},
-/* 10 */ { 2, s_1_10, 0, 1, 0},
-/* 11 */ { 2, s_1_11, 0, 2, 0},
-/* 12 */ { 2, s_1_12, 0, 1, 0}
+{ 0, 0, -1, 3, 0},
+{ 2, s_1_1, 0, 2, 0},
+{ 2, s_1_2, 0, 2, 0},
+{ 2, s_1_3, 0, 2, 0},
+{ 2, s_1_4, 0, 2, 0},
+{ 2, s_1_5, 0, 1, 0},
+{ 2, s_1_6, 0, 2, 0},
+{ 2, s_1_7, 0, 2, 0},
+{ 2, s_1_8, 0, 2, 0},
+{ 2, s_1_9, 0, 2, 0},
+{ 2, s_1_10, 0, 1, 0},
+{ 2, s_1_11, 0, 2, 0},
+{ 2, s_1_12, 0, 1, 0}
};
static const symbol s_2_0[2] = { 'e', 'd' };
@@ -81,9 +81,9 @@ static const symbol s_2_2[3] = { 'i', 'n', 'g' };
static const struct among a_2[3] =
{
-/* 0 */ { 2, s_2_0, -1, 2, 0},
-/* 1 */ { 3, s_2_1, 0, 1, 0},
-/* 2 */ { 3, s_2_2, -1, 2, 0}
+{ 2, s_2_0, -1, 2, 0},
+{ 3, s_2_1, 0, 1, 0},
+{ 3, s_2_2, -1, 2, 0}
};
static const symbol s_3_0[4] = { 'a', 'n', 'c', 'i' };
@@ -109,26 +109,26 @@ static const symbol s_3_19[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
static const struct among a_3[20] =
{
-/* 0 */ { 4, s_3_0, -1, 3, 0},
-/* 1 */ { 4, s_3_1, -1, 2, 0},
-/* 2 */ { 4, s_3_2, -1, 4, 0},
-/* 3 */ { 3, s_3_3, -1, 6, 0},
-/* 4 */ { 4, s_3_4, -1, 9, 0},
-/* 5 */ { 5, s_3_5, -1, 11, 0},
-/* 6 */ { 5, s_3_6, -1, 5, 0},
-/* 7 */ { 5, s_3_7, -1, 9, 0},
-/* 8 */ { 6, s_3_8, -1, 13, 0},
-/* 9 */ { 5, s_3_9, -1, 12, 0},
-/* 10 */ { 6, s_3_10, -1, 1, 0},
-/* 11 */ { 7, s_3_11, 10, 8, 0},
-/* 12 */ { 5, s_3_12, -1, 9, 0},
-/* 13 */ { 5, s_3_13, -1, 8, 0},
-/* 14 */ { 7, s_3_14, 13, 7, 0},
-/* 15 */ { 4, s_3_15, -1, 7, 0},
-/* 16 */ { 4, s_3_16, -1, 8, 0},
-/* 17 */ { 7, s_3_17, -1, 12, 0},
-/* 18 */ { 7, s_3_18, -1, 10, 0},
-/* 19 */ { 7, s_3_19, -1, 11, 0}
+{ 4, s_3_0, -1, 3, 0},
+{ 4, s_3_1, -1, 2, 0},
+{ 4, s_3_2, -1, 4, 0},
+{ 3, s_3_3, -1, 6, 0},
+{ 4, s_3_4, -1, 9, 0},
+{ 5, s_3_5, -1, 11, 0},
+{ 5, s_3_6, -1, 5, 0},
+{ 5, s_3_7, -1, 9, 0},
+{ 6, s_3_8, -1, 13, 0},
+{ 5, s_3_9, -1, 12, 0},
+{ 6, s_3_10, -1, 1, 0},
+{ 7, s_3_11, 10, 8, 0},
+{ 5, s_3_12, -1, 9, 0},
+{ 5, s_3_13, -1, 8, 0},
+{ 7, s_3_14, 13, 7, 0},
+{ 4, s_3_15, -1, 7, 0},
+{ 4, s_3_16, -1, 8, 0},
+{ 7, s_3_17, -1, 12, 0},
+{ 7, s_3_18, -1, 10, 0},
+{ 7, s_3_19, -1, 11, 0}
};
static const symbol s_4_0[5] = { 'i', 'c', 'a', 't', 'e' };
@@ -141,13 +141,13 @@ static const symbol s_4_6[4] = { 'n', 'e', 's', 's' };
static const struct among a_4[7] =
{
-/* 0 */ { 5, s_4_0, -1, 2, 0},
-/* 1 */ { 5, s_4_1, -1, 3, 0},
-/* 2 */ { 5, s_4_2, -1, 1, 0},
-/* 3 */ { 5, s_4_3, -1, 2, 0},
-/* 4 */ { 4, s_4_4, -1, 2, 0},
-/* 5 */ { 3, s_4_5, -1, 3, 0},
-/* 6 */ { 4, s_4_6, -1, 3, 0}
+{ 5, s_4_0, -1, 2, 0},
+{ 5, s_4_1, -1, 3, 0},
+{ 5, s_4_2, -1, 1, 0},
+{ 5, s_4_3, -1, 2, 0},
+{ 4, s_4_4, -1, 2, 0},
+{ 3, s_4_5, -1, 3, 0},
+{ 4, s_4_6, -1, 3, 0}
};
static const symbol s_5_0[2] = { 'i', 'c' };
@@ -172,25 +172,25 @@ static const symbol s_5_18[2] = { 'o', 'u' };
static const struct among a_5[19] =
{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 4, s_5_1, -1, 1, 0},
-/* 2 */ { 4, s_5_2, -1, 1, 0},
-/* 3 */ { 4, s_5_3, -1, 1, 0},
-/* 4 */ { 4, s_5_4, -1, 1, 0},
-/* 5 */ { 3, s_5_5, -1, 1, 0},
-/* 6 */ { 3, s_5_6, -1, 1, 0},
-/* 7 */ { 3, s_5_7, -1, 1, 0},
-/* 8 */ { 3, s_5_8, -1, 1, 0},
-/* 9 */ { 2, s_5_9, -1, 1, 0},
-/* 10 */ { 3, s_5_10, -1, 1, 0},
-/* 11 */ { 3, s_5_11, -1, 2, 0},
-/* 12 */ { 2, s_5_12, -1, 1, 0},
-/* 13 */ { 3, s_5_13, -1, 1, 0},
-/* 14 */ { 3, s_5_14, -1, 1, 0},
-/* 15 */ { 3, s_5_15, -1, 1, 0},
-/* 16 */ { 4, s_5_16, 15, 1, 0},
-/* 17 */ { 5, s_5_17, 16, 1, 0},
-/* 18 */ { 2, s_5_18, -1, 1, 0}
+{ 2, s_5_0, -1, 1, 0},
+{ 4, s_5_1, -1, 1, 0},
+{ 4, s_5_2, -1, 1, 0},
+{ 4, s_5_3, -1, 1, 0},
+{ 4, s_5_4, -1, 1, 0},
+{ 3, s_5_5, -1, 1, 0},
+{ 3, s_5_6, -1, 1, 0},
+{ 3, s_5_7, -1, 1, 0},
+{ 3, s_5_8, -1, 1, 0},
+{ 2, s_5_9, -1, 1, 0},
+{ 3, s_5_10, -1, 1, 0},
+{ 3, s_5_11, -1, 2, 0},
+{ 2, s_5_12, -1, 1, 0},
+{ 3, s_5_13, -1, 1, 0},
+{ 3, s_5_14, -1, 1, 0},
+{ 3, s_5_15, -1, 1, 0},
+{ 4, s_5_16, 15, 1, 0},
+{ 5, s_5_17, 16, 1, 0},
+{ 2, s_5_18, -1, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1 };
@@ -222,43 +222,43 @@ static const symbol s_21[] = { 'Y' };
static const symbol s_22[] = { 'Y' };
static const symbol s_23[] = { 'y' };
-static int r_shortv(struct SN_env * z) { /* backwardmode */
- if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) return 0; /* non v_WXY, line 19 */
- if (in_grouping_b(z, g_v, 97, 121, 0)) return 0; /* grouping v, line 19 */
- if (out_grouping_b(z, g_v, 97, 121, 0)) return 0; /* non v, line 19 */
+static int r_shortv(struct SN_env * z) {
+ if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) return 0;
+ if (in_grouping_b(z, g_v, 97, 121, 0)) return 0;
+ if (out_grouping_b(z, g_v, 97, 121, 0)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 21 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 22 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_Step_1a(struct SN_env * z) { /* backwardmode */
+static int r_Step_1a(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 25 */
- if (z->c <= z->lb || z->p[z->c - 1] != 115) return 0; /* substring, line 25 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 115) return 0;
among_var = find_among_b(z, a_0, 4);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 25 */
- switch (among_var) { /* among, line 25 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 2, s_0); /* <-, line 26 */
+ { int ret = slice_from_s(z, 2, s_0);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 27 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 29 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -266,70 +266,70 @@ static int r_Step_1a(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_1b(struct SN_env * z) { /* backwardmode */
+static int r_Step_1b(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 34 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0; /* substring, line 34 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0;
among_var = find_among_b(z, a_2, 3);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 34 */
- switch (among_var) { /* among, line 34 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R1(z); /* call R1, line 35 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 2, s_2); /* <-, line 35 */
+ { int ret = slice_from_s(z, 2, s_2);
if (ret < 0) return ret;
}
break;
case 2:
- { int m_test1 = z->l - z->c; /* test, line 38 */
- { /* gopast */ /* grouping v, line 38 */
+ { int m_test1 = z->l - z->c;
+ {
int ret = out_grouping_b(z, g_v, 97, 121, 1);
if (ret < 0) return 0;
z->c -= ret;
}
z->c = z->l - m_test1;
}
- { int ret = slice_del(z); /* delete, line 38 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m_test2 = z->l - z->c; /* test, line 39 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else /* substring, line 39 */
+ { int m_test2 = z->l - z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else
among_var = find_among_b(z, a_1, 13);
if (!(among_var)) return 0;
z->c = z->l - m_test2;
}
- switch (among_var) { /* among, line 39 */
+ switch (among_var) {
case 1:
{ int ret;
{ int saved_c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_3); /* <+, line 41 */
+ ret = insert_s(z, z->c, z->c, 1, s_3);
z->c = saved_c;
}
if (ret < 0) return ret;
}
break;
case 2:
- z->ket = z->c; /* [, line 44 */
+ z->ket = z->c;
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 44 */
- z->bra = z->c; /* ], line 44 */
- { int ret = slice_del(z); /* delete, line 44 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- if (z->c != z->I[0]) return 0; /* atmark, line 45 */
- { int m_test3 = z->l - z->c; /* test, line 45 */
- { int ret = r_shortv(z); /* call shortv, line 45 */
+ if (z->c != z->I[1]) return 0;
+ { int m_test3 = z->l - z->c;
+ { int ret = r_shortv(z);
if (ret <= 0) return ret;
}
z->c = z->l - m_test3;
}
{ int ret;
{ int saved_c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_4); /* <+, line 45 */
+ ret = insert_s(z, z->c, z->c, 1, s_4);
z->c = saved_c;
}
if (ret < 0) return ret;
@@ -341,103 +341,103 @@ static int r_Step_1b(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_1c(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 52 */
- { int m1 = z->l - z->c; (void)m1; /* or, line 52 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1; /* literal, line 52 */
+static int r_Step_1c(struct SN_env * z) {
+ z->ket = z->c;
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0; /* literal, line 52 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0;
z->c--;
}
lab0:
- z->bra = z->c; /* ], line 52 */
- { /* gopast */ /* grouping v, line 53 */
+ z->bra = z->c;
+ {
int ret = out_grouping_b(z, g_v, 97, 121, 1);
if (ret < 0) return 0;
z->c -= ret;
}
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 54 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Step_2(struct SN_env * z) { /* backwardmode */
+static int r_Step_2(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 58 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 58 */
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_3, 20);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 58 */
- { int ret = r_R1(z); /* call R1, line 58 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 58 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 4, s_6); /* <-, line 59 */
+ { int ret = slice_from_s(z, 4, s_6);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 4, s_7); /* <-, line 60 */
+ { int ret = slice_from_s(z, 4, s_7);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 4, s_8); /* <-, line 61 */
+ { int ret = slice_from_s(z, 4, s_8);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 4, s_9); /* <-, line 62 */
+ { int ret = slice_from_s(z, 4, s_9);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 3, s_10); /* <-, line 63 */
+ { int ret = slice_from_s(z, 3, s_10);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 1, s_11); /* <-, line 64 */
+ { int ret = slice_from_s(z, 1, s_11);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = slice_from_s(z, 3, s_12); /* <-, line 66 */
+ { int ret = slice_from_s(z, 3, s_12);
if (ret < 0) return ret;
}
break;
case 8:
- { int ret = slice_from_s(z, 3, s_13); /* <-, line 68 */
+ { int ret = slice_from_s(z, 3, s_13);
if (ret < 0) return ret;
}
break;
case 9:
- { int ret = slice_from_s(z, 2, s_14); /* <-, line 69 */
+ { int ret = slice_from_s(z, 2, s_14);
if (ret < 0) return ret;
}
break;
case 10:
- { int ret = slice_from_s(z, 3, s_15); /* <-, line 72 */
+ { int ret = slice_from_s(z, 3, s_15);
if (ret < 0) return ret;
}
break;
case 11:
- { int ret = slice_from_s(z, 3, s_16); /* <-, line 74 */
+ { int ret = slice_from_s(z, 3, s_16);
if (ret < 0) return ret;
}
break;
case 12:
- { int ret = slice_from_s(z, 3, s_17); /* <-, line 76 */
+ { int ret = slice_from_s(z, 3, s_17);
if (ret < 0) return ret;
}
break;
case 13:
- { int ret = slice_from_s(z, 3, s_18); /* <-, line 77 */
+ { int ret = slice_from_s(z, 3, s_18);
if (ret < 0) return ret;
}
break;
@@ -445,29 +445,29 @@ static int r_Step_2(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_3(struct SN_env * z) { /* backwardmode */
+static int r_Step_3(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 82 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 82 */
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_4, 7);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 82 */
- { int ret = r_R1(z); /* call R1, line 82 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 82 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 2, s_19); /* <-, line 83 */
+ { int ret = slice_from_s(z, 2, s_19);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 2, s_20); /* <-, line 85 */
+ { int ret = slice_from_s(z, 2, s_20);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 87 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -475,34 +475,34 @@ static int r_Step_3(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_4(struct SN_env * z) { /* backwardmode */
+static int r_Step_4(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 92 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((3961384 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 92 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((3961384 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_5, 19);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 92 */
- { int ret = r_R2(z); /* call R2, line 92 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 92 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 95 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int m1 = z->l - z->c; (void)m1; /* or, line 96 */
- if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1; /* literal, line 96 */
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0; /* literal, line 96 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0;
z->c--;
}
lab0:
- { int ret = slice_del(z); /* delete, line 96 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -510,24 +510,24 @@ static int r_Step_4(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Step_5a(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 101 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0; /* literal, line 101 */
+static int r_Step_5a(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
- z->bra = z->c; /* ], line 101 */
- { int m1 = z->l - z->c; (void)m1; /* or, line 102 */
- { int ret = r_R2(z); /* call R2, line 102 */
+ z->bra = z->c;
+ { int m1 = z->l - z->c; (void)m1;
+ { int ret = r_R2(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
goto lab0;
lab1:
z->c = z->l - m1;
- { int ret = r_R1(z); /* call R1, line 102 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int m2 = z->l - z->c; (void)m2; /* not, line 102 */
- { int ret = r_shortv(z); /* call shortv, line 102 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_shortv(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
@@ -537,64 +537,63 @@ static int r_Step_5a(struct SN_env * z) { /* backwardmode */
}
}
lab0:
- { int ret = slice_del(z); /* delete, line 103 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Step_5b(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 107 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0; /* literal, line 107 */
+static int r_Step_5b(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
z->c--;
- z->bra = z->c; /* ], line 107 */
- { int ret = r_R2(z); /* call R2, line 108 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0; /* literal, line 108 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
z->c--;
- { int ret = slice_del(z); /* delete, line 109 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-extern int porter_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
- z->B[0] = 0; /* unset Y_found, line 115 */
- { int c1 = z->c; /* do, line 116 */
- z->bra = z->c; /* [, line 116 */
- if (z->c == z->l || z->p[z->c] != 'y') goto lab0; /* literal, line 116 */
+extern int porter_ISO_8859_1_stem(struct SN_env * z) {
+ z->I[2] = 0;
+ { int c1 = z->c;
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab0;
z->c++;
- z->ket = z->c; /* ], line 116 */
- { int ret = slice_from_s(z, 1, s_21); /* <-, line 116 */
+ z->ket = z->c;
+ { int ret = slice_from_s(z, 1, s_21);
if (ret < 0) return ret;
}
- z->B[0] = 1; /* set Y_found, line 116 */
+ z->I[2] = 1;
lab0:
z->c = c1;
}
- { int c2 = z->c; /* do, line 117 */
-/* repeat, line 117 */
-
- while(1) { int c3 = z->c;
- while(1) { /* goto, line 117 */
+ { int c2 = z->c;
+ while(1) {
+ int c3 = z->c;
+ while(1) {
int c4 = z->c;
- if (in_grouping(z, g_v, 97, 121, 0)) goto lab3; /* grouping v, line 117 */
- z->bra = z->c; /* [, line 117 */
- if (z->c == z->l || z->p[z->c] != 'y') goto lab3; /* literal, line 117 */
+ if (in_grouping(z, g_v, 97, 121, 0)) goto lab3;
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
z->c++;
- z->ket = z->c; /* ], line 117 */
+ z->ket = z->c;
z->c = c4;
break;
lab3:
z->c = c4;
if (z->c >= z->l) goto lab2;
- z->c++; /* goto, line 117 */
+ z->c++;
}
- { int ret = slice_from_s(z, 1, s_22); /* <-, line 117 */
+ { int ret = slice_from_s(z, 1, s_22);
if (ret < 0) return ret;
}
- z->B[0] = 1; /* set Y_found, line 117 */
+ z->I[2] = 1;
continue;
lab2:
z->c = c3;
@@ -602,104 +601,103 @@ extern int porter_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
}
z->c = c2;
}
- z->I[0] = z->l; /* $p1 = , line 119 */
- z->I[1] = z->l; /* $p2 = , line 120 */
- { int c5 = z->c; /* do, line 121 */
- { /* gopast */ /* grouping v, line 122 */
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c5 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- { /* gopast */ /* non v, line 122 */
+ {
int ret = in_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 122 */
- { /* gopast */ /* grouping v, line 123 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- { /* gopast */ /* non v, line 123 */
+ {
int ret = in_grouping(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p2, line 123 */
+ z->I[0] = z->c;
lab4:
z->c = c5;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 126 */
+ z->lb = z->c; z->c = z->l;
- { int m6 = z->l - z->c; (void)m6; /* do, line 127 */
- { int ret = r_Step_1a(z); /* call Step_1a, line 127 */
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_Step_1a(z);
if (ret < 0) return ret;
}
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 */
+ { int m7 = z->l - z->c; (void)m7;
+ { int ret = r_Step_1b(z);
if (ret < 0) return ret;
}
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 */
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_Step_1c(z);
if (ret < 0) return ret;
}
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 */
+ { int m9 = z->l - z->c; (void)m9;
+ { int ret = r_Step_2(z);
if (ret < 0) return ret;
}
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 */
+ { int m10 = z->l - z->c; (void)m10;
+ { int ret = r_Step_3(z);
if (ret < 0) return ret;
}
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 */
+ { int m11 = z->l - z->c; (void)m11;
+ { int ret = r_Step_4(z);
if (ret < 0) return ret;
}
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 */
+ { int m12 = z->l - z->c; (void)m12;
+ { int ret = r_Step_5a(z);
if (ret < 0) return ret;
}
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 */
+ { int m13 = z->l - z->c; (void)m13;
+ { int ret = r_Step_5b(z);
if (ret < 0) return ret;
}
z->c = z->l - m13;
}
z->c = z->lb;
- { int c14 = z->c; /* do, line 137 */
- 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 c14 = z->c;
+ if (!(z->I[2])) goto lab5;
+ while(1) {
+ int c15 = z->c;
+ while(1) {
int c16 = z->c;
- z->bra = z->c; /* [, line 137 */
- if (z->c == z->l || z->p[z->c] != 'Y') goto lab7; /* literal, line 137 */
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 'Y') goto lab7;
z->c++;
- z->ket = z->c; /* ], line 137 */
+ z->ket = z->c;
z->c = c16;
break;
lab7:
z->c = c16;
if (z->c >= z->l) goto lab6;
- z->c++; /* goto, line 137 */
+ z->c++;
}
- { int ret = slice_from_s(z, 1, s_23); /* <-, line 137 */
+ { int ret = slice_from_s(z, 1, s_23);
if (ret < 0) return ret;
}
continue;
@@ -713,7 +711,7 @@ extern int porter_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * porter_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); }
+extern struct SN_env * porter_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void porter_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_portuguese.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c
index 1e440a66e143c..23d883a7a13c4 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -36,9 +36,9 @@ static const symbol s_0_2[1] = { 0xF5 };
static const struct among a_0[3] =
{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 1, s_0_1, 0, 1, 0},
-/* 2 */ { 1, s_0_2, 0, 2, 0}
+{ 0, 0, -1, 3, 0},
+{ 1, s_0_1, 0, 1, 0},
+{ 1, s_0_2, 0, 2, 0}
};
static const symbol s_1_1[2] = { 'a', '~' };
@@ -46,9 +46,9 @@ static const symbol s_1_2[2] = { 'o', '~' };
static const struct among a_1[3] =
{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 2, s_1_1, 0, 1, 0},
-/* 2 */ { 2, s_1_2, 0, 2, 0}
+{ 0, 0, -1, 3, 0},
+{ 2, s_1_1, 0, 1, 0},
+{ 2, s_1_2, 0, 2, 0}
};
static const symbol s_2_0[2] = { 'i', 'c' };
@@ -58,10 +58,10 @@ static const symbol s_2_3[2] = { 'i', 'v' };
static const struct among a_2[4] =
{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 2, s_2_1, -1, -1, 0},
-/* 2 */ { 2, s_2_2, -1, -1, 0},
-/* 3 */ { 2, s_2_3, -1, 1, 0}
+{ 2, s_2_0, -1, -1, 0},
+{ 2, s_2_1, -1, -1, 0},
+{ 2, s_2_2, -1, -1, 0},
+{ 2, s_2_3, -1, 1, 0}
};
static const symbol s_3_0[4] = { 'a', 'n', 't', 'e' };
@@ -70,9 +70,9 @@ static const symbol s_3_2[4] = { 0xED, 'v', 'e', 'l' };
static const struct among a_3[3] =
{
-/* 0 */ { 4, s_3_0, -1, 1, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0},
-/* 2 */ { 4, s_3_2, -1, 1, 0}
+{ 4, s_3_0, -1, 1, 0},
+{ 4, s_3_1, -1, 1, 0},
+{ 4, s_3_2, -1, 1, 0}
};
static const symbol s_4_0[2] = { 'i', 'c' };
@@ -81,9 +81,9 @@ static const symbol s_4_2[2] = { 'i', 'v' };
static const struct among a_4[3] =
{
-/* 0 */ { 2, s_4_0, -1, 1, 0},
-/* 1 */ { 4, s_4_1, -1, 1, 0},
-/* 2 */ { 2, s_4_2, -1, 1, 0}
+{ 2, s_4_0, -1, 1, 0},
+{ 4, s_4_1, -1, 1, 0},
+{ 2, s_4_2, -1, 1, 0}
};
static const symbol s_5_0[3] = { 'i', 'c', 'a' };
@@ -134,51 +134,51 @@ static const symbol s_5_44[4] = { 'i', 'v', 'o', 's' };
static const struct among a_5[45] =
{
-/* 0 */ { 3, s_5_0, -1, 1, 0},
-/* 1 */ { 5, s_5_1, -1, 1, 0},
-/* 2 */ { 5, s_5_2, -1, 4, 0},
-/* 3 */ { 5, s_5_3, -1, 2, 0},
-/* 4 */ { 3, s_5_4, -1, 9, 0},
-/* 5 */ { 5, s_5_5, -1, 1, 0},
-/* 6 */ { 3, s_5_6, -1, 1, 0},
-/* 7 */ { 4, s_5_7, -1, 1, 0},
-/* 8 */ { 3, s_5_8, -1, 8, 0},
-/* 9 */ { 3, s_5_9, -1, 1, 0},
-/* 10 */ { 5, s_5_10, -1, 7, 0},
-/* 11 */ { 4, s_5_11, -1, 1, 0},
-/* 12 */ { 5, s_5_12, -1, 6, 0},
-/* 13 */ { 6, s_5_13, 12, 5, 0},
-/* 14 */ { 4, s_5_14, -1, 1, 0},
-/* 15 */ { 4, s_5_15, -1, 1, 0},
-/* 16 */ { 3, s_5_16, -1, 1, 0},
-/* 17 */ { 4, s_5_17, -1, 1, 0},
-/* 18 */ { 3, s_5_18, -1, 1, 0},
-/* 19 */ { 6, s_5_19, -1, 1, 0},
-/* 20 */ { 6, s_5_20, -1, 1, 0},
-/* 21 */ { 3, s_5_21, -1, 8, 0},
-/* 22 */ { 5, s_5_22, -1, 1, 0},
-/* 23 */ { 5, s_5_23, -1, 3, 0},
-/* 24 */ { 4, s_5_24, -1, 1, 0},
-/* 25 */ { 4, s_5_25, -1, 1, 0},
-/* 26 */ { 6, s_5_26, -1, 4, 0},
-/* 27 */ { 6, s_5_27, -1, 2, 0},
-/* 28 */ { 4, s_5_28, -1, 9, 0},
-/* 29 */ { 6, s_5_29, -1, 1, 0},
-/* 30 */ { 4, s_5_30, -1, 1, 0},
-/* 31 */ { 5, s_5_31, -1, 1, 0},
-/* 32 */ { 4, s_5_32, -1, 8, 0},
-/* 33 */ { 4, s_5_33, -1, 1, 0},
-/* 34 */ { 6, s_5_34, -1, 7, 0},
-/* 35 */ { 6, s_5_35, -1, 1, 0},
-/* 36 */ { 5, s_5_36, -1, 1, 0},
-/* 37 */ { 6, s_5_37, -1, 1, 0},
-/* 38 */ { 6, s_5_38, -1, 3, 0},
-/* 39 */ { 4, s_5_39, -1, 1, 0},
-/* 40 */ { 5, s_5_40, -1, 1, 0},
-/* 41 */ { 4, s_5_41, -1, 1, 0},
-/* 42 */ { 7, s_5_42, -1, 1, 0},
-/* 43 */ { 7, s_5_43, -1, 1, 0},
-/* 44 */ { 4, s_5_44, -1, 8, 0}
+{ 3, s_5_0, -1, 1, 0},
+{ 5, s_5_1, -1, 1, 0},
+{ 5, s_5_2, -1, 4, 0},
+{ 5, s_5_3, -1, 2, 0},
+{ 3, s_5_4, -1, 9, 0},
+{ 5, s_5_5, -1, 1, 0},
+{ 3, s_5_6, -1, 1, 0},
+{ 4, s_5_7, -1, 1, 0},
+{ 3, s_5_8, -1, 8, 0},
+{ 3, s_5_9, -1, 1, 0},
+{ 5, s_5_10, -1, 7, 0},
+{ 4, s_5_11, -1, 1, 0},
+{ 5, s_5_12, -1, 6, 0},
+{ 6, s_5_13, 12, 5, 0},
+{ 4, s_5_14, -1, 1, 0},
+{ 4, s_5_15, -1, 1, 0},
+{ 3, s_5_16, -1, 1, 0},
+{ 4, s_5_17, -1, 1, 0},
+{ 3, s_5_18, -1, 1, 0},
+{ 6, s_5_19, -1, 1, 0},
+{ 6, s_5_20, -1, 1, 0},
+{ 3, s_5_21, -1, 8, 0},
+{ 5, s_5_22, -1, 1, 0},
+{ 5, s_5_23, -1, 3, 0},
+{ 4, s_5_24, -1, 1, 0},
+{ 4, s_5_25, -1, 1, 0},
+{ 6, s_5_26, -1, 4, 0},
+{ 6, s_5_27, -1, 2, 0},
+{ 4, s_5_28, -1, 9, 0},
+{ 6, s_5_29, -1, 1, 0},
+{ 4, s_5_30, -1, 1, 0},
+{ 5, s_5_31, -1, 1, 0},
+{ 4, s_5_32, -1, 8, 0},
+{ 4, s_5_33, -1, 1, 0},
+{ 6, s_5_34, -1, 7, 0},
+{ 6, s_5_35, -1, 1, 0},
+{ 5, s_5_36, -1, 1, 0},
+{ 6, s_5_37, -1, 1, 0},
+{ 6, s_5_38, -1, 3, 0},
+{ 4, s_5_39, -1, 1, 0},
+{ 5, s_5_40, -1, 1, 0},
+{ 4, s_5_41, -1, 1, 0},
+{ 7, s_5_42, -1, 1, 0},
+{ 7, s_5_43, -1, 1, 0},
+{ 4, s_5_44, -1, 8, 0}
};
static const symbol s_6_0[3] = { 'a', 'd', 'a' };
@@ -304,126 +304,126 @@ static const symbol s_6_119[3] = { 'i', 'r', 0xE1 };
static const struct among a_6[120] =
{
-/* 0 */ { 3, s_6_0, -1, 1, 0},
-/* 1 */ { 3, s_6_1, -1, 1, 0},
-/* 2 */ { 2, s_6_2, -1, 1, 0},
-/* 3 */ { 4, s_6_3, 2, 1, 0},
-/* 4 */ { 4, s_6_4, 2, 1, 0},
-/* 5 */ { 4, s_6_5, 2, 1, 0},
-/* 6 */ { 3, s_6_6, -1, 1, 0},
-/* 7 */ { 3, s_6_7, -1, 1, 0},
-/* 8 */ { 3, s_6_8, -1, 1, 0},
-/* 9 */ { 3, s_6_9, -1, 1, 0},
-/* 10 */ { 4, s_6_10, -1, 1, 0},
-/* 11 */ { 4, s_6_11, -1, 1, 0},
-/* 12 */ { 4, s_6_12, -1, 1, 0},
-/* 13 */ { 4, s_6_13, -1, 1, 0},
-/* 14 */ { 4, s_6_14, -1, 1, 0},
-/* 15 */ { 4, s_6_15, -1, 1, 0},
-/* 16 */ { 2, s_6_16, -1, 1, 0},
-/* 17 */ { 4, s_6_17, 16, 1, 0},
-/* 18 */ { 4, s_6_18, 16, 1, 0},
-/* 19 */ { 4, s_6_19, 16, 1, 0},
-/* 20 */ { 2, s_6_20, -1, 1, 0},
-/* 21 */ { 3, s_6_21, 20, 1, 0},
-/* 22 */ { 5, s_6_22, 21, 1, 0},
-/* 23 */ { 5, s_6_23, 21, 1, 0},
-/* 24 */ { 5, s_6_24, 21, 1, 0},
-/* 25 */ { 4, s_6_25, 20, 1, 0},
-/* 26 */ { 4, s_6_26, 20, 1, 0},
-/* 27 */ { 4, s_6_27, 20, 1, 0},
-/* 28 */ { 4, s_6_28, 20, 1, 0},
-/* 29 */ { 2, s_6_29, -1, 1, 0},
-/* 30 */ { 4, s_6_30, 29, 1, 0},
-/* 31 */ { 4, s_6_31, 29, 1, 0},
-/* 32 */ { 4, s_6_32, 29, 1, 0},
-/* 33 */ { 5, s_6_33, 29, 1, 0},
-/* 34 */ { 5, s_6_34, 29, 1, 0},
-/* 35 */ { 5, s_6_35, 29, 1, 0},
-/* 36 */ { 3, s_6_36, -1, 1, 0},
-/* 37 */ { 3, s_6_37, -1, 1, 0},
-/* 38 */ { 4, s_6_38, -1, 1, 0},
-/* 39 */ { 4, s_6_39, -1, 1, 0},
-/* 40 */ { 4, s_6_40, -1, 1, 0},
-/* 41 */ { 5, s_6_41, -1, 1, 0},
-/* 42 */ { 5, s_6_42, -1, 1, 0},
-/* 43 */ { 5, s_6_43, -1, 1, 0},
-/* 44 */ { 2, s_6_44, -1, 1, 0},
-/* 45 */ { 2, s_6_45, -1, 1, 0},
-/* 46 */ { 2, s_6_46, -1, 1, 0},
-/* 47 */ { 2, s_6_47, -1, 1, 0},
-/* 48 */ { 4, s_6_48, 47, 1, 0},
-/* 49 */ { 4, s_6_49, 47, 1, 0},
-/* 50 */ { 3, s_6_50, 47, 1, 0},
-/* 51 */ { 5, s_6_51, 50, 1, 0},
-/* 52 */ { 5, s_6_52, 50, 1, 0},
-/* 53 */ { 5, s_6_53, 50, 1, 0},
-/* 54 */ { 4, s_6_54, 47, 1, 0},
-/* 55 */ { 4, s_6_55, 47, 1, 0},
-/* 56 */ { 4, s_6_56, 47, 1, 0},
-/* 57 */ { 4, s_6_57, 47, 1, 0},
-/* 58 */ { 2, s_6_58, -1, 1, 0},
-/* 59 */ { 5, s_6_59, 58, 1, 0},
-/* 60 */ { 5, s_6_60, 58, 1, 0},
-/* 61 */ { 5, s_6_61, 58, 1, 0},
-/* 62 */ { 4, s_6_62, 58, 1, 0},
-/* 63 */ { 4, s_6_63, 58, 1, 0},
-/* 64 */ { 4, s_6_64, 58, 1, 0},
-/* 65 */ { 5, s_6_65, 58, 1, 0},
-/* 66 */ { 5, s_6_66, 58, 1, 0},
-/* 67 */ { 5, s_6_67, 58, 1, 0},
-/* 68 */ { 5, s_6_68, 58, 1, 0},
-/* 69 */ { 5, s_6_69, 58, 1, 0},
-/* 70 */ { 5, s_6_70, 58, 1, 0},
-/* 71 */ { 2, s_6_71, -1, 1, 0},
-/* 72 */ { 3, s_6_72, 71, 1, 0},
-/* 73 */ { 3, s_6_73, 71, 1, 0},
-/* 74 */ { 5, s_6_74, 73, 1, 0},
-/* 75 */ { 5, s_6_75, 73, 1, 0},
-/* 76 */ { 5, s_6_76, 73, 1, 0},
-/* 77 */ { 5, s_6_77, 73, 1, 0},
-/* 78 */ { 5, s_6_78, 73, 1, 0},
-/* 79 */ { 5, s_6_79, 73, 1, 0},
-/* 80 */ { 6, s_6_80, 73, 1, 0},
-/* 81 */ { 6, s_6_81, 73, 1, 0},
-/* 82 */ { 6, s_6_82, 73, 1, 0},
-/* 83 */ { 5, s_6_83, 73, 1, 0},
-/* 84 */ { 4, s_6_84, 73, 1, 0},
-/* 85 */ { 6, s_6_85, 84, 1, 0},
-/* 86 */ { 6, s_6_86, 84, 1, 0},
-/* 87 */ { 6, s_6_87, 84, 1, 0},
-/* 88 */ { 4, s_6_88, -1, 1, 0},
-/* 89 */ { 4, s_6_89, -1, 1, 0},
-/* 90 */ { 4, s_6_90, -1, 1, 0},
-/* 91 */ { 6, s_6_91, 90, 1, 0},
-/* 92 */ { 6, s_6_92, 90, 1, 0},
-/* 93 */ { 6, s_6_93, 90, 1, 0},
-/* 94 */ { 6, s_6_94, 90, 1, 0},
-/* 95 */ { 5, s_6_95, 90, 1, 0},
-/* 96 */ { 7, s_6_96, 95, 1, 0},
-/* 97 */ { 7, s_6_97, 95, 1, 0},
-/* 98 */ { 7, s_6_98, 95, 1, 0},
-/* 99 */ { 4, s_6_99, -1, 1, 0},
-/*100 */ { 6, s_6_100, 99, 1, 0},
-/*101 */ { 6, s_6_101, 99, 1, 0},
-/*102 */ { 6, s_6_102, 99, 1, 0},
-/*103 */ { 7, s_6_103, 99, 1, 0},
-/*104 */ { 7, s_6_104, 99, 1, 0},
-/*105 */ { 7, s_6_105, 99, 1, 0},
-/*106 */ { 4, s_6_106, -1, 1, 0},
-/*107 */ { 5, s_6_107, -1, 1, 0},
-/*108 */ { 5, s_6_108, -1, 1, 0},
-/*109 */ { 5, s_6_109, -1, 1, 0},
-/*110 */ { 4, s_6_110, -1, 1, 0},
-/*111 */ { 4, s_6_111, -1, 1, 0},
-/*112 */ { 4, s_6_112, -1, 1, 0},
-/*113 */ { 4, s_6_113, -1, 1, 0},
-/*114 */ { 2, s_6_114, -1, 1, 0},
-/*115 */ { 2, s_6_115, -1, 1, 0},
-/*116 */ { 2, s_6_116, -1, 1, 0},
-/*117 */ { 3, s_6_117, -1, 1, 0},
-/*118 */ { 3, s_6_118, -1, 1, 0},
-/*119 */ { 3, s_6_119, -1, 1, 0}
+{ 3, s_6_0, -1, 1, 0},
+{ 3, s_6_1, -1, 1, 0},
+{ 2, s_6_2, -1, 1, 0},
+{ 4, s_6_3, 2, 1, 0},
+{ 4, s_6_4, 2, 1, 0},
+{ 4, s_6_5, 2, 1, 0},
+{ 3, s_6_6, -1, 1, 0},
+{ 3, s_6_7, -1, 1, 0},
+{ 3, s_6_8, -1, 1, 0},
+{ 3, s_6_9, -1, 1, 0},
+{ 4, s_6_10, -1, 1, 0},
+{ 4, s_6_11, -1, 1, 0},
+{ 4, s_6_12, -1, 1, 0},
+{ 4, s_6_13, -1, 1, 0},
+{ 4, s_6_14, -1, 1, 0},
+{ 4, s_6_15, -1, 1, 0},
+{ 2, s_6_16, -1, 1, 0},
+{ 4, s_6_17, 16, 1, 0},
+{ 4, s_6_18, 16, 1, 0},
+{ 4, s_6_19, 16, 1, 0},
+{ 2, s_6_20, -1, 1, 0},
+{ 3, s_6_21, 20, 1, 0},
+{ 5, s_6_22, 21, 1, 0},
+{ 5, s_6_23, 21, 1, 0},
+{ 5, s_6_24, 21, 1, 0},
+{ 4, s_6_25, 20, 1, 0},
+{ 4, s_6_26, 20, 1, 0},
+{ 4, s_6_27, 20, 1, 0},
+{ 4, s_6_28, 20, 1, 0},
+{ 2, s_6_29, -1, 1, 0},
+{ 4, s_6_30, 29, 1, 0},
+{ 4, s_6_31, 29, 1, 0},
+{ 4, s_6_32, 29, 1, 0},
+{ 5, s_6_33, 29, 1, 0},
+{ 5, s_6_34, 29, 1, 0},
+{ 5, s_6_35, 29, 1, 0},
+{ 3, s_6_36, -1, 1, 0},
+{ 3, s_6_37, -1, 1, 0},
+{ 4, s_6_38, -1, 1, 0},
+{ 4, s_6_39, -1, 1, 0},
+{ 4, s_6_40, -1, 1, 0},
+{ 5, s_6_41, -1, 1, 0},
+{ 5, s_6_42, -1, 1, 0},
+{ 5, s_6_43, -1, 1, 0},
+{ 2, s_6_44, -1, 1, 0},
+{ 2, s_6_45, -1, 1, 0},
+{ 2, s_6_46, -1, 1, 0},
+{ 2, s_6_47, -1, 1, 0},
+{ 4, s_6_48, 47, 1, 0},
+{ 4, s_6_49, 47, 1, 0},
+{ 3, s_6_50, 47, 1, 0},
+{ 5, s_6_51, 50, 1, 0},
+{ 5, s_6_52, 50, 1, 0},
+{ 5, s_6_53, 50, 1, 0},
+{ 4, s_6_54, 47, 1, 0},
+{ 4, s_6_55, 47, 1, 0},
+{ 4, s_6_56, 47, 1, 0},
+{ 4, s_6_57, 47, 1, 0},
+{ 2, s_6_58, -1, 1, 0},
+{ 5, s_6_59, 58, 1, 0},
+{ 5, s_6_60, 58, 1, 0},
+{ 5, s_6_61, 58, 1, 0},
+{ 4, s_6_62, 58, 1, 0},
+{ 4, s_6_63, 58, 1, 0},
+{ 4, s_6_64, 58, 1, 0},
+{ 5, s_6_65, 58, 1, 0},
+{ 5, s_6_66, 58, 1, 0},
+{ 5, s_6_67, 58, 1, 0},
+{ 5, s_6_68, 58, 1, 0},
+{ 5, s_6_69, 58, 1, 0},
+{ 5, s_6_70, 58, 1, 0},
+{ 2, s_6_71, -1, 1, 0},
+{ 3, s_6_72, 71, 1, 0},
+{ 3, s_6_73, 71, 1, 0},
+{ 5, s_6_74, 73, 1, 0},
+{ 5, s_6_75, 73, 1, 0},
+{ 5, s_6_76, 73, 1, 0},
+{ 5, s_6_77, 73, 1, 0},
+{ 5, s_6_78, 73, 1, 0},
+{ 5, s_6_79, 73, 1, 0},
+{ 6, s_6_80, 73, 1, 0},
+{ 6, s_6_81, 73, 1, 0},
+{ 6, s_6_82, 73, 1, 0},
+{ 5, s_6_83, 73, 1, 0},
+{ 4, s_6_84, 73, 1, 0},
+{ 6, s_6_85, 84, 1, 0},
+{ 6, s_6_86, 84, 1, 0},
+{ 6, s_6_87, 84, 1, 0},
+{ 4, s_6_88, -1, 1, 0},
+{ 4, s_6_89, -1, 1, 0},
+{ 4, s_6_90, -1, 1, 0},
+{ 6, s_6_91, 90, 1, 0},
+{ 6, s_6_92, 90, 1, 0},
+{ 6, s_6_93, 90, 1, 0},
+{ 6, s_6_94, 90, 1, 0},
+{ 5, s_6_95, 90, 1, 0},
+{ 7, s_6_96, 95, 1, 0},
+{ 7, s_6_97, 95, 1, 0},
+{ 7, s_6_98, 95, 1, 0},
+{ 4, s_6_99, -1, 1, 0},
+{ 6, s_6_100, 99, 1, 0},
+{ 6, s_6_101, 99, 1, 0},
+{ 6, s_6_102, 99, 1, 0},
+{ 7, s_6_103, 99, 1, 0},
+{ 7, s_6_104, 99, 1, 0},
+{ 7, s_6_105, 99, 1, 0},
+{ 4, s_6_106, -1, 1, 0},
+{ 5, s_6_107, -1, 1, 0},
+{ 5, s_6_108, -1, 1, 0},
+{ 5, s_6_109, -1, 1, 0},
+{ 4, s_6_110, -1, 1, 0},
+{ 4, s_6_111, -1, 1, 0},
+{ 4, s_6_112, -1, 1, 0},
+{ 4, s_6_113, -1, 1, 0},
+{ 2, s_6_114, -1, 1, 0},
+{ 2, s_6_115, -1, 1, 0},
+{ 2, s_6_116, -1, 1, 0},
+{ 3, s_6_117, -1, 1, 0},
+{ 3, s_6_118, -1, 1, 0},
+{ 3, s_6_119, -1, 1, 0}
};
static const symbol s_7_0[1] = { 'a' };
@@ -436,13 +436,13 @@ static const symbol s_7_6[1] = { 0xF3 };
static const struct among a_7[7] =
{
-/* 0 */ { 1, s_7_0, -1, 1, 0},
-/* 1 */ { 1, s_7_1, -1, 1, 0},
-/* 2 */ { 1, s_7_2, -1, 1, 0},
-/* 3 */ { 2, s_7_3, -1, 1, 0},
-/* 4 */ { 1, s_7_4, -1, 1, 0},
-/* 5 */ { 1, s_7_5, -1, 1, 0},
-/* 6 */ { 1, s_7_6, -1, 1, 0}
+{ 1, s_7_0, -1, 1, 0},
+{ 1, s_7_1, -1, 1, 0},
+{ 1, s_7_2, -1, 1, 0},
+{ 2, s_7_3, -1, 1, 0},
+{ 1, s_7_4, -1, 1, 0},
+{ 1, s_7_5, -1, 1, 0},
+{ 1, s_7_6, -1, 1, 0}
};
static const symbol s_8_0[1] = { 'e' };
@@ -452,10 +452,10 @@ static const symbol s_8_3[1] = { 0xEA };
static const struct among a_8[4] =
{
-/* 0 */ { 1, s_8_0, -1, 1, 0},
-/* 1 */ { 1, s_8_1, -1, 2, 0},
-/* 2 */ { 1, s_8_2, -1, 1, 0},
-/* 3 */ { 1, s_8_3, -1, 1, 0}
+{ 1, s_8_0, -1, 1, 0},
+{ 1, s_8_1, -1, 2, 0},
+{ 1, s_8_2, -1, 1, 0},
+{ 1, s_8_3, -1, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 };
@@ -472,30 +472,29 @@ static const symbol s_8[] = { 'a', 't' };
static const symbol s_9[] = { 'i', 'r' };
static const symbol s_10[] = { 'c' };
-static int r_prelude(struct SN_env * z) { /* forwardmode */
+static int r_prelude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ if (z->c >= z->l || (z->p[z->c + 0] != 227 && z->p[z->c + 0] != 245)) among_var = 3; else
among_var = find_among(z, a_0, 3);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 37 */
- switch (among_var) { /* among, line 37 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 2, s_0); /* <-, line 38 */
+ { int ret = slice_from_s(z, 2, s_0);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 2, s_1); /* <-, line 39 */
+ { int ret = slice_from_s(z, 2, s_1);
if (ret < 0) return ret;
}
break;
case 3:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 40 */
+ z->c++;
break;
}
continue;
@@ -506,16 +505,16 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $pV = , line 46 */
- z->I[1] = z->l; /* $p1 = , line 47 */
- z->I[2] = z->l; /* $p2 = , line 48 */
- { int c1 = z->c; /* do, line 50 */
- { int c2 = z->c; /* or, line 52 */
- if (in_grouping(z, g_v, 97, 250, 0)) goto lab2; /* grouping v, line 51 */
- { int c3 = z->c; /* or, line 51 */
- if (out_grouping(z, g_v, 97, 250, 0)) goto lab4; /* non v, line 51 */
- { /* gopast */ /* grouping v, line 51 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping(z, g_v, 97, 250, 0)) goto lab2;
+ { int c3 = z->c;
+ if (out_grouping(z, g_v, 97, 250, 0)) goto lab4;
+ {
int ret = out_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab4;
z->c += ret;
@@ -523,8 +522,8 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab3;
lab4:
z->c = c3;
- if (in_grouping(z, g_v, 97, 250, 0)) goto lab2; /* grouping v, line 51 */
- { /* gopast */ /* non v, line 51 */
+ if (in_grouping(z, g_v, 97, 250, 0)) goto lab2;
+ {
int ret = in_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab2;
z->c += ret;
@@ -534,10 +533,10 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab1;
lab2:
z->c = c2;
- if (out_grouping(z, g_v, 97, 250, 0)) goto lab0; /* non v, line 53 */
- { int c4 = z->c; /* or, line 53 */
- if (out_grouping(z, g_v, 97, 250, 0)) goto lab6; /* non v, line 53 */
- { /* gopast */ /* grouping v, line 53 */
+ if (out_grouping(z, g_v, 97, 250, 0)) goto lab0;
+ { int c4 = z->c;
+ if (out_grouping(z, g_v, 97, 250, 0)) goto lab6;
+ {
int ret = out_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab6;
z->c += ret;
@@ -545,71 +544,70 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab5;
lab6:
z->c = c4;
- if (in_grouping(z, g_v, 97, 250, 0)) goto lab0; /* grouping v, line 53 */
+ if (in_grouping(z, g_v, 97, 250, 0)) goto lab0;
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 53 */
+ z->c++;
}
lab5:
;
}
lab1:
- z->I[0] = z->c; /* setmark pV, line 54 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c5 = z->c; /* do, line 56 */
- { /* gopast */ /* grouping v, line 57 */
+ { int c5 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 57 */
+ {
int ret = in_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p1, line 57 */
- { /* gopast */ /* grouping v, line 58 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 58 */
+ {
int ret = in_grouping(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[2] = z->c; /* setmark p2, line 58 */
+ z->I[0] = z->c;
lab7:
z->c = c5;
}
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
+static int r_postlude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ if (z->c + 1 >= z->l || z->p[z->c + 1] != 126) among_var = 3; else
among_var = find_among(z, a_1, 3);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 63 */
- switch (among_var) { /* among, line 63 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 64 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 65 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 3:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 66 */
+ z->c++;
break;
}
continue;
@@ -620,91 +618,91 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_RV(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 72 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 73 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 74 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 77 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((823330 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 77 */
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((823330 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_5, 45);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 77 */
- switch (among_var) { /* among, line 77 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 93 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 93 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 98 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_4); /* <-, line 98 */
+ { int ret = slice_from_s(z, 3, s_4);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 102 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 102 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_R2(z); /* call R2, line 106 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 4, s_6); /* <-, line 106 */
+ { int ret = slice_from_s(z, 4, s_6);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = r_R1(z); /* call R1, line 110 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 110 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m1 = z->l - z->c; (void)m1; /* try, line 111 */
- z->ket = z->c; /* [, line 112 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m1; goto lab0; } /* substring, line 112 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m1; goto lab0; }
among_var = find_among_b(z, a_2, 4);
if (!(among_var)) { z->c = z->l - m1; goto lab0; }
- z->bra = z->c; /* ], line 112 */
- { int ret = r_R2(z); /* call R2, line 112 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 112 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- switch (among_var) { /* among, line 112 */
+ switch (among_var) {
case 1:
- z->ket = z->c; /* [, line 113 */
- if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - m1; goto lab0; } /* literal, line 113 */
- z->bra = z->c; /* ], line 113 */
- { int ret = r_R2(z); /* call R2, line 113 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - m1; goto lab0; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 113 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -714,22 +712,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 6:
- { int ret = r_R2(z); /* call R2, line 122 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 122 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m2 = z->l - z->c; (void)m2; /* try, line 123 */
- z->ket = z->c; /* [, line 124 */
- if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) { z->c = z->l - m2; goto lab1; } /* substring, line 124 */
+ { int m2 = z->l - z->c; (void)m2;
+ z->ket = z->c;
+ if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) { z->c = z->l - m2; goto lab1; }
if (!(find_among_b(z, a_3, 3))) { z->c = z->l - m2; goto lab1; }
- z->bra = z->c; /* ], line 124 */
- { int ret = r_R2(z); /* call R2, line 127 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m2; goto lab1; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 127 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab1:
@@ -737,22 +735,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 7:
- { int ret = r_R2(z); /* call R2, line 134 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 134 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m3 = z->l - z->c; (void)m3; /* try, line 135 */
- z->ket = z->c; /* [, line 136 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m3; goto lab2; } /* substring, line 136 */
+ { int m3 = z->l - z->c; (void)m3;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m3; goto lab2; }
if (!(find_among_b(z, a_4, 3))) { z->c = z->l - m3; goto lab2; }
- z->bra = z->c; /* ], line 136 */
- { int ret = r_R2(z); /* call R2, line 139 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m3; goto lab2; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 139 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab2:
@@ -760,21 +758,21 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 8:
- { int ret = r_R2(z); /* call R2, line 146 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 146 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m4 = z->l - z->c; (void)m4; /* try, line 147 */
- z->ket = z->c; /* [, line 148 */
- if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m4; goto lab3; } /* literal, line 148 */
- z->bra = z->c; /* ], line 148 */
- { int ret = r_R2(z); /* call R2, line 148 */
+ { int m4 = z->l - z->c; (void)m4;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m4; goto lab3; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m4; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 148 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab3:
@@ -782,12 +780,12 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 9:
- { int ret = r_RV(z); /* call RV, line 153 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0; /* literal, line 153 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
- { int ret = slice_from_s(z, 2, s_9); /* <-, line 154 */
+ { int ret = slice_from_s(z, 2, s_9);
if (ret < 0) return ret;
}
break;
@@ -795,15 +793,15 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_verb_suffix(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 159 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 160 */
- if (!(find_among_b(z, a_6, 120))) { z->lb = mlimit1; return 0; } /* substring, line 160 */
- z->bra = z->c; /* ], line 160 */
- { int ret = slice_del(z); /* delete, line 179 */
+ { int mlimit1;
+ if (z->c < z->I[2]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ if (!(find_among_b(z, a_6, 120))) { z->lb = mlimit1; return 0; }
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
z->lb = mlimit1;
@@ -811,65 +809,65 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 184 */
- if (!(find_among_b(z, a_7, 7))) return 0; /* substring, line 184 */
- z->bra = z->c; /* ], line 184 */
- { int ret = r_RV(z); /* call RV, line 187 */
+static int r_residual_suffix(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_7, 7))) return 0;
+ z->bra = z->c;
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 187 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_residual_form(struct SN_env * z) { /* backwardmode */
+static int r_residual_form(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 192 */
- among_var = find_among_b(z, a_8, 4); /* substring, line 192 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_8, 4);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 192 */
- switch (among_var) { /* among, line 192 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_RV(z); /* call RV, line 194 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 194 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, line 194 */
- { int m1 = z->l - z->c; (void)m1; /* or, line 194 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab1; /* literal, line 194 */
+ z->ket = z->c;
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab1;
z->c--;
- z->bra = z->c; /* ], line 194 */
- { int m_test2 = z->l - z->c; /* test, line 194 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'g') goto lab1; /* literal, line 194 */
+ z->bra = z->c;
+ { int m_test2 = z->l - z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'g') goto lab1;
z->c--;
z->c = z->l - m_test2;
}
goto lab0;
lab1:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0; /* literal, line 195 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
z->c--;
- z->bra = z->c; /* ], line 195 */
- { int m_test3 = z->l - z->c; /* test, line 195 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'c') return 0; /* literal, line 195 */
+ z->bra = z->c;
+ { int m_test3 = z->l - z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'c') return 0;
z->c--;
z->c = z->l - m_test3;
}
}
lab0:
- { int ret = r_RV(z); /* call RV, line 195 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 195 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_10); /* <-, line 196 */
+ { int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
break;
@@ -877,52 +875,52 @@ static int r_residual_form(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int portuguese_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- /* do, line 203 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 203 */
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 204 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 205 */
- { int m3 = z->l - z->c; (void)m3; /* or, line 209 */
- { 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 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int m3 = z->l - z->c; (void)m3;
+ { int m4 = z->l - z->c; (void)m4;
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_standard_suffix(z);
if (ret == 0) goto lab4;
if (ret < 0) return ret;
}
goto lab3;
lab4:
z->c = z->l - m5;
- { int ret = r_verb_suffix(z); /* call verb_suffix, line 206 */
+ { int ret = r_verb_suffix(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
}
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 lab5; /* literal, line 207 */
+ { int m6 = z->l - z->c; (void)m6;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab5;
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 lab5; /* literal, line 207 */
+ z->bra = z->c;
+ { int m_test7 = z->l - z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab5;
z->c--;
z->c = z->l - m_test7;
}
- { int ret = r_RV(z); /* call RV, line 207 */
+ { int ret = r_RV(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 207 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab5:
@@ -932,7 +930,7 @@ extern int portuguese_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
goto lab1;
lab2:
z->c = z->l - m3;
- { int ret = r_residual_suffix(z); /* call residual_suffix, line 209 */
+ { int ret = r_residual_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -941,15 +939,15 @@ extern int portuguese_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_residual_form(z);
if (ret < 0) return ret;
}
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 */
+ { int c9 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c9;
@@ -957,7 +955,7 @@ extern int portuguese_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * portuguese_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); }
+extern struct SN_env * portuguese_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void portuguese_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_spanish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c
index e77aadda6a397..825e68f21edf7 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -39,12 +39,12 @@ static const symbol s_0_5[1] = { 0xFA };
static const struct among a_0[6] =
{
-/* 0 */ { 0, 0, -1, 6, 0},
-/* 1 */ { 1, s_0_1, 0, 1, 0},
-/* 2 */ { 1, s_0_2, 0, 2, 0},
-/* 3 */ { 1, s_0_3, 0, 3, 0},
-/* 4 */ { 1, s_0_4, 0, 4, 0},
-/* 5 */ { 1, s_0_5, 0, 5, 0}
+{ 0, 0, -1, 6, 0},
+{ 1, s_0_1, 0, 1, 0},
+{ 1, s_0_2, 0, 2, 0},
+{ 1, s_0_3, 0, 3, 0},
+{ 1, s_0_4, 0, 4, 0},
+{ 1, s_0_5, 0, 5, 0}
};
static const symbol s_1_0[2] = { 'l', 'a' };
@@ -63,19 +63,19 @@ static const symbol s_1_12[3] = { 'n', 'o', 's' };
static const struct among a_1[13] =
{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 4, s_1_1, 0, -1, 0},
-/* 2 */ { 2, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0},
-/* 4 */ { 2, s_1_4, -1, -1, 0},
-/* 5 */ { 2, s_1_5, -1, -1, 0},
-/* 6 */ { 4, s_1_6, 5, -1, 0},
-/* 7 */ { 3, s_1_7, -1, -1, 0},
-/* 8 */ { 5, s_1_8, 7, -1, 0},
-/* 9 */ { 3, s_1_9, -1, -1, 0},
-/* 10 */ { 3, s_1_10, -1, -1, 0},
-/* 11 */ { 5, s_1_11, 10, -1, 0},
-/* 12 */ { 3, s_1_12, -1, -1, 0}
+{ 2, s_1_0, -1, -1, 0},
+{ 4, s_1_1, 0, -1, 0},
+{ 2, s_1_2, -1, -1, 0},
+{ 2, s_1_3, -1, -1, 0},
+{ 2, s_1_4, -1, -1, 0},
+{ 2, s_1_5, -1, -1, 0},
+{ 4, s_1_6, 5, -1, 0},
+{ 3, s_1_7, -1, -1, 0},
+{ 5, s_1_8, 7, -1, 0},
+{ 3, s_1_9, -1, -1, 0},
+{ 3, s_1_10, -1, -1, 0},
+{ 5, s_1_11, 10, -1, 0},
+{ 3, s_1_12, -1, -1, 0}
};
static const symbol s_2_0[4] = { 'a', 'n', 'd', 'o' };
@@ -92,17 +92,17 @@ static const symbol s_2_10[2] = { 0xED, 'r' };
static const struct among a_2[11] =
{
-/* 0 */ { 4, s_2_0, -1, 6, 0},
-/* 1 */ { 5, s_2_1, -1, 6, 0},
-/* 2 */ { 5, s_2_2, -1, 7, 0},
-/* 3 */ { 4, s_2_3, -1, 2, 0},
-/* 4 */ { 5, s_2_4, -1, 1, 0},
-/* 5 */ { 2, s_2_5, -1, 6, 0},
-/* 6 */ { 2, s_2_6, -1, 6, 0},
-/* 7 */ { 2, s_2_7, -1, 6, 0},
-/* 8 */ { 2, s_2_8, -1, 3, 0},
-/* 9 */ { 2, s_2_9, -1, 4, 0},
-/* 10 */ { 2, s_2_10, -1, 5, 0}
+{ 4, s_2_0, -1, 6, 0},
+{ 5, s_2_1, -1, 6, 0},
+{ 5, s_2_2, -1, 7, 0},
+{ 4, s_2_3, -1, 2, 0},
+{ 5, s_2_4, -1, 1, 0},
+{ 2, s_2_5, -1, 6, 0},
+{ 2, s_2_6, -1, 6, 0},
+{ 2, s_2_7, -1, 6, 0},
+{ 2, s_2_8, -1, 3, 0},
+{ 2, s_2_9, -1, 4, 0},
+{ 2, s_2_10, -1, 5, 0}
};
static const symbol s_3_0[2] = { 'i', 'c' };
@@ -112,10 +112,10 @@ static const symbol s_3_3[2] = { 'i', 'v' };
static const struct among a_3[4] =
{
-/* 0 */ { 2, s_3_0, -1, -1, 0},
-/* 1 */ { 2, s_3_1, -1, -1, 0},
-/* 2 */ { 2, s_3_2, -1, -1, 0},
-/* 3 */ { 2, s_3_3, -1, 1, 0}
+{ 2, s_3_0, -1, -1, 0},
+{ 2, s_3_1, -1, -1, 0},
+{ 2, s_3_2, -1, -1, 0},
+{ 2, s_3_3, -1, 1, 0}
};
static const symbol s_4_0[4] = { 'a', 'b', 'l', 'e' };
@@ -124,9 +124,9 @@ static const symbol s_4_2[4] = { 'a', 'n', 't', 'e' };
static const struct among a_4[3] =
{
-/* 0 */ { 4, s_4_0, -1, 1, 0},
-/* 1 */ { 4, s_4_1, -1, 1, 0},
-/* 2 */ { 4, s_4_2, -1, 1, 0}
+{ 4, s_4_0, -1, 1, 0},
+{ 4, s_4_1, -1, 1, 0},
+{ 4, s_4_2, -1, 1, 0}
};
static const symbol s_5_0[2] = { 'i', 'c' };
@@ -135,9 +135,9 @@ static const symbol s_5_2[2] = { 'i', 'v' };
static const struct among a_5[3] =
{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 4, s_5_1, -1, 1, 0},
-/* 2 */ { 2, s_5_2, -1, 1, 0}
+{ 2, s_5_0, -1, 1, 0},
+{ 4, s_5_1, -1, 1, 0},
+{ 2, s_5_2, -1, 1, 0}
};
static const symbol s_6_0[3] = { 'i', 'c', 'a' };
@@ -189,52 +189,52 @@ static const symbol s_6_45[4] = { 'i', 'v', 'o', 's' };
static const struct among a_6[46] =
{
-/* 0 */ { 3, s_6_0, -1, 1, 0},
-/* 1 */ { 5, s_6_1, -1, 2, 0},
-/* 2 */ { 5, s_6_2, -1, 5, 0},
-/* 3 */ { 5, s_6_3, -1, 2, 0},
-/* 4 */ { 3, s_6_4, -1, 1, 0},
-/* 5 */ { 4, s_6_5, -1, 1, 0},
-/* 6 */ { 3, s_6_6, -1, 9, 0},
-/* 7 */ { 4, s_6_7, -1, 1, 0},
-/* 8 */ { 5, s_6_8, -1, 3, 0},
-/* 9 */ { 4, s_6_9, -1, 8, 0},
-/* 10 */ { 4, s_6_10, -1, 1, 0},
-/* 11 */ { 4, s_6_11, -1, 1, 0},
-/* 12 */ { 4, s_6_12, -1, 2, 0},
-/* 13 */ { 5, s_6_13, -1, 7, 0},
-/* 14 */ { 6, s_6_14, 13, 6, 0},
-/* 15 */ { 5, s_6_15, -1, 2, 0},
-/* 16 */ { 5, s_6_16, -1, 4, 0},
-/* 17 */ { 3, s_6_17, -1, 1, 0},
-/* 18 */ { 4, s_6_18, -1, 1, 0},
-/* 19 */ { 3, s_6_19, -1, 1, 0},
-/* 20 */ { 7, s_6_20, -1, 1, 0},
-/* 21 */ { 7, s_6_21, -1, 1, 0},
-/* 22 */ { 3, s_6_22, -1, 9, 0},
-/* 23 */ { 4, s_6_23, -1, 2, 0},
-/* 24 */ { 4, s_6_24, -1, 1, 0},
-/* 25 */ { 6, s_6_25, -1, 2, 0},
-/* 26 */ { 6, s_6_26, -1, 5, 0},
-/* 27 */ { 6, s_6_27, -1, 2, 0},
-/* 28 */ { 4, s_6_28, -1, 1, 0},
-/* 29 */ { 5, s_6_29, -1, 1, 0},
-/* 30 */ { 4, s_6_30, -1, 9, 0},
-/* 31 */ { 5, s_6_31, -1, 1, 0},
-/* 32 */ { 6, s_6_32, -1, 3, 0},
-/* 33 */ { 6, s_6_33, -1, 8, 0},
-/* 34 */ { 5, s_6_34, -1, 1, 0},
-/* 35 */ { 5, s_6_35, -1, 1, 0},
-/* 36 */ { 7, s_6_36, -1, 2, 0},
-/* 37 */ { 7, s_6_37, -1, 4, 0},
-/* 38 */ { 6, s_6_38, -1, 2, 0},
-/* 39 */ { 5, s_6_39, -1, 2, 0},
-/* 40 */ { 4, s_6_40, -1, 1, 0},
-/* 41 */ { 5, s_6_41, -1, 1, 0},
-/* 42 */ { 4, s_6_42, -1, 1, 0},
-/* 43 */ { 8, s_6_43, -1, 1, 0},
-/* 44 */ { 8, s_6_44, -1, 1, 0},
-/* 45 */ { 4, s_6_45, -1, 9, 0}
+{ 3, s_6_0, -1, 1, 0},
+{ 5, s_6_1, -1, 2, 0},
+{ 5, s_6_2, -1, 5, 0},
+{ 5, s_6_3, -1, 2, 0},
+{ 3, s_6_4, -1, 1, 0},
+{ 4, s_6_5, -1, 1, 0},
+{ 3, s_6_6, -1, 9, 0},
+{ 4, s_6_7, -1, 1, 0},
+{ 5, s_6_8, -1, 3, 0},
+{ 4, s_6_9, -1, 8, 0},
+{ 4, s_6_10, -1, 1, 0},
+{ 4, s_6_11, -1, 1, 0},
+{ 4, s_6_12, -1, 2, 0},
+{ 5, s_6_13, -1, 7, 0},
+{ 6, s_6_14, 13, 6, 0},
+{ 5, s_6_15, -1, 2, 0},
+{ 5, s_6_16, -1, 4, 0},
+{ 3, s_6_17, -1, 1, 0},
+{ 4, s_6_18, -1, 1, 0},
+{ 3, s_6_19, -1, 1, 0},
+{ 7, s_6_20, -1, 1, 0},
+{ 7, s_6_21, -1, 1, 0},
+{ 3, s_6_22, -1, 9, 0},
+{ 4, s_6_23, -1, 2, 0},
+{ 4, s_6_24, -1, 1, 0},
+{ 6, s_6_25, -1, 2, 0},
+{ 6, s_6_26, -1, 5, 0},
+{ 6, s_6_27, -1, 2, 0},
+{ 4, s_6_28, -1, 1, 0},
+{ 5, s_6_29, -1, 1, 0},
+{ 4, s_6_30, -1, 9, 0},
+{ 5, s_6_31, -1, 1, 0},
+{ 6, s_6_32, -1, 3, 0},
+{ 6, s_6_33, -1, 8, 0},
+{ 5, s_6_34, -1, 1, 0},
+{ 5, s_6_35, -1, 1, 0},
+{ 7, s_6_36, -1, 2, 0},
+{ 7, s_6_37, -1, 4, 0},
+{ 6, s_6_38, -1, 2, 0},
+{ 5, s_6_39, -1, 2, 0},
+{ 4, s_6_40, -1, 1, 0},
+{ 5, s_6_41, -1, 1, 0},
+{ 4, s_6_42, -1, 1, 0},
+{ 8, s_6_43, -1, 1, 0},
+{ 8, s_6_44, -1, 1, 0},
+{ 4, s_6_45, -1, 9, 0}
};
static const symbol s_7_0[2] = { 'y', 'a' };
@@ -252,18 +252,18 @@ static const symbol s_7_11[2] = { 'y', 0xF3 };
static const struct among a_7[12] =
{
-/* 0 */ { 2, s_7_0, -1, 1, 0},
-/* 1 */ { 2, s_7_1, -1, 1, 0},
-/* 2 */ { 3, s_7_2, -1, 1, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0},
-/* 4 */ { 5, s_7_4, -1, 1, 0},
-/* 5 */ { 5, s_7_5, -1, 1, 0},
-/* 6 */ { 2, s_7_6, -1, 1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 3, s_7_8, -1, 1, 0},
-/* 9 */ { 4, s_7_9, -1, 1, 0},
-/* 10 */ { 5, s_7_10, -1, 1, 0},
-/* 11 */ { 2, s_7_11, -1, 1, 0}
+{ 2, s_7_0, -1, 1, 0},
+{ 2, s_7_1, -1, 1, 0},
+{ 3, s_7_2, -1, 1, 0},
+{ 3, s_7_3, -1, 1, 0},
+{ 5, s_7_4, -1, 1, 0},
+{ 5, s_7_5, -1, 1, 0},
+{ 2, s_7_6, -1, 1, 0},
+{ 3, s_7_7, -1, 1, 0},
+{ 3, s_7_8, -1, 1, 0},
+{ 4, s_7_9, -1, 1, 0},
+{ 5, s_7_10, -1, 1, 0},
+{ 2, s_7_11, -1, 1, 0}
};
static const symbol s_8_0[3] = { 'a', 'b', 'a' };
@@ -365,102 +365,102 @@ static const symbol s_8_95[2] = { 'i', 0xF3 };
static const struct among a_8[96] =
{
-/* 0 */ { 3, s_8_0, -1, 2, 0},
-/* 1 */ { 3, s_8_1, -1, 2, 0},
-/* 2 */ { 3, s_8_2, -1, 2, 0},
-/* 3 */ { 3, s_8_3, -1, 2, 0},
-/* 4 */ { 4, s_8_4, -1, 2, 0},
-/* 5 */ { 2, s_8_5, -1, 2, 0},
-/* 6 */ { 4, s_8_6, 5, 2, 0},
-/* 7 */ { 4, s_8_7, 5, 2, 0},
-/* 8 */ { 4, s_8_8, 5, 2, 0},
-/* 9 */ { 2, s_8_9, -1, 2, 0},
-/* 10 */ { 2, s_8_10, -1, 2, 0},
-/* 11 */ { 2, s_8_11, -1, 2, 0},
-/* 12 */ { 3, s_8_12, -1, 2, 0},
-/* 13 */ { 4, s_8_13, -1, 2, 0},
-/* 14 */ { 4, s_8_14, -1, 2, 0},
-/* 15 */ { 4, s_8_15, -1, 2, 0},
-/* 16 */ { 2, s_8_16, -1, 2, 0},
-/* 17 */ { 4, s_8_17, 16, 2, 0},
-/* 18 */ { 4, s_8_18, 16, 2, 0},
-/* 19 */ { 5, s_8_19, 16, 2, 0},
-/* 20 */ { 3, s_8_20, 16, 2, 0},
-/* 21 */ { 5, s_8_21, 20, 2, 0},
-/* 22 */ { 5, s_8_22, 20, 2, 0},
-/* 23 */ { 5, s_8_23, 20, 2, 0},
-/* 24 */ { 2, s_8_24, -1, 1, 0},
-/* 25 */ { 4, s_8_25, 24, 2, 0},
-/* 26 */ { 5, s_8_26, 24, 2, 0},
-/* 27 */ { 4, s_8_27, -1, 2, 0},
-/* 28 */ { 5, s_8_28, -1, 2, 0},
-/* 29 */ { 4, s_8_29, -1, 2, 0},
-/* 30 */ { 4, s_8_30, -1, 2, 0},
-/* 31 */ { 4, s_8_31, -1, 2, 0},
-/* 32 */ { 3, s_8_32, -1, 2, 0},
-/* 33 */ { 3, s_8_33, -1, 2, 0},
-/* 34 */ { 4, s_8_34, -1, 2, 0},
-/* 35 */ { 5, s_8_35, -1, 2, 0},
-/* 36 */ { 2, s_8_36, -1, 2, 0},
-/* 37 */ { 2, s_8_37, -1, 2, 0},
-/* 38 */ { 2, s_8_38, -1, 2, 0},
-/* 39 */ { 2, s_8_39, -1, 2, 0},
-/* 40 */ { 4, s_8_40, 39, 2, 0},
-/* 41 */ { 4, s_8_41, 39, 2, 0},
-/* 42 */ { 4, s_8_42, 39, 2, 0},
-/* 43 */ { 4, s_8_43, 39, 2, 0},
-/* 44 */ { 5, s_8_44, 39, 2, 0},
-/* 45 */ { 3, s_8_45, 39, 2, 0},
-/* 46 */ { 5, s_8_46, 45, 2, 0},
-/* 47 */ { 5, s_8_47, 45, 2, 0},
-/* 48 */ { 5, s_8_48, 45, 2, 0},
-/* 49 */ { 2, s_8_49, -1, 1, 0},
-/* 50 */ { 4, s_8_50, 49, 2, 0},
-/* 51 */ { 5, s_8_51, 49, 2, 0},
-/* 52 */ { 5, s_8_52, -1, 2, 0},
-/* 53 */ { 5, s_8_53, -1, 2, 0},
-/* 54 */ { 6, s_8_54, -1, 2, 0},
-/* 55 */ { 4, s_8_55, -1, 2, 0},
-/* 56 */ { 6, s_8_56, 55, 2, 0},
-/* 57 */ { 6, s_8_57, 55, 2, 0},
-/* 58 */ { 6, s_8_58, 55, 2, 0},
-/* 59 */ { 5, s_8_59, -1, 2, 0},
-/* 60 */ { 6, s_8_60, -1, 2, 0},
-/* 61 */ { 6, s_8_61, -1, 2, 0},
-/* 62 */ { 6, s_8_62, -1, 2, 0},
-/* 63 */ { 3, s_8_63, -1, 2, 0},
-/* 64 */ { 3, s_8_64, -1, 1, 0},
-/* 65 */ { 5, s_8_65, 64, 2, 0},
-/* 66 */ { 5, s_8_66, 64, 2, 0},
-/* 67 */ { 5, s_8_67, 64, 2, 0},
-/* 68 */ { 4, s_8_68, -1, 2, 0},
-/* 69 */ { 4, s_8_69, -1, 2, 0},
-/* 70 */ { 4, s_8_70, -1, 2, 0},
-/* 71 */ { 6, s_8_71, 70, 2, 0},
-/* 72 */ { 6, s_8_72, 70, 2, 0},
-/* 73 */ { 7, s_8_73, 70, 2, 0},
-/* 74 */ { 5, s_8_74, 70, 2, 0},
-/* 75 */ { 7, s_8_75, 74, 2, 0},
-/* 76 */ { 7, s_8_76, 74, 2, 0},
-/* 77 */ { 7, s_8_77, 74, 2, 0},
-/* 78 */ { 4, s_8_78, -1, 1, 0},
-/* 79 */ { 6, s_8_79, 78, 2, 0},
-/* 80 */ { 6, s_8_80, 78, 2, 0},
-/* 81 */ { 6, s_8_81, 78, 2, 0},
-/* 82 */ { 6, s_8_82, 78, 2, 0},
-/* 83 */ { 7, s_8_83, 78, 2, 0},
-/* 84 */ { 4, s_8_84, -1, 2, 0},
-/* 85 */ { 4, s_8_85, -1, 2, 0},
-/* 86 */ { 4, s_8_86, -1, 2, 0},
-/* 87 */ { 4, s_8_87, -1, 2, 0},
-/* 88 */ { 2, s_8_88, -1, 2, 0},
-/* 89 */ { 3, s_8_89, -1, 2, 0},
-/* 90 */ { 3, s_8_90, -1, 2, 0},
-/* 91 */ { 3, s_8_91, -1, 2, 0},
-/* 92 */ { 3, s_8_92, -1, 2, 0},
-/* 93 */ { 3, s_8_93, -1, 2, 0},
-/* 94 */ { 3, s_8_94, -1, 2, 0},
-/* 95 */ { 2, s_8_95, -1, 2, 0}
+{ 3, s_8_0, -1, 2, 0},
+{ 3, s_8_1, -1, 2, 0},
+{ 3, s_8_2, -1, 2, 0},
+{ 3, s_8_3, -1, 2, 0},
+{ 4, s_8_4, -1, 2, 0},
+{ 2, s_8_5, -1, 2, 0},
+{ 4, s_8_6, 5, 2, 0},
+{ 4, s_8_7, 5, 2, 0},
+{ 4, s_8_8, 5, 2, 0},
+{ 2, s_8_9, -1, 2, 0},
+{ 2, s_8_10, -1, 2, 0},
+{ 2, s_8_11, -1, 2, 0},
+{ 3, s_8_12, -1, 2, 0},
+{ 4, s_8_13, -1, 2, 0},
+{ 4, s_8_14, -1, 2, 0},
+{ 4, s_8_15, -1, 2, 0},
+{ 2, s_8_16, -1, 2, 0},
+{ 4, s_8_17, 16, 2, 0},
+{ 4, s_8_18, 16, 2, 0},
+{ 5, s_8_19, 16, 2, 0},
+{ 3, s_8_20, 16, 2, 0},
+{ 5, s_8_21, 20, 2, 0},
+{ 5, s_8_22, 20, 2, 0},
+{ 5, s_8_23, 20, 2, 0},
+{ 2, s_8_24, -1, 1, 0},
+{ 4, s_8_25, 24, 2, 0},
+{ 5, s_8_26, 24, 2, 0},
+{ 4, s_8_27, -1, 2, 0},
+{ 5, s_8_28, -1, 2, 0},
+{ 4, s_8_29, -1, 2, 0},
+{ 4, s_8_30, -1, 2, 0},
+{ 4, s_8_31, -1, 2, 0},
+{ 3, s_8_32, -1, 2, 0},
+{ 3, s_8_33, -1, 2, 0},
+{ 4, s_8_34, -1, 2, 0},
+{ 5, s_8_35, -1, 2, 0},
+{ 2, s_8_36, -1, 2, 0},
+{ 2, s_8_37, -1, 2, 0},
+{ 2, s_8_38, -1, 2, 0},
+{ 2, s_8_39, -1, 2, 0},
+{ 4, s_8_40, 39, 2, 0},
+{ 4, s_8_41, 39, 2, 0},
+{ 4, s_8_42, 39, 2, 0},
+{ 4, s_8_43, 39, 2, 0},
+{ 5, s_8_44, 39, 2, 0},
+{ 3, s_8_45, 39, 2, 0},
+{ 5, s_8_46, 45, 2, 0},
+{ 5, s_8_47, 45, 2, 0},
+{ 5, s_8_48, 45, 2, 0},
+{ 2, s_8_49, -1, 1, 0},
+{ 4, s_8_50, 49, 2, 0},
+{ 5, s_8_51, 49, 2, 0},
+{ 5, s_8_52, -1, 2, 0},
+{ 5, s_8_53, -1, 2, 0},
+{ 6, s_8_54, -1, 2, 0},
+{ 4, s_8_55, -1, 2, 0},
+{ 6, s_8_56, 55, 2, 0},
+{ 6, s_8_57, 55, 2, 0},
+{ 6, s_8_58, 55, 2, 0},
+{ 5, s_8_59, -1, 2, 0},
+{ 6, s_8_60, -1, 2, 0},
+{ 6, s_8_61, -1, 2, 0},
+{ 6, s_8_62, -1, 2, 0},
+{ 3, s_8_63, -1, 2, 0},
+{ 3, s_8_64, -1, 1, 0},
+{ 5, s_8_65, 64, 2, 0},
+{ 5, s_8_66, 64, 2, 0},
+{ 5, s_8_67, 64, 2, 0},
+{ 4, s_8_68, -1, 2, 0},
+{ 4, s_8_69, -1, 2, 0},
+{ 4, s_8_70, -1, 2, 0},
+{ 6, s_8_71, 70, 2, 0},
+{ 6, s_8_72, 70, 2, 0},
+{ 7, s_8_73, 70, 2, 0},
+{ 5, s_8_74, 70, 2, 0},
+{ 7, s_8_75, 74, 2, 0},
+{ 7, s_8_76, 74, 2, 0},
+{ 7, s_8_77, 74, 2, 0},
+{ 4, s_8_78, -1, 1, 0},
+{ 6, s_8_79, 78, 2, 0},
+{ 6, s_8_80, 78, 2, 0},
+{ 6, s_8_81, 78, 2, 0},
+{ 6, s_8_82, 78, 2, 0},
+{ 7, s_8_83, 78, 2, 0},
+{ 4, s_8_84, -1, 2, 0},
+{ 4, s_8_85, -1, 2, 0},
+{ 4, s_8_86, -1, 2, 0},
+{ 4, s_8_87, -1, 2, 0},
+{ 2, s_8_88, -1, 2, 0},
+{ 3, s_8_89, -1, 2, 0},
+{ 3, s_8_90, -1, 2, 0},
+{ 3, s_8_91, -1, 2, 0},
+{ 3, s_8_92, -1, 2, 0},
+{ 3, s_8_93, -1, 2, 0},
+{ 3, s_8_94, -1, 2, 0},
+{ 2, s_8_95, -1, 2, 0}
};
static const symbol s_9_0[1] = { 'a' };
@@ -474,14 +474,14 @@ static const symbol s_9_7[1] = { 0xF3 };
static const struct among a_9[8] =
{
-/* 0 */ { 1, s_9_0, -1, 1, 0},
-/* 1 */ { 1, s_9_1, -1, 2, 0},
-/* 2 */ { 1, s_9_2, -1, 1, 0},
-/* 3 */ { 2, s_9_3, -1, 1, 0},
-/* 4 */ { 1, s_9_4, -1, 1, 0},
-/* 5 */ { 1, s_9_5, -1, 2, 0},
-/* 6 */ { 1, s_9_6, -1, 1, 0},
-/* 7 */ { 1, s_9_7, -1, 1, 0}
+{ 1, s_9_0, -1, 1, 0},
+{ 1, s_9_1, -1, 2, 0},
+{ 1, s_9_2, -1, 1, 0},
+{ 2, s_9_3, -1, 1, 0},
+{ 1, s_9_4, -1, 1, 0},
+{ 1, s_9_5, -1, 2, 0},
+{ 1, s_9_6, -1, 1, 0},
+{ 1, s_9_7, -1, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 };
@@ -503,16 +503,16 @@ static const symbol s_13[] = { 'e', 'n', 't', 'e' };
static const symbol s_14[] = { 'a', 't' };
static const symbol s_15[] = { 'a', 't' };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $pV = , line 33 */
- z->I[1] = z->l; /* $p1 = , line 34 */
- z->I[2] = z->l; /* $p2 = , line 35 */
- { int c1 = z->c; /* do, line 37 */
- { int c2 = z->c; /* or, line 39 */
- if (in_grouping(z, g_v, 97, 252, 0)) goto lab2; /* grouping v, line 38 */
- { int c3 = z->c; /* or, line 38 */
- if (out_grouping(z, g_v, 97, 252, 0)) goto lab4; /* non v, line 38 */
- { /* gopast */ /* grouping v, line 38 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping(z, g_v, 97, 252, 0)) goto lab2;
+ { int c3 = z->c;
+ if (out_grouping(z, g_v, 97, 252, 0)) goto lab4;
+ {
int ret = out_grouping(z, g_v, 97, 252, 1);
if (ret < 0) goto lab4;
z->c += ret;
@@ -520,8 +520,8 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab3;
lab4:
z->c = c3;
- if (in_grouping(z, g_v, 97, 252, 0)) goto lab2; /* grouping v, line 38 */
- { /* gopast */ /* non v, line 38 */
+ if (in_grouping(z, g_v, 97, 252, 0)) goto lab2;
+ {
int ret = in_grouping(z, g_v, 97, 252, 1);
if (ret < 0) goto lab2;
z->c += ret;
@@ -531,10 +531,10 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab1;
lab2:
z->c = c2;
- if (out_grouping(z, g_v, 97, 252, 0)) goto lab0; /* non v, line 40 */
- { int c4 = z->c; /* or, line 40 */
- if (out_grouping(z, g_v, 97, 252, 0)) goto lab6; /* non v, line 40 */
- { /* gopast */ /* grouping v, line 40 */
+ if (out_grouping(z, g_v, 97, 252, 0)) goto lab0;
+ { int c4 = z->c;
+ if (out_grouping(z, g_v, 97, 252, 0)) goto lab6;
+ {
int ret = out_grouping(z, g_v, 97, 252, 1);
if (ret < 0) goto lab6;
z->c += ret;
@@ -542,86 +542,85 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab5;
lab6:
z->c = c4;
- if (in_grouping(z, g_v, 97, 252, 0)) goto lab0; /* grouping v, line 40 */
+ if (in_grouping(z, g_v, 97, 252, 0)) goto lab0;
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 40 */
+ z->c++;
}
lab5:
;
}
lab1:
- z->I[0] = z->c; /* setmark pV, line 41 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c5 = z->c; /* do, line 43 */
- { /* gopast */ /* grouping v, line 44 */
+ { int c5 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 252, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 44 */
+ {
int ret = in_grouping(z, g_v, 97, 252, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p1, line 44 */
- { /* gopast */ /* grouping v, line 45 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 252, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 45 */
+ {
int ret = in_grouping(z, g_v, 97, 252, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[2] = z->c; /* setmark p2, line 45 */
+ z->I[0] = z->c;
lab7:
z->c = c5;
}
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
+static int r_postlude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 7 || !((67641858 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 6; else
among_var = find_among(z, a_0, 6);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 50 */
- switch (among_var) { /* among, line 50 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 51 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 52 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 53 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 54 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 55 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 6:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 57 */
+ z->c++;
break;
}
continue;
@@ -632,73 +631,73 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_RV(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 63 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 64 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 65 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_attached_pronoun(struct SN_env * z) { /* backwardmode */
+static int r_attached_pronoun(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 68 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((557090 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 68 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((557090 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_1, 13))) return 0;
- z->bra = z->c; /* ], line 68 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 111 && z->p[z->c - 1] != 114)) return 0; /* substring, line 72 */
+ z->bra = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 111 && z->p[z->c - 1] != 114)) return 0;
among_var = find_among_b(z, a_2, 11);
if (!(among_var)) return 0;
- { int ret = r_RV(z); /* call RV, line 72 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 72 */
+ switch (among_var) {
case 1:
- z->bra = z->c; /* ], line 73 */
- { int ret = slice_from_s(z, 5, s_5); /* <-, line 73 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 5, s_5);
if (ret < 0) return ret;
}
break;
case 2:
- z->bra = z->c; /* ], line 74 */
- { int ret = slice_from_s(z, 4, s_6); /* <-, line 74 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 4, s_6);
if (ret < 0) return ret;
}
break;
case 3:
- z->bra = z->c; /* ], line 75 */
- { int ret = slice_from_s(z, 2, s_7); /* <-, line 75 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 2, s_7);
if (ret < 0) return ret;
}
break;
case 4:
- z->bra = z->c; /* ], line 76 */
- { int ret = slice_from_s(z, 2, s_8); /* <-, line 76 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 2, s_8);
if (ret < 0) return ret;
}
break;
case 5:
- z->bra = z->c; /* ], line 77 */
- { int ret = slice_from_s(z, 2, s_9); /* <-, line 77 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 2, s_9);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_del(z); /* delete, line 81 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 7:
- if (z->c <= z->lb || z->p[z->c - 1] != 'u') return 0; /* literal, line 82 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'u') return 0;
z->c--;
- { int ret = slice_del(z); /* delete, line 82 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -706,38 +705,38 @@ static int r_attached_pronoun(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 87 */
- if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((835634 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 87 */
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((835634 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_6, 46);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 87 */
- switch (among_var) { /* among, line 87 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_R2(z); /* call R2, line 99 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 99 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_R2(z); /* call R2, line 105 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 105 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m1 = z->l - z->c; (void)m1; /* try, line 106 */
- z->ket = z->c; /* [, line 106 */
- if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m1; goto lab0; } /* literal, line 106 */
- z->bra = z->c; /* ], line 106 */
- { int ret = r_R2(z); /* call R2, line 106 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m1; goto lab0; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 106 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
@@ -745,59 +744,59 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 3:
- { int ret = r_R2(z); /* call R2, line 111 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 3, s_11); /* <-, line 111 */
+ { int ret = slice_from_s(z, 3, s_11);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = r_R2(z); /* call R2, line 115 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 1, s_12); /* <-, line 115 */
+ { int ret = slice_from_s(z, 1, s_12);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = r_R2(z); /* call R2, line 119 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_from_s(z, 4, s_13); /* <-, line 119 */
+ { int ret = slice_from_s(z, 4, s_13);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = r_R1(z); /* call R1, line 123 */
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 123 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m2 = z->l - z->c; (void)m2; /* try, line 124 */
- z->ket = z->c; /* [, line 125 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m2; goto lab1; } /* substring, line 125 */
+ { int m2 = z->l - z->c; (void)m2;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m2; goto lab1; }
among_var = find_among_b(z, a_3, 4);
if (!(among_var)) { z->c = z->l - m2; goto lab1; }
- z->bra = z->c; /* ], line 125 */
- { int ret = r_R2(z); /* call R2, line 125 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m2; goto lab1; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 125 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- switch (among_var) { /* among, line 125 */
+ switch (among_var) {
case 1:
- z->ket = z->c; /* [, line 126 */
- if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - m2; goto lab1; } /* literal, line 126 */
- z->bra = z->c; /* ], line 126 */
- { int ret = r_R2(z); /* call R2, line 126 */
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - m2; goto lab1; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m2; goto lab1; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 126 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -807,22 +806,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 7:
- { int ret = r_R2(z); /* call R2, line 135 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 135 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m3 = z->l - z->c; (void)m3; /* try, line 136 */
- z->ket = z->c; /* [, line 137 */
- if (z->c - 3 <= z->lb || z->p[z->c - 1] != 101) { z->c = z->l - m3; goto lab2; } /* substring, line 137 */
+ { int m3 = z->l - z->c; (void)m3;
+ z->ket = z->c;
+ if (z->c - 3 <= z->lb || z->p[z->c - 1] != 101) { z->c = z->l - m3; goto lab2; }
if (!(find_among_b(z, a_4, 3))) { z->c = z->l - m3; goto lab2; }
- z->bra = z->c; /* ], line 137 */
- { int ret = r_R2(z); /* call R2, line 140 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m3; goto lab2; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 140 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab2:
@@ -830,22 +829,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 8:
- { int ret = r_R2(z); /* call R2, line 147 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 147 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m4 = z->l - z->c; (void)m4; /* try, line 148 */
- z->ket = z->c; /* [, line 149 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m4; goto lab3; } /* substring, line 149 */
+ { int m4 = z->l - z->c; (void)m4;
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m4; goto lab3; }
if (!(find_among_b(z, a_5, 3))) { z->c = z->l - m4; goto lab3; }
- z->bra = z->c; /* ], line 149 */
- { int ret = r_R2(z); /* call R2, line 152 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m4; goto lab3; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 152 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab3:
@@ -853,21 +852,21 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
}
break;
case 9:
- { int ret = r_R2(z); /* call R2, line 159 */
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 159 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m5 = z->l - z->c; (void)m5; /* try, line 160 */
- z->ket = z->c; /* [, line 161 */
- if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m5; goto lab4; } /* literal, line 161 */
- z->bra = z->c; /* ], line 161 */
- { int ret = r_R2(z); /* call R2, line 161 */
+ { int m5 = z->l - z->c; (void)m5;
+ z->ket = z->c;
+ if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m5; goto lab4; }
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m5; goto lab4; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 161 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab4:
@@ -878,56 +877,56 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_y_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_y_verb_suffix(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 168 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 168 */
- if (!(find_among_b(z, a_7, 12))) { z->lb = mlimit1; return 0; } /* substring, line 168 */
- z->bra = z->c; /* ], line 168 */
+ { int mlimit1;
+ if (z->c < z->I[2]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ if (!(find_among_b(z, a_7, 12))) { z->lb = mlimit1; return 0; }
+ z->bra = z->c;
z->lb = mlimit1;
}
- if (z->c <= z->lb || z->p[z->c - 1] != 'u') return 0; /* literal, line 171 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'u') return 0;
z->c--;
- { int ret = slice_del(z); /* delete, line 171 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_verb_suffix(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 176 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 176 */
- among_var = find_among_b(z, a_8, 96); /* substring, line 176 */
+ { int mlimit1;
+ if (z->c < z->I[2]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ among_var = find_among_b(z, a_8, 96);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 176 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 176 */
+ switch (among_var) {
case 1:
- { int m2 = z->l - z->c; (void)m2; /* try, line 179 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - m2; goto lab0; } /* literal, line 179 */
+ { int m2 = z->l - z->c; (void)m2;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - m2; goto lab0; }
z->c--;
- { int m_test3 = z->l - z->c; /* test, line 179 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - m2; goto lab0; } /* literal, line 179 */
+ { int m_test3 = z->l - z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - m2; goto lab0; }
z->c--;
z->c = z->l - m_test3;
}
lab0:
;
}
- z->bra = z->c; /* ], line 179 */
- { int ret = slice_del(z); /* delete, line 179 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 200 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -935,43 +934,43 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
+static int r_residual_suffix(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 205 */
- among_var = find_among_b(z, a_9, 8); /* substring, line 205 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_9, 8);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 205 */
- switch (among_var) { /* among, line 205 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = r_RV(z); /* call RV, line 208 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 208 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = r_RV(z); /* call RV, line 210 */
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 210 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int m1 = z->l - z->c; (void)m1; /* try, line 210 */
- z->ket = z->c; /* [, line 210 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - m1; goto lab0; } /* literal, line 210 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - m1; goto lab0; }
z->c--;
- z->bra = z->c; /* ], line 210 */
- { int m_test2 = z->l - z->c; /* test, line 210 */
- if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - m1; goto lab0; } /* literal, line 210 */
+ z->bra = z->c;
+ { int m_test2 = z->l - z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - m1; goto lab0; }
z->c--;
z->c = z->l - m_test2;
}
- { int ret = r_RV(z); /* call RV, line 210 */
+ { int ret = r_RV(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 210 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
@@ -982,36 +981,36 @@ static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int spanish_ISO_8859_1_stem(struct SN_env * z) {
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 217 */
+ z->lb = z->c; z->c = z->l;
- { int m1 = z->l - z->c; (void)m1; /* do, line 218 */
- { int ret = r_attached_pronoun(z); /* call attached_pronoun, line 218 */
+ { int m1 = z->l - z->c; (void)m1;
+ { int ret = r_attached_pronoun(z);
if (ret < 0) return ret;
}
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 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_standard_suffix(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = z->l - m3;
- { int ret = r_y_verb_suffix(z); /* call y_verb_suffix, line 220 */
+ { int ret = r_y_verb_suffix(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
goto lab1;
lab3:
z->c = z->l - m3;
- { int ret = r_verb_suffix(z); /* call verb_suffix, line 221 */
+ { int ret = r_verb_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -1020,15 +1019,15 @@ extern int spanish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_residual_suffix(z);
if (ret < 0) return ret;
}
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 */
+ { int c5 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c5;
@@ -1036,7 +1035,7 @@ extern int spanish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * spanish_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); }
+extern struct SN_env * spanish_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
extern void spanish_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_swedish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c
index e53777eb735a8..215298c034653 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -65,43 +65,43 @@ static const symbol s_0_36[3] = { 'a', 's', 't' };
static const struct among a_0[37] =
{
-/* 0 */ { 1, s_0_0, -1, 1, 0},
-/* 1 */ { 4, s_0_1, 0, 1, 0},
-/* 2 */ { 4, s_0_2, 0, 1, 0},
-/* 3 */ { 7, s_0_3, 2, 1, 0},
-/* 4 */ { 4, s_0_4, 0, 1, 0},
-/* 5 */ { 2, s_0_5, -1, 1, 0},
-/* 6 */ { 1, s_0_6, -1, 1, 0},
-/* 7 */ { 3, s_0_7, 6, 1, 0},
-/* 8 */ { 4, s_0_8, 6, 1, 0},
-/* 9 */ { 4, s_0_9, 6, 1, 0},
-/* 10 */ { 3, s_0_10, 6, 1, 0},
-/* 11 */ { 4, s_0_11, 6, 1, 0},
-/* 12 */ { 2, s_0_12, -1, 1, 0},
-/* 13 */ { 5, s_0_13, 12, 1, 0},
-/* 14 */ { 4, s_0_14, 12, 1, 0},
-/* 15 */ { 5, s_0_15, 12, 1, 0},
-/* 16 */ { 3, s_0_16, -1, 1, 0},
-/* 17 */ { 2, s_0_17, -1, 1, 0},
-/* 18 */ { 2, s_0_18, -1, 1, 0},
-/* 19 */ { 5, s_0_19, 18, 1, 0},
-/* 20 */ { 2, s_0_20, -1, 1, 0},
-/* 21 */ { 1, s_0_21, -1, 2, 0},
-/* 22 */ { 2, s_0_22, 21, 1, 0},
-/* 23 */ { 5, s_0_23, 22, 1, 0},
-/* 24 */ { 5, s_0_24, 22, 1, 0},
-/* 25 */ { 5, s_0_25, 22, 1, 0},
-/* 26 */ { 2, s_0_26, 21, 1, 0},
-/* 27 */ { 4, s_0_27, 26, 1, 0},
-/* 28 */ { 5, s_0_28, 26, 1, 0},
-/* 29 */ { 3, s_0_29, 21, 1, 0},
-/* 30 */ { 5, s_0_30, 29, 1, 0},
-/* 31 */ { 6, s_0_31, 29, 1, 0},
-/* 32 */ { 4, s_0_32, 21, 1, 0},
-/* 33 */ { 2, s_0_33, -1, 1, 0},
-/* 34 */ { 5, s_0_34, -1, 1, 0},
-/* 35 */ { 3, s_0_35, -1, 1, 0},
-/* 36 */ { 3, s_0_36, -1, 1, 0}
+{ 1, s_0_0, -1, 1, 0},
+{ 4, s_0_1, 0, 1, 0},
+{ 4, s_0_2, 0, 1, 0},
+{ 7, s_0_3, 2, 1, 0},
+{ 4, s_0_4, 0, 1, 0},
+{ 2, s_0_5, -1, 1, 0},
+{ 1, s_0_6, -1, 1, 0},
+{ 3, s_0_7, 6, 1, 0},
+{ 4, s_0_8, 6, 1, 0},
+{ 4, s_0_9, 6, 1, 0},
+{ 3, s_0_10, 6, 1, 0},
+{ 4, s_0_11, 6, 1, 0},
+{ 2, s_0_12, -1, 1, 0},
+{ 5, s_0_13, 12, 1, 0},
+{ 4, s_0_14, 12, 1, 0},
+{ 5, s_0_15, 12, 1, 0},
+{ 3, s_0_16, -1, 1, 0},
+{ 2, s_0_17, -1, 1, 0},
+{ 2, s_0_18, -1, 1, 0},
+{ 5, s_0_19, 18, 1, 0},
+{ 2, s_0_20, -1, 1, 0},
+{ 1, s_0_21, -1, 2, 0},
+{ 2, s_0_22, 21, 1, 0},
+{ 5, s_0_23, 22, 1, 0},
+{ 5, s_0_24, 22, 1, 0},
+{ 5, s_0_25, 22, 1, 0},
+{ 2, s_0_26, 21, 1, 0},
+{ 4, s_0_27, 26, 1, 0},
+{ 5, s_0_28, 26, 1, 0},
+{ 3, s_0_29, 21, 1, 0},
+{ 5, s_0_30, 29, 1, 0},
+{ 6, s_0_31, 29, 1, 0},
+{ 4, s_0_32, 21, 1, 0},
+{ 2, s_0_33, -1, 1, 0},
+{ 5, s_0_34, -1, 1, 0},
+{ 3, s_0_35, -1, 1, 0},
+{ 3, s_0_36, -1, 1, 0}
};
static const symbol s_1_0[2] = { 'd', 'd' };
@@ -114,13 +114,13 @@ static const symbol s_1_6[2] = { 't', 't' };
static const struct among a_1[7] =
{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0},
-/* 2 */ { 2, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0},
-/* 4 */ { 2, s_1_4, -1, -1, 0},
-/* 5 */ { 2, s_1_5, -1, -1, 0},
-/* 6 */ { 2, s_1_6, -1, -1, 0}
+{ 2, s_1_0, -1, -1, 0},
+{ 2, s_1_1, -1, -1, 0},
+{ 2, s_1_2, -1, -1, 0},
+{ 2, s_1_3, -1, -1, 0},
+{ 2, s_1_4, -1, -1, 0},
+{ 2, s_1_5, -1, -1, 0},
+{ 2, s_1_6, -1, -1, 0}
};
static const symbol s_2_0[2] = { 'i', 'g' };
@@ -131,11 +131,11 @@ static const symbol s_2_4[4] = { 'l', 0xF6, 's', 't' };
static const struct among a_2[5] =
{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 3, s_2_1, 0, 1, 0},
-/* 2 */ { 3, s_2_2, -1, 1, 0},
-/* 3 */ { 5, s_2_3, -1, 3, 0},
-/* 4 */ { 4, s_2_4, -1, 2, 0}
+{ 2, s_2_0, -1, 1, 0},
+{ 3, s_2_1, 0, 1, 0},
+{ 3, s_2_2, -1, 1, 0},
+{ 5, s_2_3, -1, 3, 0},
+{ 4, s_2_4, -1, 2, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 };
@@ -145,52 +145,50 @@ static const unsigned char g_s_ending[] = { 119, 127, 149 };
static const symbol s_0[] = { 'l', 0xF6, 's' };
static const symbol s_1[] = { 'f', 'u', 'l', 'l' };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 28 */
- { int c_test1 = z->c; /* test, line 29 */
- { int ret = z->c + 3; /* hop, line 29 */
- if (0 > ret || ret > z->l) return 0;
- z->c = ret;
- }
- z->I[1] = z->c; /* setmark x, line 29 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ { int c_test1 = z->c;
+z->c = z->c + 3;
+ if (z->c > z->l) return 0;
+ z->I[0] = z->c;
z->c = c_test1;
}
- if (out_grouping(z, g_v, 97, 246, 1) < 0) return 0; /* goto */ /* grouping v, line 30 */
- { /* gopast */ /* non v, line 30 */
+ if (out_grouping(z, g_v, 97, 246, 1) < 0) return 0;
+ {
int ret = in_grouping(z, g_v, 97, 246, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 30 */
- /* try, line 31 */
- if (!(z->I[0] < z->I[1])) goto lab0; /* $( < ), line 31 */
- z->I[0] = z->I[1]; /* $p1 = , line 31 */
+ z->I[1] = z->c;
+
+ if (!(z->I[1] < z->I[0])) goto lab0;
+ z->I[1] = z->I[0];
lab0:
return 1;
}
-static int r_main_suffix(struct SN_env * z) { /* backwardmode */
+static int r_main_suffix(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 37 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 37 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 37 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_0, 37);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 37 */
+ z->bra = z->c;
z->lb = mlimit1;
}
- switch (among_var) { /* among, line 38 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 44 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (in_grouping_b(z, g_s_ending, 98, 121, 0)) return 0; /* grouping s_ending, line 46 */
- { int ret = slice_del(z); /* delete, line 46 */
+ if (in_grouping_b(z, g_s_ending, 98, 121, 0)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -198,20 +196,20 @@ static int r_main_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
+static int r_consonant_pair(struct SN_env * z) {
- { int mlimit1; /* setlimit, line 50 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- { int m2 = z->l - z->c; (void)m2; /* and, line 52 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* among, line 51 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ { int m2 = z->l - z->c; (void)m2;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
if (!(find_among_b(z, a_1, 7))) { z->lb = mlimit1; return 0; }
z->c = z->l - m2;
- z->ket = z->c; /* [, line 52 */
+ z->ket = z->c;
if (z->c <= z->lb) { z->lb = mlimit1; return 0; }
- z->c--; /* next, line 52 */
- z->bra = z->c; /* ], line 52 */
- { int ret = slice_del(z); /* delete, line 52 */
+ z->c--;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
}
@@ -220,30 +218,30 @@ static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_other_suffix(struct SN_env * z) { /* backwardmode */
+static int r_other_suffix(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 55 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 56 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 56 */
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_2, 5);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 56 */
- switch (among_var) { /* among, line 56 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 57 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 3, s_0); /* <-, line 58 */
+ { int ret = slice_from_s(z, 3, s_0);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 4, s_1); /* <-, line 59 */
+ { int ret = slice_from_s(z, 4, s_1);
if (ret < 0) return ret;
}
break;
@@ -253,29 +251,29 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int swedish_ISO_8859_1_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 67 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 68 */
- { int ret = r_main_suffix(z); /* call main_suffix, line 68 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_main_suffix(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_other_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
@@ -284,7 +282,7 @@ extern int swedish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * swedish_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); }
+extern struct SN_env * swedish_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
extern void swedish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
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 44ef3d9253d8d..ce499386faccc 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -46,14 +46,14 @@ static const symbol s_0_7[2] = { 'z', 's' };
static const struct among a_0[8] =
{
-/* 0 */ { 2, s_0_0, -1, -1, 0},
-/* 1 */ { 3, s_0_1, -1, -1, 0},
-/* 2 */ { 2, s_0_2, -1, -1, 0},
-/* 3 */ { 2, s_0_3, -1, -1, 0},
-/* 4 */ { 2, s_0_4, -1, -1, 0},
-/* 5 */ { 2, s_0_5, -1, -1, 0},
-/* 6 */ { 2, s_0_6, -1, -1, 0},
-/* 7 */ { 2, s_0_7, -1, -1, 0}
+{ 2, s_0_0, -1, -1, 0},
+{ 3, s_0_1, -1, -1, 0},
+{ 2, s_0_2, -1, -1, 0},
+{ 2, s_0_3, -1, -1, 0},
+{ 2, s_0_4, -1, -1, 0},
+{ 2, s_0_5, -1, -1, 0},
+{ 2, s_0_6, -1, -1, 0},
+{ 2, s_0_7, -1, -1, 0}
};
static const symbol s_1_0[1] = { 0xE1 };
@@ -61,8 +61,8 @@ static const symbol s_1_1[1] = { 0xE9 };
static const struct among a_1[2] =
{
-/* 0 */ { 1, s_1_0, -1, 1, 0},
-/* 1 */ { 1, s_1_1, -1, 2, 0}
+{ 1, s_1_0, -1, 1, 0},
+{ 1, s_1_1, -1, 2, 0}
};
static const symbol s_2_0[2] = { 'b', 'b' };
@@ -91,29 +91,29 @@ static const symbol s_2_22[2] = { 'z', 'z' };
static const struct among a_2[23] =
{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 2, s_2_1, -1, -1, 0},
-/* 2 */ { 2, s_2_2, -1, -1, 0},
-/* 3 */ { 2, s_2_3, -1, -1, 0},
-/* 4 */ { 2, s_2_4, -1, -1, 0},
-/* 5 */ { 2, s_2_5, -1, -1, 0},
-/* 6 */ { 2, s_2_6, -1, -1, 0},
-/* 7 */ { 2, 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 */ { 2, s_2_11, -1, -1, 0},
-/* 12 */ { 3, s_2_12, -1, -1, 0},
-/* 13 */ { 2, s_2_13, -1, -1, 0},
-/* 14 */ { 3, s_2_14, -1, -1, 0},
-/* 15 */ { 2, s_2_15, -1, -1, 0},
-/* 16 */ { 2, s_2_16, -1, -1, 0},
-/* 17 */ { 3, s_2_17, -1, -1, 0},
-/* 18 */ { 3, s_2_18, -1, -1, 0},
-/* 19 */ { 3, s_2_19, -1, -1, 0},
-/* 20 */ { 3, s_2_20, -1, -1, 0},
-/* 21 */ { 3, s_2_21, -1, -1, 0},
-/* 22 */ { 2, s_2_22, -1, -1, 0}
+{ 2, s_2_0, -1, -1, 0},
+{ 2, s_2_1, -1, -1, 0},
+{ 2, s_2_2, -1, -1, 0},
+{ 2, s_2_3, -1, -1, 0},
+{ 2, s_2_4, -1, -1, 0},
+{ 2, s_2_5, -1, -1, 0},
+{ 2, s_2_6, -1, -1, 0},
+{ 2, s_2_7, -1, -1, 0},
+{ 2, s_2_8, -1, -1, 0},
+{ 2, s_2_9, -1, -1, 0},
+{ 2, s_2_10, -1, -1, 0},
+{ 2, s_2_11, -1, -1, 0},
+{ 3, s_2_12, -1, -1, 0},
+{ 2, s_2_13, -1, -1, 0},
+{ 3, s_2_14, -1, -1, 0},
+{ 2, s_2_15, -1, -1, 0},
+{ 2, s_2_16, -1, -1, 0},
+{ 3, s_2_17, -1, -1, 0},
+{ 3, s_2_18, -1, -1, 0},
+{ 3, s_2_19, -1, -1, 0},
+{ 3, s_2_20, -1, -1, 0},
+{ 3, s_2_21, -1, -1, 0},
+{ 2, s_2_22, -1, -1, 0}
};
static const symbol s_3_0[2] = { 'a', 'l' };
@@ -121,8 +121,8 @@ static const symbol s_3_1[2] = { 'e', 'l' };
static const struct among a_3[2] =
{
-/* 0 */ { 2, s_3_0, -1, 1, 0},
-/* 1 */ { 2, s_3_1, -1, 1, 0}
+{ 2, s_3_0, -1, 1, 0},
+{ 2, s_3_1, -1, 1, 0}
};
static const symbol s_4_0[2] = { 'b', 'a' };
@@ -172,50 +172,50 @@ static const symbol s_4_43[2] = { 'v', 0xE9 };
static const struct among a_4[44] =
{
-/* 0 */ { 2, s_4_0, -1, -1, 0},
-/* 1 */ { 2, s_4_1, -1, -1, 0},
-/* 2 */ { 2, s_4_2, -1, -1, 0},
-/* 3 */ { 2, s_4_3, -1, -1, 0},
-/* 4 */ { 2, s_4_4, -1, -1, 0},
-/* 5 */ { 3, s_4_5, -1, -1, 0},
-/* 6 */ { 3, s_4_6, -1, -1, 0},
-/* 7 */ { 3, s_4_7, -1, -1, 0},
-/* 8 */ { 3, s_4_8, -1, -1, 0},
-/* 9 */ { 2, s_4_9, -1, -1, 0},
-/* 10 */ { 3, s_4_10, -1, -1, 0},
-/* 11 */ { 3, s_4_11, -1, -1, 0},
-/* 12 */ { 3, s_4_12, -1, -1, 0},
-/* 13 */ { 3, s_4_13, -1, -1, 0},
-/* 14 */ { 3, s_4_14, -1, -1, 0},
-/* 15 */ { 3, s_4_15, -1, -1, 0},
-/* 16 */ { 3, s_4_16, -1, -1, 0},
-/* 17 */ { 3, s_4_17, -1, -1, 0},
-/* 18 */ { 2, s_4_18, -1, -1, 0},
-/* 19 */ { 1, s_4_19, -1, -1, 0},
-/* 20 */ { 2, s_4_20, 19, -1, 0},
-/* 21 */ { 3, s_4_21, 20, -1, 0},
-/* 22 */ { 2, s_4_22, 19, -1, 0},
-/* 23 */ { 3, s_4_23, 22, -1, 0},
-/* 24 */ { 6, s_4_24, 22, -1, 0},
-/* 25 */ { 2, s_4_25, 19, -1, 0},
-/* 26 */ { 2, s_4_26, 19, -1, 0},
-/* 27 */ { 4, s_4_27, -1, -1, 0},
-/* 28 */ { 3, s_4_28, -1, -1, 0},
-/* 29 */ { 1, s_4_29, -1, -1, 0},
-/* 30 */ { 2, s_4_30, 29, -1, 0},
-/* 31 */ { 2, s_4_31, 29, -1, 0},
-/* 32 */ { 4, s_4_32, 29, -1, 0},
-/* 33 */ { 6, s_4_33, 32, -1, 0},
-/* 34 */ { 6, s_4_34, 32, -1, 0},
-/* 35 */ { 6, s_4_35, 32, -1, 0},
-/* 36 */ { 2, s_4_36, 29, -1, 0},
-/* 37 */ { 3, s_4_37, 29, -1, 0},
-/* 38 */ { 2, s_4_38, 29, -1, 0},
-/* 39 */ { 3, s_4_39, -1, -1, 0},
-/* 40 */ { 3, s_4_40, -1, -1, 0},
-/* 41 */ { 3, s_4_41, -1, -1, 0},
-/* 42 */ { 2, s_4_42, -1, -1, 0},
-/* 43 */ { 2, s_4_43, -1, -1, 0}
+{ 2, s_4_0, -1, -1, 0},
+{ 2, s_4_1, -1, -1, 0},
+{ 2, s_4_2, -1, -1, 0},
+{ 2, s_4_3, -1, -1, 0},
+{ 2, s_4_4, -1, -1, 0},
+{ 3, s_4_5, -1, -1, 0},
+{ 3, s_4_6, -1, -1, 0},
+{ 3, s_4_7, -1, -1, 0},
+{ 3, s_4_8, -1, -1, 0},
+{ 2, s_4_9, -1, -1, 0},
+{ 3, s_4_10, -1, -1, 0},
+{ 3, s_4_11, -1, -1, 0},
+{ 3, s_4_12, -1, -1, 0},
+{ 3, s_4_13, -1, -1, 0},
+{ 3, s_4_14, -1, -1, 0},
+{ 3, s_4_15, -1, -1, 0},
+{ 3, s_4_16, -1, -1, 0},
+{ 3, s_4_17, -1, -1, 0},
+{ 2, s_4_18, -1, -1, 0},
+{ 1, s_4_19, -1, -1, 0},
+{ 2, s_4_20, 19, -1, 0},
+{ 3, s_4_21, 20, -1, 0},
+{ 2, s_4_22, 19, -1, 0},
+{ 3, s_4_23, 22, -1, 0},
+{ 6, s_4_24, 22, -1, 0},
+{ 2, s_4_25, 19, -1, 0},
+{ 2, s_4_26, 19, -1, 0},
+{ 4, s_4_27, -1, -1, 0},
+{ 3, s_4_28, -1, -1, 0},
+{ 1, s_4_29, -1, -1, 0},
+{ 2, s_4_30, 29, -1, 0},
+{ 2, s_4_31, 29, -1, 0},
+{ 4, s_4_32, 29, -1, 0},
+{ 6, s_4_33, 32, -1, 0},
+{ 6, s_4_34, 32, -1, 0},
+{ 6, s_4_35, 32, -1, 0},
+{ 2, s_4_36, 29, -1, 0},
+{ 3, s_4_37, 29, -1, 0},
+{ 2, s_4_38, 29, -1, 0},
+{ 3, s_4_39, -1, -1, 0},
+{ 3, s_4_40, -1, -1, 0},
+{ 3, s_4_41, -1, -1, 0},
+{ 2, s_4_42, -1, -1, 0},
+{ 2, s_4_43, -1, -1, 0}
};
static const symbol s_5_0[2] = { 0xE1, 'n' };
@@ -224,9 +224,9 @@ static const symbol s_5_2[6] = { 0xE1, 'n', 'k', 0xE9, 'n', 't' };
static const struct among a_5[3] =
{
-/* 0 */ { 2, s_5_0, -1, 2, 0},
-/* 1 */ { 2, s_5_1, -1, 1, 0},
-/* 2 */ { 6, s_5_2, -1, 2, 0}
+{ 2, s_5_0, -1, 2, 0},
+{ 2, s_5_1, -1, 1, 0},
+{ 6, s_5_2, -1, 2, 0}
};
static const symbol s_6_0[4] = { 's', 't', 'u', 'l' };
@@ -238,12 +238,12 @@ static const symbol s_6_5[5] = { 0xE9, 's', 't', 0xFC, 'l' };
static const struct among a_6[6] =
{
-/* 0 */ { 4, s_6_0, -1, 1, 0},
-/* 1 */ { 5, s_6_1, 0, 1, 0},
-/* 2 */ { 5, s_6_2, 0, 2, 0},
-/* 3 */ { 4, s_6_3, -1, 1, 0},
-/* 4 */ { 5, s_6_4, 3, 1, 0},
-/* 5 */ { 5, s_6_5, 3, 3, 0}
+{ 4, s_6_0, -1, 1, 0},
+{ 5, s_6_1, 0, 1, 0},
+{ 5, s_6_2, 0, 2, 0},
+{ 4, s_6_3, -1, 1, 0},
+{ 5, s_6_4, 3, 1, 0},
+{ 5, s_6_5, 3, 3, 0}
};
static const symbol s_7_0[1] = { 0xE1 };
@@ -251,8 +251,8 @@ static const symbol s_7_1[1] = { 0xE9 };
static const struct among a_7[2] =
{
-/* 0 */ { 1, s_7_0, -1, 1, 0},
-/* 1 */ { 1, s_7_1, -1, 1, 0}
+{ 1, s_7_0, -1, 1, 0},
+{ 1, s_7_1, -1, 1, 0}
};
static const symbol s_8_0[1] = { 'k' };
@@ -265,13 +265,13 @@ static const symbol s_8_6[2] = { 0xF6, 'k' };
static const struct among a_8[7] =
{
-/* 0 */ { 1, s_8_0, -1, 3, 0},
-/* 1 */ { 2, s_8_1, 0, 3, 0},
-/* 2 */ { 2, s_8_2, 0, 3, 0},
-/* 3 */ { 2, s_8_3, 0, 3, 0},
-/* 4 */ { 2, s_8_4, 0, 1, 0},
-/* 5 */ { 2, s_8_5, 0, 2, 0},
-/* 6 */ { 2, s_8_6, 0, 3, 0}
+{ 1, s_8_0, -1, 3, 0},
+{ 2, s_8_1, 0, 3, 0},
+{ 2, s_8_2, 0, 3, 0},
+{ 2, s_8_3, 0, 3, 0},
+{ 2, s_8_4, 0, 1, 0},
+{ 2, s_8_5, 0, 2, 0},
+{ 2, s_8_6, 0, 3, 0}
};
static const symbol s_9_0[2] = { 0xE9, 'i' };
@@ -289,18 +289,18 @@ static const symbol s_9_11[2] = { 0xE9, 0xE9 };
static const struct among a_9[12] =
{
-/* 0 */ { 2, s_9_0, -1, 1, 0},
-/* 1 */ { 3, s_9_1, 0, 3, 0},
-/* 2 */ { 3, s_9_2, 0, 2, 0},
-/* 3 */ { 1, s_9_3, -1, 1, 0},
-/* 4 */ { 2, s_9_4, 3, 1, 0},
-/* 5 */ { 3, s_9_5, 4, 1, 0},
-/* 6 */ { 3, s_9_6, 4, 1, 0},
-/* 7 */ { 3, s_9_7, 4, 1, 0},
-/* 8 */ { 3, s_9_8, 4, 3, 0},
-/* 9 */ { 3, s_9_9, 4, 2, 0},
-/* 10 */ { 3, s_9_10, 4, 1, 0},
-/* 11 */ { 2, s_9_11, 3, 2, 0}
+{ 2, s_9_0, -1, 1, 0},
+{ 3, s_9_1, 0, 3, 0},
+{ 3, s_9_2, 0, 2, 0},
+{ 1, s_9_3, -1, 1, 0},
+{ 2, s_9_4, 3, 1, 0},
+{ 3, s_9_5, 4, 1, 0},
+{ 3, s_9_6, 4, 1, 0},
+{ 3, s_9_7, 4, 1, 0},
+{ 3, s_9_8, 4, 3, 0},
+{ 3, s_9_9, 4, 2, 0},
+{ 3, s_9_10, 4, 1, 0},
+{ 2, s_9_11, 3, 2, 0}
};
static const symbol s_10_0[1] = { 'a' };
@@ -337,37 +337,37 @@ static const symbol s_10_30[1] = { 0xE9 };
static const struct among a_10[31] =
{
-/* 0 */ { 1, s_10_0, -1, 1, 0},
-/* 1 */ { 2, s_10_1, 0, 1, 0},
-/* 2 */ { 1, s_10_2, -1, 1, 0},
-/* 3 */ { 2, s_10_3, 2, 1, 0},
-/* 4 */ { 2, s_10_4, 2, 1, 0},
-/* 5 */ { 2, s_10_5, 2, 1, 0},
-/* 6 */ { 2, s_10_6, 2, 2, 0},
-/* 7 */ { 2, s_10_7, 2, 3, 0},
-/* 8 */ { 2, s_10_8, 2, 1, 0},
-/* 9 */ { 1, s_10_9, -1, 1, 0},
-/* 10 */ { 2, s_10_10, 9, 1, 0},
-/* 11 */ { 2, s_10_11, -1, 1, 0},
-/* 12 */ { 3, s_10_12, 11, 1, 0},
-/* 13 */ { 3, s_10_13, 11, 2, 0},
-/* 14 */ { 3, s_10_14, 11, 3, 0},
-/* 15 */ { 3, s_10_15, 11, 1, 0},
-/* 16 */ { 2, s_10_16, -1, 1, 0},
-/* 17 */ { 3, s_10_17, 16, 1, 0},
-/* 18 */ { 4, s_10_18, 17, 2, 0},
-/* 19 */ { 2, s_10_19, -1, 1, 0},
-/* 20 */ { 3, s_10_20, 19, 1, 0},
-/* 21 */ { 4, s_10_21, 20, 3, 0},
-/* 22 */ { 1, s_10_22, -1, 1, 0},
-/* 23 */ { 2, s_10_23, 22, 1, 0},
-/* 24 */ { 2, s_10_24, 22, 1, 0},
-/* 25 */ { 2, s_10_25, 22, 1, 0},
-/* 26 */ { 2, s_10_26, 22, 2, 0},
-/* 27 */ { 2, s_10_27, 22, 3, 0},
-/* 28 */ { 1, s_10_28, -1, 1, 0},
-/* 29 */ { 1, s_10_29, -1, 2, 0},
-/* 30 */ { 1, s_10_30, -1, 3, 0}
+{ 1, s_10_0, -1, 1, 0},
+{ 2, s_10_1, 0, 1, 0},
+{ 1, s_10_2, -1, 1, 0},
+{ 2, s_10_3, 2, 1, 0},
+{ 2, s_10_4, 2, 1, 0},
+{ 2, s_10_5, 2, 1, 0},
+{ 2, s_10_6, 2, 2, 0},
+{ 2, s_10_7, 2, 3, 0},
+{ 2, s_10_8, 2, 1, 0},
+{ 1, s_10_9, -1, 1, 0},
+{ 2, s_10_10, 9, 1, 0},
+{ 2, s_10_11, -1, 1, 0},
+{ 3, s_10_12, 11, 1, 0},
+{ 3, s_10_13, 11, 2, 0},
+{ 3, s_10_14, 11, 3, 0},
+{ 3, s_10_15, 11, 1, 0},
+{ 2, s_10_16, -1, 1, 0},
+{ 3, s_10_17, 16, 1, 0},
+{ 4, s_10_18, 17, 2, 0},
+{ 2, s_10_19, -1, 1, 0},
+{ 3, s_10_20, 19, 1, 0},
+{ 4, s_10_21, 20, 3, 0},
+{ 1, s_10_22, -1, 1, 0},
+{ 2, s_10_23, 22, 1, 0},
+{ 2, s_10_24, 22, 1, 0},
+{ 2, s_10_25, 22, 1, 0},
+{ 2, s_10_26, 22, 2, 0},
+{ 2, s_10_27, 22, 3, 0},
+{ 1, s_10_28, -1, 1, 0},
+{ 1, s_10_29, -1, 2, 0},
+{ 1, s_10_30, -1, 3, 0}
};
static const symbol s_11_0[2] = { 'i', 'd' };
@@ -415,48 +415,48 @@ static const symbol s_11_41[3] = { 0xE9, 'i', 'm' };
static const struct among a_11[42] =
{
-/* 0 */ { 2, s_11_0, -1, 1, 0},
-/* 1 */ { 3, s_11_1, 0, 1, 0},
-/* 2 */ { 4, s_11_2, 1, 1, 0},
-/* 3 */ { 3, s_11_3, 0, 1, 0},
-/* 4 */ { 4, s_11_4, 3, 1, 0},
-/* 5 */ { 3, s_11_5, 0, 2, 0},
-/* 6 */ { 3, s_11_6, 0, 3, 0},
-/* 7 */ { 1, s_11_7, -1, 1, 0},
-/* 8 */ { 2, s_11_8, 7, 1, 0},
-/* 9 */ { 3, s_11_9, 8, 1, 0},
-/* 10 */ { 2, s_11_10, 7, 1, 0},
-/* 11 */ { 3, s_11_11, 10, 1, 0},
-/* 12 */ { 2, s_11_12, 7, 2, 0},
-/* 13 */ { 2, s_11_13, 7, 3, 0},
-/* 14 */ { 4, s_11_14, -1, 1, 0},
-/* 15 */ { 5, s_11_15, 14, 1, 0},
-/* 16 */ { 6, s_11_16, 15, 1, 0},
-/* 17 */ { 5, s_11_17, 14, 3, 0},
-/* 18 */ { 2, s_11_18, -1, 1, 0},
-/* 19 */ { 3, s_11_19, 18, 1, 0},
-/* 20 */ { 4, s_11_20, 19, 1, 0},
-/* 21 */ { 3, s_11_21, 18, 1, 0},
-/* 22 */ { 4, s_11_22, 21, 1, 0},
-/* 23 */ { 3, s_11_23, 18, 2, 0},
-/* 24 */ { 3, s_11_24, 18, 3, 0},
-/* 25 */ { 3, s_11_25, -1, 1, 0},
-/* 26 */ { 4, s_11_26, 25, 1, 0},
-/* 27 */ { 5, s_11_27, 26, 1, 0},
-/* 28 */ { 4, s_11_28, 25, 1, 0},
-/* 29 */ { 5, s_11_29, 28, 1, 0},
-/* 30 */ { 4, s_11_30, 25, 2, 0},
-/* 31 */ { 4, s_11_31, 25, 3, 0},
-/* 32 */ { 5, s_11_32, -1, 1, 0},
-/* 33 */ { 6, s_11_33, 32, 1, 0},
-/* 34 */ { 5, s_11_34, -1, 2, 0},
-/* 35 */ { 2, s_11_35, -1, 1, 0},
-/* 36 */ { 3, s_11_36, 35, 1, 0},
-/* 37 */ { 4, s_11_37, 36, 1, 0},
-/* 38 */ { 3, s_11_38, 35, 1, 0},
-/* 39 */ { 4, s_11_39, 38, 1, 0},
-/* 40 */ { 3, s_11_40, 35, 2, 0},
-/* 41 */ { 3, s_11_41, 35, 3, 0}
+{ 2, s_11_0, -1, 1, 0},
+{ 3, s_11_1, 0, 1, 0},
+{ 4, s_11_2, 1, 1, 0},
+{ 3, s_11_3, 0, 1, 0},
+{ 4, s_11_4, 3, 1, 0},
+{ 3, s_11_5, 0, 2, 0},
+{ 3, s_11_6, 0, 3, 0},
+{ 1, s_11_7, -1, 1, 0},
+{ 2, s_11_8, 7, 1, 0},
+{ 3, s_11_9, 8, 1, 0},
+{ 2, s_11_10, 7, 1, 0},
+{ 3, s_11_11, 10, 1, 0},
+{ 2, s_11_12, 7, 2, 0},
+{ 2, s_11_13, 7, 3, 0},
+{ 4, s_11_14, -1, 1, 0},
+{ 5, s_11_15, 14, 1, 0},
+{ 6, s_11_16, 15, 1, 0},
+{ 5, s_11_17, 14, 3, 0},
+{ 2, s_11_18, -1, 1, 0},
+{ 3, s_11_19, 18, 1, 0},
+{ 4, s_11_20, 19, 1, 0},
+{ 3, s_11_21, 18, 1, 0},
+{ 4, s_11_22, 21, 1, 0},
+{ 3, s_11_23, 18, 2, 0},
+{ 3, s_11_24, 18, 3, 0},
+{ 3, s_11_25, -1, 1, 0},
+{ 4, s_11_26, 25, 1, 0},
+{ 5, s_11_27, 26, 1, 0},
+{ 4, s_11_28, 25, 1, 0},
+{ 5, s_11_29, 28, 1, 0},
+{ 4, s_11_30, 25, 2, 0},
+{ 4, s_11_31, 25, 3, 0},
+{ 5, s_11_32, -1, 1, 0},
+{ 6, s_11_33, 32, 1, 0},
+{ 5, s_11_34, -1, 2, 0},
+{ 2, s_11_35, -1, 1, 0},
+{ 3, s_11_36, 35, 1, 0},
+{ 4, s_11_37, 36, 1, 0},
+{ 3, s_11_38, 35, 1, 0},
+{ 4, s_11_39, 38, 1, 0},
+{ 3, s_11_40, 35, 2, 0},
+{ 3, s_11_41, 35, 3, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 };
@@ -476,60 +476,60 @@ static const symbol s_11[] = { 'e' };
static const symbol s_12[] = { 'a' };
static const symbol s_13[] = { 'e' };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $p1 = , line 46 */
- { int c1 = z->c; /* or, line 51 */
- if (in_grouping(z, g_v, 97, 252, 0)) goto lab1; /* grouping v, line 48 */
- if (in_grouping(z, g_v, 97, 252, 1) < 0) goto lab1; /* goto */ /* non v, line 48 */
- { int c2 = z->c; /* or, line 49 */
- if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 3 || !((101187584 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab3; /* among, line 49 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ if (in_grouping(z, g_v, 97, 252, 0)) goto lab1;
+ if (in_grouping(z, g_v, 97, 252, 1) < 0) goto lab1;
+ { int c2 = z->c;
+ if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 3 || !((101187584 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab3;
if (!(find_among(z, a_0, 8))) goto lab3;
goto lab2;
lab3:
z->c = c2;
if (z->c >= z->l) goto lab1;
- z->c++; /* next, line 49 */
+ z->c++;
}
lab2:
- z->I[0] = z->c; /* setmark p1, line 50 */
+ z->I[0] = z->c;
goto lab0;
lab1:
z->c = c1;
- if (out_grouping(z, g_v, 97, 252, 0)) return 0; /* non v, line 53 */
- { /* gopast */ /* grouping v, line 53 */
+ if (out_grouping(z, g_v, 97, 252, 0)) return 0;
+ {
int ret = out_grouping(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark p1, line 53 */
+ z->I[0] = z->c;
}
lab0:
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 58 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_v_ending(struct SN_env * z) { /* backwardmode */
+static int r_v_ending(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 61 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 225 && z->p[z->c - 1] != 233)) return 0; /* substring, line 61 */
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 225 && z->p[z->c - 1] != 233)) return 0;
among_var = find_among_b(z, a_1, 2);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 61 */
- { int ret = r_R1(z); /* call R1, line 61 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 61 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 62 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 63 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
@@ -537,84 +537,82 @@ static int r_v_ending(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_double(struct SN_env * z) { /* backwardmode */
- { int m_test1 = z->l - z->c; /* test, line 68 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((106790108 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 68 */
+static int r_double(struct SN_env * z) {
+ { int m_test1 = z->l - z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((106790108 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_2, 23))) return 0;
z->c = z->l - m_test1;
}
return 1;
}
-static int r_undouble(struct SN_env * z) { /* backwardmode */
+static int r_undouble(struct SN_env * z) {
if (z->c <= z->lb) return 0;
- z->c--; /* next, line 73 */
- z->ket = z->c; /* [, line 73 */
- { int ret = z->c - 1; /* hop, line 73 */
- if (z->lb > ret || ret > z->l) return 0;
- z->c = ret;
- }
- z->bra = z->c; /* ], line 73 */
- { int ret = slice_del(z); /* delete, line 73 */
+ z->c--;
+ z->ket = z->c;
+z->c = z->c - 1;
+ if (z->c < z->lb) return 0;
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_instrum(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 77 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0; /* substring, line 77 */
+static int r_instrum(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0;
if (!(find_among_b(z, a_3, 2))) return 0;
- z->bra = z->c; /* ], line 77 */
- { int ret = r_R1(z); /* call R1, line 77 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = r_double(z); /* call double, line 78 */
+ { int ret = r_double(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 81 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int ret = r_undouble(z); /* call undouble, line 82 */
+ { int ret = r_undouble(z);
if (ret <= 0) return ret;
}
return 1;
}
-static int r_case(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 87 */
- if (!(find_among_b(z, a_4, 44))) return 0; /* substring, line 87 */
- z->bra = z->c; /* ], line 87 */
- { int ret = r_R1(z); /* call R1, line 87 */
+static int r_case(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_4, 44))) return 0;
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 111 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int ret = r_v_ending(z); /* call v_ending, line 112 */
+ { int ret = r_v_ending(z);
if (ret <= 0) return ret;
}
return 1;
}
-static int r_case_special(struct SN_env * z) { /* backwardmode */
+static int r_case_special(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 116 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 110 && z->p[z->c - 1] != 116)) return 0; /* substring, line 116 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 110 && z->p[z->c - 1] != 116)) return 0;
among_var = find_among_b(z, a_5, 3);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 116 */
- { int ret = r_R1(z); /* call R1, line 116 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 116 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 117 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 118 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
@@ -622,29 +620,29 @@ static int r_case_special(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_case_other(struct SN_env * z) { /* backwardmode */
+static int r_case_other(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 124 */
- if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0; /* substring, line 124 */
+ z->ket = z->c;
+ if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0;
among_var = find_among_b(z, a_6, 6);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 124 */
- { int ret = r_R1(z); /* call R1, line 124 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 124 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 125 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 127 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 128 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
@@ -652,49 +650,49 @@ static int r_case_other(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_factive(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 133 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 225 && z->p[z->c - 1] != 233)) return 0; /* substring, line 133 */
+static int r_factive(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 225 && z->p[z->c - 1] != 233)) return 0;
if (!(find_among_b(z, a_7, 2))) return 0;
- z->bra = z->c; /* ], line 133 */
- { int ret = r_R1(z); /* call R1, line 133 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- { int ret = r_double(z); /* call double, line 134 */
+ { int ret = r_double(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 137 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- { int ret = r_undouble(z); /* call undouble, line 138 */
+ { int ret = r_undouble(z);
if (ret <= 0) return ret;
}
return 1;
}
-static int r_plural(struct SN_env * z) { /* backwardmode */
+static int r_plural(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 142 */
- if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0; /* substring, line 142 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0;
among_var = find_among_b(z, a_8, 7);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 142 */
- { int ret = r_R1(z); /* call R1, line 142 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 142 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 143 */
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_7); /* <-, line 144 */
+ { int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 145 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -702,29 +700,29 @@ static int r_plural(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_owned(struct SN_env * z) { /* backwardmode */
+static int r_owned(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 154 */
- if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 233)) return 0; /* substring, line 154 */
+ z->ket = z->c;
+ if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 233)) return 0;
among_var = find_among_b(z, a_9, 12);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 154 */
- { int ret = r_R1(z); /* call R1, line 154 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 154 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 155 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 156 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_9); /* <-, line 157 */
+ { int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
@@ -732,28 +730,28 @@ static int r_owned(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_sing_owner(struct SN_env * z) { /* backwardmode */
+static int r_sing_owner(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 168 */
- among_var = find_among_b(z, a_10, 31); /* substring, line 168 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_10, 31);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 168 */
- { int ret = r_R1(z); /* call R1, line 168 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 168 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 169 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_10); /* <-, line 170 */
+ { int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_11); /* <-, line 171 */
+ { int ret = slice_from_s(z, 1, s_11);
if (ret < 0) return ret;
}
break;
@@ -761,29 +759,29 @@ static int r_sing_owner(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_plur_owner(struct SN_env * z) { /* backwardmode */
+static int r_plur_owner(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 193 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((10768 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 193 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((10768 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_11, 42);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 193 */
- { int ret = r_R1(z); /* call R1, line 193 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 193 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 194 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_12); /* <-, line 195 */
+ { int ret = slice_from_s(z, 1, s_12);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_13); /* <-, line 196 */
+ { int ret = slice_from_s(z, 1, s_13);
if (ret < 0) return ret;
}
break;
@@ -791,65 +789,65 @@ static int r_plur_owner(struct SN_env * z) { /* backwardmode */
return 1;
}
-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 */
+extern int hungarian_ISO_8859_2_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 230 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 231 */
- { int ret = r_instrum(z); /* call instrum, line 231 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_instrum(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_case(z);
if (ret < 0) return ret;
}
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 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_case_special(z);
if (ret < 0) return ret;
}
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 */
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_case_other(z);
if (ret < 0) return ret;
}
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 */
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_factive(z);
if (ret < 0) return ret;
}
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 */
+ { int m7 = z->l - z->c; (void)m7;
+ { int ret = r_owned(z);
if (ret < 0) return ret;
}
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 */
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_sing_owner(z);
if (ret < 0) return ret;
}
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 */
+ { int m9 = z->l - z->c; (void)m9;
+ { int ret = r_plur_owner(z);
if (ret < 0) return ret;
}
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 */
+ { int m10 = z->l - z->c; (void)m10;
+ { int ret = r_plural(z);
if (ret < 0) return ret;
}
z->c = z->l - m10;
@@ -858,7 +856,7 @@ extern int hungarian_ISO_8859_2_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * hungarian_ISO_8859_2_create_env(void) { return SN_create_env(0, 1, 0); }
+extern struct SN_env * hungarian_ISO_8859_2_create_env(void) { return SN_create_env(0, 1); }
extern void hungarian_ISO_8859_2_close_env(struct SN_env * z) { SN_close_env(z, 0); }
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 14c6fb3c1463e..c1dd11909ae19 100644
--- a/src/backend/snowball/libstemmer/stem_ISO_8859_2_romanian.c
+++ b/src/backend/snowball/libstemmer/stem_ISO_8859_2_romanian.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -37,9 +37,9 @@ static const symbol s_0_2[1] = { 'U' };
static const struct among a_0[3] =
{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 1, s_0_1, 0, 1, 0},
-/* 2 */ { 1, s_0_2, 0, 2, 0}
+{ 0, 0, -1, 3, 0},
+{ 1, s_0_1, 0, 1, 0},
+{ 1, s_0_2, 0, 2, 0}
};
static const symbol s_1_0[2] = { 'e', 'a' };
@@ -61,22 +61,22 @@ static const symbol s_1_15[5] = { 'i', 'i', 'l', 'o', 'r' };
static const struct among a_1[16] =
{
-/* 0 */ { 2, s_1_0, -1, 3, 0},
-/* 1 */ { 4, s_1_1, -1, 7, 0},
-/* 2 */ { 3, s_1_2, -1, 2, 0},
-/* 3 */ { 3, s_1_3, -1, 4, 0},
-/* 4 */ { 4, s_1_4, -1, 7, 0},
-/* 5 */ { 3, s_1_5, -1, 3, 0},
-/* 6 */ { 3, s_1_6, -1, 5, 0},
-/* 7 */ { 4, s_1_7, 6, 4, 0},
-/* 8 */ { 3, s_1_8, -1, 4, 0},
-/* 9 */ { 4, s_1_9, -1, 6, 0},
-/* 10 */ { 2, s_1_10, -1, 4, 0},
-/* 11 */ { 4, s_1_11, -1, 1, 0},
-/* 12 */ { 2, s_1_12, -1, 1, 0},
-/* 13 */ { 4, s_1_13, -1, 3, 0},
-/* 14 */ { 4, s_1_14, -1, 4, 0},
-/* 15 */ { 5, s_1_15, 14, 4, 0}
+{ 2, s_1_0, -1, 3, 0},
+{ 4, s_1_1, -1, 7, 0},
+{ 3, s_1_2, -1, 2, 0},
+{ 3, s_1_3, -1, 4, 0},
+{ 4, s_1_4, -1, 7, 0},
+{ 3, s_1_5, -1, 3, 0},
+{ 3, s_1_6, -1, 5, 0},
+{ 4, s_1_7, 6, 4, 0},
+{ 3, s_1_8, -1, 4, 0},
+{ 4, s_1_9, -1, 6, 0},
+{ 2, s_1_10, -1, 4, 0},
+{ 4, s_1_11, -1, 1, 0},
+{ 2, s_1_12, -1, 1, 0},
+{ 4, s_1_13, -1, 3, 0},
+{ 4, s_1_14, -1, 4, 0},
+{ 5, s_1_15, 14, 4, 0}
};
static const symbol s_2_0[5] = { 'i', 'c', 'a', 'l', 'a' };
@@ -128,52 +128,52 @@ static const symbol s_2_45[5] = { 'i', 't', 'i', 'v', 0xE3 };
static const struct among a_2[46] =
{
-/* 0 */ { 5, s_2_0, -1, 4, 0},
-/* 1 */ { 5, s_2_1, -1, 4, 0},
-/* 2 */ { 5, s_2_2, -1, 5, 0},
-/* 3 */ { 5, s_2_3, -1, 6, 0},
-/* 4 */ { 5, s_2_4, -1, 4, 0},
-/* 5 */ { 6, s_2_5, -1, 5, 0},
-/* 6 */ { 6, s_2_6, -1, 6, 0},
-/* 7 */ { 6, s_2_7, -1, 5, 0},
-/* 8 */ { 6, s_2_8, -1, 6, 0},
-/* 9 */ { 6, s_2_9, -1, 5, 0},
-/* 10 */ { 7, s_2_10, -1, 4, 0},
-/* 11 */ { 9, s_2_11, -1, 1, 0},
-/* 12 */ { 9, s_2_12, -1, 2, 0},
-/* 13 */ { 7, s_2_13, -1, 3, 0},
-/* 14 */ { 5, s_2_14, -1, 4, 0},
-/* 15 */ { 5, s_2_15, -1, 5, 0},
-/* 16 */ { 5, s_2_16, -1, 6, 0},
-/* 17 */ { 5, s_2_17, -1, 4, 0},
-/* 18 */ { 5, s_2_18, -1, 5, 0},
-/* 19 */ { 7, s_2_19, 18, 4, 0},
-/* 20 */ { 5, s_2_20, -1, 6, 0},
-/* 21 */ { 5, s_2_21, -1, 5, 0},
-/* 22 */ { 7, s_2_22, -1, 4, 0},
-/* 23 */ { 9, s_2_23, -1, 1, 0},
-/* 24 */ { 7, s_2_24, -1, 3, 0},
-/* 25 */ { 5, s_2_25, -1, 4, 0},
-/* 26 */ { 5, s_2_26, -1, 5, 0},
-/* 27 */ { 5, s_2_27, -1, 6, 0},
-/* 28 */ { 6, s_2_28, -1, 4, 0},
-/* 29 */ { 8, s_2_29, -1, 1, 0},
-/* 30 */ { 6, s_2_30, -1, 3, 0},
-/* 31 */ { 7, s_2_31, -1, 4, 0},
-/* 32 */ { 9, s_2_32, -1, 1, 0},
-/* 33 */ { 7, s_2_33, -1, 3, 0},
-/* 34 */ { 4, s_2_34, -1, 4, 0},
-/* 35 */ { 4, s_2_35, -1, 5, 0},
-/* 36 */ { 6, s_2_36, 35, 4, 0},
-/* 37 */ { 4, s_2_37, -1, 6, 0},
-/* 38 */ { 4, s_2_38, -1, 5, 0},
-/* 39 */ { 4, s_2_39, -1, 4, 0},
-/* 40 */ { 4, s_2_40, -1, 5, 0},
-/* 41 */ { 4, s_2_41, -1, 6, 0},
-/* 42 */ { 5, s_2_42, -1, 4, 0},
-/* 43 */ { 5, s_2_43, -1, 4, 0},
-/* 44 */ { 5, s_2_44, -1, 5, 0},
-/* 45 */ { 5, s_2_45, -1, 6, 0}
+{ 5, s_2_0, -1, 4, 0},
+{ 5, s_2_1, -1, 4, 0},
+{ 5, s_2_2, -1, 5, 0},
+{ 5, s_2_3, -1, 6, 0},
+{ 5, s_2_4, -1, 4, 0},
+{ 6, s_2_5, -1, 5, 0},
+{ 6, s_2_6, -1, 6, 0},
+{ 6, s_2_7, -1, 5, 0},
+{ 6, s_2_8, -1, 6, 0},
+{ 6, s_2_9, -1, 5, 0},
+{ 7, s_2_10, -1, 4, 0},
+{ 9, s_2_11, -1, 1, 0},
+{ 9, s_2_12, -1, 2, 0},
+{ 7, s_2_13, -1, 3, 0},
+{ 5, s_2_14, -1, 4, 0},
+{ 5, s_2_15, -1, 5, 0},
+{ 5, s_2_16, -1, 6, 0},
+{ 5, s_2_17, -1, 4, 0},
+{ 5, s_2_18, -1, 5, 0},
+{ 7, s_2_19, 18, 4, 0},
+{ 5, s_2_20, -1, 6, 0},
+{ 5, s_2_21, -1, 5, 0},
+{ 7, s_2_22, -1, 4, 0},
+{ 9, s_2_23, -1, 1, 0},
+{ 7, s_2_24, -1, 3, 0},
+{ 5, s_2_25, -1, 4, 0},
+{ 5, s_2_26, -1, 5, 0},
+{ 5, s_2_27, -1, 6, 0},
+{ 6, s_2_28, -1, 4, 0},
+{ 8, s_2_29, -1, 1, 0},
+{ 6, s_2_30, -1, 3, 0},
+{ 7, s_2_31, -1, 4, 0},
+{ 9, s_2_32, -1, 1, 0},
+{ 7, s_2_33, -1, 3, 0},
+{ 4, s_2_34, -1, 4, 0},
+{ 4, s_2_35, -1, 5, 0},
+{ 6, s_2_36, 35, 4, 0},
+{ 4, s_2_37, -1, 6, 0},
+{ 4, s_2_38, -1, 5, 0},
+{ 4, s_2_39, -1, 4, 0},
+{ 4, s_2_40, -1, 5, 0},
+{ 4, s_2_41, -1, 6, 0},
+{ 5, s_2_42, -1, 4, 0},
+{ 5, s_2_43, -1, 4, 0},
+{ 5, s_2_44, -1, 5, 0},
+{ 5, s_2_45, -1, 6, 0}
};
static const symbol s_3_0[3] = { 'i', 'c', 'a' };
@@ -241,68 +241,68 @@ static const symbol s_3_61[3] = { 'i', 'v', 0xE3 };
static const struct among a_3[62] =
{
-/* 0 */ { 3, s_3_0, -1, 1, 0},
-/* 1 */ { 5, s_3_1, -1, 1, 0},
-/* 2 */ { 5, 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 */ { 4, s_3_6, -1, 1, 0},
-/* 7 */ { 4, s_3_7, -1, 3, 0},
-/* 8 */ { 3, s_3_8, -1, 1, 0},
-/* 9 */ { 3, s_3_9, -1, 1, 0},
-/* 10 */ { 2, s_3_10, -1, 1, 0},
-/* 11 */ { 3, s_3_11, -1, 1, 0},
-/* 12 */ { 5, s_3_12, -1, 1, 0},
-/* 13 */ { 5, s_3_13, -1, 1, 0},
-/* 14 */ { 4, s_3_14, -1, 3, 0},
-/* 15 */ { 4, s_3_15, -1, 2, 0},
-/* 16 */ { 4, s_3_16, -1, 1, 0},
-/* 17 */ { 3, s_3_17, -1, 1, 0},
-/* 18 */ { 5, s_3_18, 17, 1, 0},
-/* 19 */ { 3, s_3_19, -1, 1, 0},
-/* 20 */ { 4, s_3_20, -1, 1, 0},
-/* 21 */ { 4, s_3_21, -1, 3, 0},
-/* 22 */ { 3, s_3_22, -1, 1, 0},
-/* 23 */ { 3, s_3_23, -1, 1, 0},
-/* 24 */ { 3, s_3_24, -1, 1, 0},
-/* 25 */ { 5, s_3_25, -1, 1, 0},
-/* 26 */ { 5, s_3_26, -1, 1, 0},
-/* 27 */ { 4, s_3_27, -1, 2, 0},
-/* 28 */ { 5, s_3_28, -1, 1, 0},
-/* 29 */ { 3, s_3_29, -1, 1, 0},
-/* 30 */ { 3, s_3_30, -1, 1, 0},
-/* 31 */ { 5, 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, 3, 0},
-/* 35 */ { 3, s_3_35, -1, 1, 0},
-/* 36 */ { 4, s_3_36, -1, 3, 0},
-/* 37 */ { 3, s_3_37, -1, 1, 0},
-/* 38 */ { 3, s_3_38, -1, 1, 0},
-/* 39 */ { 4, s_3_39, -1, 1, 0},
-/* 40 */ { 5, s_3_40, -1, 1, 0},
-/* 41 */ { 4, s_3_41, -1, 1, 0},
-/* 42 */ { 4, s_3_42, -1, 1, 0},
-/* 43 */ { 3, s_3_43, -1, 3, 0},
-/* 44 */ { 4, s_3_44, -1, 1, 0},
-/* 45 */ { 2, s_3_45, -1, 1, 0},
-/* 46 */ { 2, s_3_46, -1, 1, 0},
-/* 47 */ { 2, s_3_47, -1, 1, 0},
-/* 48 */ { 3, s_3_48, -1, 1, 0},
-/* 49 */ { 3, s_3_49, -1, 3, 0},
-/* 50 */ { 2, s_3_50, -1, 1, 0},
-/* 51 */ { 2, s_3_51, -1, 1, 0},
-/* 52 */ { 3, s_3_52, -1, 1, 0},
-/* 53 */ { 5, s_3_53, -1, 1, 0},
-/* 54 */ { 5, s_3_54, -1, 1, 0},
-/* 55 */ { 4, s_3_55, -1, 1, 0},
-/* 56 */ { 3, s_3_56, -1, 1, 0},
-/* 57 */ { 3, s_3_57, -1, 1, 0},
-/* 58 */ { 4, s_3_58, -1, 1, 0},
-/* 59 */ { 4, s_3_59, -1, 3, 0},
-/* 60 */ { 3, s_3_60, -1, 1, 0},
-/* 61 */ { 3, s_3_61, -1, 1, 0}
+{ 3, s_3_0, -1, 1, 0},
+{ 5, s_3_1, -1, 1, 0},
+{ 5, s_3_2, -1, 1, 0},
+{ 4, s_3_3, -1, 1, 0},
+{ 3, s_3_4, -1, 1, 0},
+{ 3, s_3_5, -1, 1, 0},
+{ 4, s_3_6, -1, 1, 0},
+{ 4, s_3_7, -1, 3, 0},
+{ 3, s_3_8, -1, 1, 0},
+{ 3, s_3_9, -1, 1, 0},
+{ 2, s_3_10, -1, 1, 0},
+{ 3, s_3_11, -1, 1, 0},
+{ 5, s_3_12, -1, 1, 0},
+{ 5, s_3_13, -1, 1, 0},
+{ 4, s_3_14, -1, 3, 0},
+{ 4, s_3_15, -1, 2, 0},
+{ 4, s_3_16, -1, 1, 0},
+{ 3, s_3_17, -1, 1, 0},
+{ 5, s_3_18, 17, 1, 0},
+{ 3, s_3_19, -1, 1, 0},
+{ 4, s_3_20, -1, 1, 0},
+{ 4, s_3_21, -1, 3, 0},
+{ 3, s_3_22, -1, 1, 0},
+{ 3, s_3_23, -1, 1, 0},
+{ 3, s_3_24, -1, 1, 0},
+{ 5, s_3_25, -1, 1, 0},
+{ 5, s_3_26, -1, 1, 0},
+{ 4, s_3_27, -1, 2, 0},
+{ 5, s_3_28, -1, 1, 0},
+{ 3, s_3_29, -1, 1, 0},
+{ 3, s_3_30, -1, 1, 0},
+{ 5, s_3_31, 30, 1, 0},
+{ 3, s_3_32, -1, 1, 0},
+{ 4, s_3_33, -1, 1, 0},
+{ 4, s_3_34, -1, 3, 0},
+{ 3, s_3_35, -1, 1, 0},
+{ 4, s_3_36, -1, 3, 0},
+{ 3, s_3_37, -1, 1, 0},
+{ 3, s_3_38, -1, 1, 0},
+{ 4, s_3_39, -1, 1, 0},
+{ 5, s_3_40, -1, 1, 0},
+{ 4, s_3_41, -1, 1, 0},
+{ 4, s_3_42, -1, 1, 0},
+{ 3, s_3_43, -1, 3, 0},
+{ 4, s_3_44, -1, 1, 0},
+{ 2, s_3_45, -1, 1, 0},
+{ 2, s_3_46, -1, 1, 0},
+{ 2, s_3_47, -1, 1, 0},
+{ 3, s_3_48, -1, 1, 0},
+{ 3, s_3_49, -1, 3, 0},
+{ 2, s_3_50, -1, 1, 0},
+{ 2, s_3_51, -1, 1, 0},
+{ 3, s_3_52, -1, 1, 0},
+{ 5, s_3_53, -1, 1, 0},
+{ 5, s_3_54, -1, 1, 0},
+{ 4, s_3_55, -1, 1, 0},
+{ 3, s_3_56, -1, 1, 0},
+{ 3, s_3_57, -1, 1, 0},
+{ 4, s_3_58, -1, 1, 0},
+{ 4, s_3_59, -1, 3, 0},
+{ 3, s_3_60, -1, 1, 0},
+{ 3, s_3_61, -1, 1, 0}
};
static const symbol s_4_0[2] = { 'e', 'a' };
@@ -402,100 +402,100 @@ static const symbol s_4_93[4] = { 'e', 'a', 'z', 0xE3 };
static const struct among a_4[94] =
{
-/* 0 */ { 2, s_4_0, -1, 1, 0},
-/* 1 */ { 2, s_4_1, -1, 1, 0},
-/* 2 */ { 3, s_4_2, -1, 1, 0},
-/* 3 */ { 3, s_4_3, -1, 1, 0},
-/* 4 */ { 3, s_4_4, -1, 1, 0},
-/* 5 */ { 3, s_4_5, -1, 1, 0},
-/* 6 */ { 3, s_4_6, -1, 1, 0},
-/* 7 */ { 3, s_4_7, -1, 1, 0},
-/* 8 */ { 3, s_4_8, -1, 1, 0},
-/* 9 */ { 3, s_4_9, -1, 1, 0},
-/* 10 */ { 2, s_4_10, -1, 2, 0},
-/* 11 */ { 3, s_4_11, 10, 1, 0},
-/* 12 */ { 4, s_4_12, 10, 2, 0},
-/* 13 */ { 3, s_4_13, 10, 1, 0},
-/* 14 */ { 3, s_4_14, 10, 1, 0},
-/* 15 */ { 3, s_4_15, 10, 1, 0},
-/* 16 */ { 4, s_4_16, -1, 1, 0},
-/* 17 */ { 4, s_4_17, -1, 1, 0},
-/* 18 */ { 3, s_4_18, -1, 1, 0},
-/* 19 */ { 2, s_4_19, -1, 1, 0},
-/* 20 */ { 3, s_4_20, 19, 1, 0},
-/* 21 */ { 3, s_4_21, 19, 1, 0},
-/* 22 */ { 3, s_4_22, -1, 2, 0},
-/* 23 */ { 4, s_4_23, -1, 1, 0},
-/* 24 */ { 4, s_4_24, -1, 1, 0},
-/* 25 */ { 2, s_4_25, -1, 1, 0},
-/* 26 */ { 3, s_4_26, -1, 1, 0},
-/* 27 */ { 3, s_4_27, -1, 1, 0},
-/* 28 */ { 4, s_4_28, -1, 2, 0},
-/* 29 */ { 5, s_4_29, 28, 1, 0},
-/* 30 */ { 6, s_4_30, 28, 2, 0},
-/* 31 */ { 5, s_4_31, 28, 1, 0},
-/* 32 */ { 5, s_4_32, 28, 1, 0},
-/* 33 */ { 5, s_4_33, 28, 1, 0},
-/* 34 */ { 3, s_4_34, -1, 1, 0},
-/* 35 */ { 3, s_4_35, -1, 1, 0},
-/* 36 */ { 3, s_4_36, -1, 1, 0},
-/* 37 */ { 2, s_4_37, -1, 1, 0},
-/* 38 */ { 3, s_4_38, -1, 2, 0},
-/* 39 */ { 4, s_4_39, 38, 1, 0},
-/* 40 */ { 4, s_4_40, 38, 1, 0},
-/* 41 */ { 3, s_4_41, -1, 2, 0},
-/* 42 */ { 3, s_4_42, -1, 2, 0},
-/* 43 */ { 3, s_4_43, -1, 2, 0},
-/* 44 */ { 5, s_4_44, -1, 1, 0},
-/* 45 */ { 6, s_4_45, -1, 2, 0},
-/* 46 */ { 7, s_4_46, 45, 1, 0},
-/* 47 */ { 8, s_4_47, 45, 2, 0},
-/* 48 */ { 7, s_4_48, 45, 1, 0},
-/* 49 */ { 7, s_4_49, 45, 1, 0},
-/* 50 */ { 7, s_4_50, 45, 1, 0},
-/* 51 */ { 5, s_4_51, -1, 1, 0},
-/* 52 */ { 5, s_4_52, -1, 1, 0},
-/* 53 */ { 5, s_4_53, -1, 1, 0},
-/* 54 */ { 2, s_4_54, -1, 1, 0},
-/* 55 */ { 3, s_4_55, 54, 1, 0},
-/* 56 */ { 3, s_4_56, 54, 1, 0},
-/* 57 */ { 2, s_4_57, -1, 2, 0},
-/* 58 */ { 4, s_4_58, 57, 1, 0},
-/* 59 */ { 5, s_4_59, 57, 2, 0},
-/* 60 */ { 4, s_4_60, 57, 1, 0},
-/* 61 */ { 4, s_4_61, 57, 1, 0},
-/* 62 */ { 4, s_4_62, 57, 1, 0},
-/* 63 */ { 2, s_4_63, -1, 2, 0},
-/* 64 */ { 2, s_4_64, -1, 2, 0},
-/* 65 */ { 2, s_4_65, -1, 2, 0},
-/* 66 */ { 4, s_4_66, 65, 1, 0},
-/* 67 */ { 5, s_4_67, 65, 2, 0},
-/* 68 */ { 6, s_4_68, 67, 1, 0},
-/* 69 */ { 7, s_4_69, 67, 2, 0},
-/* 70 */ { 6, s_4_70, 67, 1, 0},
-/* 71 */ { 6, s_4_71, 67, 1, 0},
-/* 72 */ { 6, s_4_72, 67, 1, 0},
-/* 73 */ { 4, s_4_73, 65, 1, 0},
-/* 74 */ { 4, s_4_74, 65, 1, 0},
-/* 75 */ { 4, s_4_75, 65, 1, 0},
-/* 76 */ { 2, s_4_76, -1, 1, 0},
-/* 77 */ { 3, s_4_77, 76, 1, 0},
-/* 78 */ { 3, s_4_78, 76, 1, 0},
-/* 79 */ { 4, s_4_79, -1, 1, 0},
-/* 80 */ { 4, s_4_80, -1, 1, 0},
-/* 81 */ { 2, s_4_81, -1, 1, 0},
-/* 82 */ { 5, s_4_82, -1, 1, 0},
-/* 83 */ { 3, s_4_83, -1, 1, 0},
-/* 84 */ { 4, s_4_84, -1, 2, 0},
-/* 85 */ { 5, s_4_85, 84, 1, 0},
-/* 86 */ { 6, s_4_86, 84, 2, 0},
-/* 87 */ { 5, s_4_87, 84, 1, 0},
-/* 88 */ { 5, s_4_88, 84, 1, 0},
-/* 89 */ { 5, s_4_89, 84, 1, 0},
-/* 90 */ { 3, s_4_90, -1, 1, 0},
-/* 91 */ { 3, s_4_91, -1, 1, 0},
-/* 92 */ { 3, s_4_92, -1, 1, 0},
-/* 93 */ { 4, s_4_93, -1, 1, 0}
+{ 2, s_4_0, -1, 1, 0},
+{ 2, s_4_1, -1, 1, 0},
+{ 3, s_4_2, -1, 1, 0},
+{ 3, s_4_3, -1, 1, 0},
+{ 3, s_4_4, -1, 1, 0},
+{ 3, s_4_5, -1, 1, 0},
+{ 3, s_4_6, -1, 1, 0},
+{ 3, s_4_7, -1, 1, 0},
+{ 3, s_4_8, -1, 1, 0},
+{ 3, s_4_9, -1, 1, 0},
+{ 2, s_4_10, -1, 2, 0},
+{ 3, s_4_11, 10, 1, 0},
+{ 4, s_4_12, 10, 2, 0},
+{ 3, s_4_13, 10, 1, 0},
+{ 3, s_4_14, 10, 1, 0},
+{ 3, s_4_15, 10, 1, 0},
+{ 4, s_4_16, -1, 1, 0},
+{ 4, s_4_17, -1, 1, 0},
+{ 3, s_4_18, -1, 1, 0},
+{ 2, s_4_19, -1, 1, 0},
+{ 3, s_4_20, 19, 1, 0},
+{ 3, s_4_21, 19, 1, 0},
+{ 3, s_4_22, -1, 2, 0},
+{ 4, s_4_23, -1, 1, 0},
+{ 4, s_4_24, -1, 1, 0},
+{ 2, s_4_25, -1, 1, 0},
+{ 3, s_4_26, -1, 1, 0},
+{ 3, s_4_27, -1, 1, 0},
+{ 4, s_4_28, -1, 2, 0},
+{ 5, s_4_29, 28, 1, 0},
+{ 6, s_4_30, 28, 2, 0},
+{ 5, s_4_31, 28, 1, 0},
+{ 5, s_4_32, 28, 1, 0},
+{ 5, s_4_33, 28, 1, 0},
+{ 3, s_4_34, -1, 1, 0},
+{ 3, s_4_35, -1, 1, 0},
+{ 3, s_4_36, -1, 1, 0},
+{ 2, s_4_37, -1, 1, 0},
+{ 3, s_4_38, -1, 2, 0},
+{ 4, s_4_39, 38, 1, 0},
+{ 4, s_4_40, 38, 1, 0},
+{ 3, s_4_41, -1, 2, 0},
+{ 3, s_4_42, -1, 2, 0},
+{ 3, s_4_43, -1, 2, 0},
+{ 5, s_4_44, -1, 1, 0},
+{ 6, s_4_45, -1, 2, 0},
+{ 7, s_4_46, 45, 1, 0},
+{ 8, s_4_47, 45, 2, 0},
+{ 7, s_4_48, 45, 1, 0},
+{ 7, s_4_49, 45, 1, 0},
+{ 7, s_4_50, 45, 1, 0},
+{ 5, s_4_51, -1, 1, 0},
+{ 5, s_4_52, -1, 1, 0},
+{ 5, s_4_53, -1, 1, 0},
+{ 2, s_4_54, -1, 1, 0},
+{ 3, s_4_55, 54, 1, 0},
+{ 3, s_4_56, 54, 1, 0},
+{ 2, s_4_57, -1, 2, 0},
+{ 4, s_4_58, 57, 1, 0},
+{ 5, s_4_59, 57, 2, 0},
+{ 4, s_4_60, 57, 1, 0},
+{ 4, s_4_61, 57, 1, 0},
+{ 4, s_4_62, 57, 1, 0},
+{ 2, s_4_63, -1, 2, 0},
+{ 2, s_4_64, -1, 2, 0},
+{ 2, s_4_65, -1, 2, 0},
+{ 4, s_4_66, 65, 1, 0},
+{ 5, s_4_67, 65, 2, 0},
+{ 6, s_4_68, 67, 1, 0},
+{ 7, s_4_69, 67, 2, 0},
+{ 6, s_4_70, 67, 1, 0},
+{ 6, s_4_71, 67, 1, 0},
+{ 6, s_4_72, 67, 1, 0},
+{ 4, s_4_73, 65, 1, 0},
+{ 4, s_4_74, 65, 1, 0},
+{ 4, s_4_75, 65, 1, 0},
+{ 2, s_4_76, -1, 1, 0},
+{ 3, s_4_77, 76, 1, 0},
+{ 3, s_4_78, 76, 1, 0},
+{ 4, s_4_79, -1, 1, 0},
+{ 4, s_4_80, -1, 1, 0},
+{ 2, s_4_81, -1, 1, 0},
+{ 5, s_4_82, -1, 1, 0},
+{ 3, s_4_83, -1, 1, 0},
+{ 4, s_4_84, -1, 2, 0},
+{ 5, s_4_85, 84, 1, 0},
+{ 6, s_4_86, 84, 2, 0},
+{ 5, s_4_87, 84, 1, 0},
+{ 5, s_4_88, 84, 1, 0},
+{ 5, s_4_89, 84, 1, 0},
+{ 3, s_4_90, -1, 1, 0},
+{ 3, s_4_91, -1, 1, 0},
+{ 3, s_4_92, -1, 1, 0},
+{ 4, s_4_93, -1, 1, 0}
};
static const symbol s_5_0[1] = { 'a' };
@@ -506,11 +506,11 @@ static const symbol s_5_4[1] = { 0xE3 };
static const struct among a_5[5] =
{
-/* 0 */ { 1, s_5_0, -1, 1, 0},
-/* 1 */ { 1, s_5_1, -1, 1, 0},
-/* 2 */ { 2, s_5_2, 1, 1, 0},
-/* 3 */ { 1, s_5_3, -1, 1, 0},
-/* 4 */ { 1, s_5_4, -1, 1, 0}
+{ 1, s_5_0, -1, 1, 0},
+{ 1, s_5_1, -1, 1, 0},
+{ 2, s_5_2, 1, 1, 0},
+{ 1, s_5_3, -1, 1, 0},
+{ 1, s_5_4, -1, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 32 };
@@ -535,30 +535,29 @@ static const symbol s_16[] = { 'i', 't' };
static const symbol s_17[] = { 't' };
static const symbol s_18[] = { 'i', 's', 't' };
-static int r_prelude(struct SN_env * z) { /* forwardmode */
-/* repeat, line 32 */
-
- while(1) { int c1 = z->c;
- while(1) { /* goto, line 32 */
+static int r_prelude(struct SN_env * z) {
+ while(1) {
+ int c1 = z->c;
+ while(1) {
int c2 = z->c;
- if (in_grouping(z, g_v, 97, 238, 0)) goto lab1; /* grouping v, line 33 */
- z->bra = z->c; /* [, line 33 */
- { int c3 = z->c; /* or, line 33 */
- if (z->c == z->l || z->p[z->c] != 'u') goto lab3; /* literal, line 33 */
+ if (in_grouping(z, g_v, 97, 238, 0)) goto lab1;
+ z->bra = z->c;
+ { int c3 = z->c;
+ if (z->c == z->l || z->p[z->c] != 'u') goto lab3;
z->c++;
- z->ket = z->c; /* ], line 33 */
- if (in_grouping(z, g_v, 97, 238, 0)) goto lab3; /* grouping v, line 33 */
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 33 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 238, 0)) goto lab3;
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
goto lab2;
lab3:
z->c = c3;
- if (z->c == z->l || z->p[z->c] != 'i') goto lab1; /* literal, line 34 */
+ if (z->c == z->l || z->p[z->c] != 'i') goto lab1;
z->c++;
- z->ket = z->c; /* ], line 34 */
- if (in_grouping(z, g_v, 97, 238, 0)) goto lab1; /* grouping v, line 34 */
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 34 */
+ z->ket = z->c;
+ if (in_grouping(z, g_v, 97, 238, 0)) goto lab1;
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
}
@@ -568,7 +567,7 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
lab1:
z->c = c2;
if (z->c >= z->l) goto lab0;
- z->c++; /* goto, line 32 */
+ z->c++;
}
continue;
lab0:
@@ -578,16 +577,16 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $pV = , line 40 */
- z->I[1] = z->l; /* $p1 = , line 41 */
- z->I[2] = z->l; /* $p2 = , line 42 */
- { int c1 = z->c; /* do, line 44 */
- { int c2 = z->c; /* or, line 46 */
- if (in_grouping(z, g_v, 97, 238, 0)) goto lab2; /* grouping v, line 45 */
- { int c3 = z->c; /* or, line 45 */
- if (out_grouping(z, g_v, 97, 238, 0)) goto lab4; /* non v, line 45 */
- { /* gopast */ /* grouping v, line 45 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping(z, g_v, 97, 238, 0)) goto lab2;
+ { int c3 = z->c;
+ if (out_grouping(z, g_v, 97, 238, 0)) goto lab4;
+ {
int ret = out_grouping(z, g_v, 97, 238, 1);
if (ret < 0) goto lab4;
z->c += ret;
@@ -595,8 +594,8 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab3;
lab4:
z->c = c3;
- if (in_grouping(z, g_v, 97, 238, 0)) goto lab2; /* grouping v, line 45 */
- { /* gopast */ /* non v, line 45 */
+ if (in_grouping(z, g_v, 97, 238, 0)) goto lab2;
+ {
int ret = in_grouping(z, g_v, 97, 238, 1);
if (ret < 0) goto lab2;
z->c += ret;
@@ -606,10 +605,10 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab1;
lab2:
z->c = c2;
- if (out_grouping(z, g_v, 97, 238, 0)) goto lab0; /* non v, line 47 */
- { int c4 = z->c; /* or, line 47 */
- if (out_grouping(z, g_v, 97, 238, 0)) goto lab6; /* non v, line 47 */
- { /* gopast */ /* grouping v, line 47 */
+ if (out_grouping(z, g_v, 97, 238, 0)) goto lab0;
+ { int c4 = z->c;
+ if (out_grouping(z, g_v, 97, 238, 0)) goto lab6;
+ {
int ret = out_grouping(z, g_v, 97, 238, 1);
if (ret < 0) goto lab6;
z->c += ret;
@@ -617,71 +616,70 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
goto lab5;
lab6:
z->c = c4;
- if (in_grouping(z, g_v, 97, 238, 0)) goto lab0; /* grouping v, line 47 */
+ if (in_grouping(z, g_v, 97, 238, 0)) goto lab0;
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 47 */
+ z->c++;
}
lab5:
;
}
lab1:
- z->I[0] = z->c; /* setmark pV, line 48 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c5 = z->c; /* do, line 50 */
- { /* gopast */ /* grouping v, line 51 */
+ { int c5 = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 238, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 51 */
+ {
int ret = in_grouping(z, g_v, 97, 238, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p1, line 51 */
- { /* gopast */ /* grouping v, line 52 */
+ z->I[1] = z->c;
+ {
int ret = out_grouping(z, g_v, 97, 238, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- { /* gopast */ /* non v, line 52 */
+ {
int ret = in_grouping(z, g_v, 97, 238, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
- z->I[2] = z->c; /* setmark p2, line 52 */
+ z->I[0] = z->c;
lab7:
z->c = c5;
}
return 1;
}
-static int r_postlude(struct SN_env * z) { /* forwardmode */
+static int r_postlude(struct SN_env * z) {
int among_var;
-/* 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 */
+ while(1) {
+ int c1 = z->c;
+ z->bra = z->c;
+ if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else
among_var = find_among(z, a_0, 3);
if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 58 */
- switch (among_var) { /* among, line 58 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 59 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 60 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 3:
if (z->c >= z->l) goto lab0;
- z->c++; /* next, line 61 */
+ z->c++;
break;
}
continue;
@@ -692,70 +690,70 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_RV(struct SN_env * z) { /* backwardmode */
- if (!(z->I[0] <= z->c)) return 0; /* $( <= ), line 68 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 69 */
+static int r_R1(struct SN_env * z) {
+ if (!(z->I[1] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 70 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_step_0(struct SN_env * z) { /* backwardmode */
+static int r_step_0(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 73 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((266786 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 73 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((266786 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_1, 16);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 73 */
- { int ret = r_R1(z); /* call R1, line 73 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 73 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 75 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 77 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 79 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 81 */
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 5:
- { int m1 = z->l - z->c; (void)m1; /* not, line 83 */
- if (!(eq_s_b(z, 2, s_7))) goto lab0; /* literal, line 83 */
+ { int m1 = z->l - z->c; (void)m1;
+ if (!(eq_s_b(z, 2, s_7))) goto lab0;
return 0;
lab0:
z->c = z->l - m1;
}
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 83 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 2, s_9); /* <-, line 85 */
+ { int ret = slice_from_s(z, 2, s_9);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = slice_from_s(z, 3, s_10); /* <-, line 87 */
+ { int ret = slice_from_s(z, 3, s_10);
if (ret < 0) return ret;
}
break;
@@ -763,61 +761,60 @@ static int r_step_0(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_combo_suffix(struct SN_env * z) { /* backwardmode */
+static int r_combo_suffix(struct SN_env * z) {
int among_var;
- { int m_test1 = z->l - z->c; /* test, line 91 */
- z->ket = z->c; /* [, line 92 */
- among_var = find_among_b(z, a_2, 46); /* substring, line 92 */
+ { int m_test1 = z->l - z->c;
+ z->ket = z->c;
+ among_var = find_among_b(z, a_2, 46);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 92 */
- { int ret = r_R1(z); /* call R1, line 92 */
+ z->bra = z->c;
+ { int ret = r_R1(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 93 */
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 4, s_11); /* <-, line 101 */
+ { int ret = slice_from_s(z, 4, s_11);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 4, s_12); /* <-, line 104 */
+ { int ret = slice_from_s(z, 4, s_12);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 2, s_13); /* <-, line 107 */
+ { int ret = slice_from_s(z, 2, s_13);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 2, s_14); /* <-, line 113 */
+ { int ret = slice_from_s(z, 2, s_14);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 2, s_15); /* <-, line 118 */
+ { int ret = slice_from_s(z, 2, s_15);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 2, s_16); /* <-, line 122 */
+ { int ret = slice_from_s(z, 2, s_16);
if (ret < 0) return ret;
}
break;
}
- z->B[0] = 1; /* set standard_suffix_removed, line 125 */
+ z->I[3] = 1;
z->c = z->l - m_test1;
}
return 1;
}
-static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
+static int r_standard_suffix(struct SN_env * z) {
int among_var;
- z->B[0] = 0; /* unset standard_suffix_removed, line 130 */
-/* repeat, line 131 */
-
- while(1) { int m1 = z->l - z->c; (void)m1;
- { int ret = r_combo_suffix(z); /* call combo_suffix, line 131 */
+ z->I[3] = 0;
+ while(1) {
+ int m1 = z->l - z->c; (void)m1;
+ { int ret = r_combo_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -826,64 +823,64 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
z->c = z->l - m1;
break;
}
- z->ket = z->c; /* [, line 132 */
- among_var = find_among_b(z, a_3, 62); /* substring, line 132 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_3, 62);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 132 */
- { int ret = r_R2(z); /* call R2, line 132 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- switch (among_var) { /* among, line 133 */
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 149 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (z->c <= z->lb || z->p[z->c - 1] != 0xFE) return 0; /* literal, line 152 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xFE) return 0;
z->c--;
- z->bra = z->c; /* ], line 152 */
- { int ret = slice_from_s(z, 1, s_17); /* <-, line 152 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 1, s_17);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 3, s_18); /* <-, line 156 */
+ { int ret = slice_from_s(z, 3, s_18);
if (ret < 0) return ret;
}
break;
}
- z->B[0] = 1; /* set standard_suffix_removed, line 160 */
+ z->I[3] = 1;
return 1;
}
-static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
+static int r_verb_suffix(struct SN_env * z) {
int among_var;
- { int mlimit1; /* setlimit, line 164 */
- if (z->c < z->I[0]) return 0;
- mlimit1 = z->lb; z->lb = z->I[0];
- z->ket = z->c; /* [, line 165 */
- among_var = find_among_b(z, a_4, 94); /* substring, line 165 */
+ { int mlimit1;
+ if (z->c < z->I[2]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[2];
+ z->ket = z->c;
+ among_var = find_among_b(z, a_4, 94);
if (!(among_var)) { z->lb = mlimit1; return 0; }
- z->bra = z->c; /* ], line 165 */
- switch (among_var) { /* among, line 165 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int m2 = z->l - z->c; (void)m2; /* or, line 200 */
- if (out_grouping_b(z, g_v, 97, 238, 0)) goto lab1; /* non v, line 200 */
+ { int m2 = z->l - z->c; (void)m2;
+ if (out_grouping_b(z, g_v, 97, 238, 0)) goto lab1;
goto lab0;
lab1:
z->c = z->l - m2;
- if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->lb = mlimit1; return 0; } /* literal, line 200 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->lb = mlimit1; return 0; }
z->c--;
}
lab0:
- { int ret = slice_del(z); /* delete, line 200 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 214 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -893,51 +890,51 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_vowel_suffix(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 219 */
- if (!(find_among_b(z, a_5, 5))) return 0; /* substring, line 219 */
- z->bra = z->c; /* ], line 219 */
- { int ret = r_RV(z); /* call RV, line 219 */
+static int r_vowel_suffix(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_5, 5))) return 0;
+ z->bra = z->c;
+ { int ret = r_RV(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 220 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-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 */
+extern int romanian_ISO_8859_2_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ { int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- /* do, line 227 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 227 */
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 228 */
+ z->lb = z->c; z->c = z->l;
- { int m2 = z->l - z->c; (void)m2; /* do, line 229 */
- { int ret = r_step_0(z); /* call step_0, line 229 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_step_0(z);
if (ret < 0) return ret;
}
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 */
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_standard_suffix(z);
if (ret < 0) return ret;
}
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 lab2; /* Boolean test standard_suffix_removed, line 231 */
+ { int m4 = z->l - z->c; (void)m4;
+ { int m5 = z->l - z->c; (void)m5;
+ if (!(z->I[3])) goto lab2;
goto lab1;
lab2:
z->c = z->l - m5;
- { int ret = r_verb_suffix(z); /* call verb_suffix, line 231 */
+ { int ret = r_verb_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -946,15 +943,15 @@ extern int romanian_ISO_8859_2_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_vowel_suffix(z);
if (ret < 0) return ret;
}
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 */
+ { int c7 = z->c;
+ { int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c7;
@@ -962,7 +959,7 @@ extern int romanian_ISO_8859_2_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * romanian_ISO_8859_2_create_env(void) { return SN_create_env(0, 3, 1); }
+extern struct SN_env * romanian_ISO_8859_2_create_env(void) { return SN_create_env(0, 4); }
extern void romanian_ISO_8859_2_close_env(struct SN_env * z) { SN_close_env(z, 0); }
diff --git a/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c b/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c
index eef4b208e8f49..03c13b83f3535 100644
--- a/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c
+++ b/src/backend/snowball/libstemmer/stem_KOI8_R_russian.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -43,15 +43,15 @@ static const symbol s_0_8[6] = { 0xD9, 0xD7, 0xDB, 0xC9, 0xD3, 0xD8 };
static const struct among a_0[9] =
{
-/* 0 */ { 3, s_0_0, -1, 1, 0},
-/* 1 */ { 4, s_0_1, 0, 2, 0},
-/* 2 */ { 4, s_0_2, 0, 2, 0},
-/* 3 */ { 1, s_0_3, -1, 1, 0},
-/* 4 */ { 2, s_0_4, 3, 2, 0},
-/* 5 */ { 2, s_0_5, 3, 2, 0},
-/* 6 */ { 5, s_0_6, -1, 1, 0},
-/* 7 */ { 6, s_0_7, 6, 2, 0},
-/* 8 */ { 6, s_0_8, 6, 2, 0}
+{ 3, s_0_0, -1, 1, 0},
+{ 4, s_0_1, 0, 2, 0},
+{ 4, s_0_2, 0, 2, 0},
+{ 1, s_0_3, -1, 1, 0},
+{ 2, s_0_4, 3, 2, 0},
+{ 2, s_0_5, 3, 2, 0},
+{ 5, s_0_6, -1, 1, 0},
+{ 6, s_0_7, 6, 2, 0},
+{ 6, s_0_8, 6, 2, 0}
};
static const symbol s_1_0[2] = { 0xC0, 0xC0 };
@@ -83,32 +83,32 @@ static const symbol s_1_25[3] = { 0xCF, 0xCD, 0xD5 };
static const struct among a_1[26] =
{
-/* 0 */ { 2, s_1_0, -1, 1, 0},
-/* 1 */ { 2, s_1_1, -1, 1, 0},
-/* 2 */ { 2, s_1_2, -1, 1, 0},
-/* 3 */ { 2, s_1_3, -1, 1, 0},
-/* 4 */ { 2, s_1_4, -1, 1, 0},
-/* 5 */ { 2, s_1_5, -1, 1, 0},
-/* 6 */ { 2, s_1_6, -1, 1, 0},
-/* 7 */ { 2, s_1_7, -1, 1, 0},
-/* 8 */ { 2, s_1_8, -1, 1, 0},
-/* 9 */ { 2, s_1_9, -1, 1, 0},
-/* 10 */ { 3, s_1_10, -1, 1, 0},
-/* 11 */ { 3, s_1_11, -1, 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 */ { 2, s_1_18, -1, 1, 0},
-/* 19 */ { 2, s_1_19, -1, 1, 0},
-/* 20 */ { 3, s_1_20, -1, 1, 0},
-/* 21 */ { 3, s_1_21, -1, 1, 0},
-/* 22 */ { 2, s_1_22, -1, 1, 0},
-/* 23 */ { 2, s_1_23, -1, 1, 0},
-/* 24 */ { 3, s_1_24, -1, 1, 0},
-/* 25 */ { 3, s_1_25, -1, 1, 0}
+{ 2, s_1_0, -1, 1, 0},
+{ 2, s_1_1, -1, 1, 0},
+{ 2, s_1_2, -1, 1, 0},
+{ 2, s_1_3, -1, 1, 0},
+{ 2, s_1_4, -1, 1, 0},
+{ 2, s_1_5, -1, 1, 0},
+{ 2, s_1_6, -1, 1, 0},
+{ 2, s_1_7, -1, 1, 0},
+{ 2, s_1_8, -1, 1, 0},
+{ 2, s_1_9, -1, 1, 0},
+{ 3, s_1_10, -1, 1, 0},
+{ 3, s_1_11, -1, 1, 0},
+{ 2, s_1_12, -1, 1, 0},
+{ 2, s_1_13, -1, 1, 0},
+{ 2, s_1_14, -1, 1, 0},
+{ 2, s_1_15, -1, 1, 0},
+{ 2, s_1_16, -1, 1, 0},
+{ 2, s_1_17, -1, 1, 0},
+{ 2, s_1_18, -1, 1, 0},
+{ 2, s_1_19, -1, 1, 0},
+{ 3, s_1_20, -1, 1, 0},
+{ 3, s_1_21, -1, 1, 0},
+{ 2, s_1_22, -1, 1, 0},
+{ 2, s_1_23, -1, 1, 0},
+{ 3, s_1_24, -1, 1, 0},
+{ 3, s_1_25, -1, 1, 0}
};
static const symbol s_2_0[2] = { 0xC5, 0xCD };
@@ -122,14 +122,14 @@ static const symbol s_2_7[3] = { 0xD5, 0xC0, 0xDD };
static const struct among a_2[8] =
{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 2, s_2_1, -1, 1, 0},
-/* 2 */ { 2, s_2_2, -1, 1, 0},
-/* 3 */ { 3, s_2_3, 2, 2, 0},
-/* 4 */ { 3, s_2_4, 2, 2, 0},
-/* 5 */ { 1, s_2_5, -1, 1, 0},
-/* 6 */ { 2, s_2_6, 5, 1, 0},
-/* 7 */ { 3, s_2_7, 6, 2, 0}
+{ 2, s_2_0, -1, 1, 0},
+{ 2, s_2_1, -1, 1, 0},
+{ 2, s_2_2, -1, 1, 0},
+{ 3, s_2_3, 2, 2, 0},
+{ 3, s_2_4, 2, 2, 0},
+{ 1, s_2_5, -1, 1, 0},
+{ 2, s_2_6, 5, 1, 0},
+{ 3, s_2_7, 6, 2, 0}
};
static const symbol s_3_0[2] = { 0xD3, 0xD1 };
@@ -137,8 +137,8 @@ static const symbol s_3_1[2] = { 0xD3, 0xD8 };
static const struct among a_3[2] =
{
-/* 0 */ { 2, s_3_0, -1, 1, 0},
-/* 1 */ { 2, s_3_1, -1, 1, 0}
+{ 2, s_3_0, -1, 1, 0},
+{ 2, s_3_1, -1, 1, 0}
};
static const symbol s_4_0[1] = { 0xC0 };
@@ -190,52 +190,52 @@ static const symbol s_4_45[3] = { 0xC5, 0xCE, 0xD9 };
static const struct among a_4[46] =
{
-/* 0 */ { 1, s_4_0, -1, 2, 0},
-/* 1 */ { 2, s_4_1, 0, 2, 0},
-/* 2 */ { 2, s_4_2, -1, 1, 0},
-/* 3 */ { 3, s_4_3, 2, 2, 0},
-/* 4 */ { 3, s_4_4, 2, 2, 0},
-/* 5 */ { 2, s_4_5, -1, 1, 0},
-/* 6 */ { 3, s_4_6, 5, 2, 0},
-/* 7 */ { 3, s_4_7, -1, 1, 0},
-/* 8 */ { 3, s_4_8, -1, 2, 0},
-/* 9 */ { 3, s_4_9, -1, 1, 0},
-/* 10 */ { 4, s_4_10, 9, 2, 0},
-/* 11 */ { 4, s_4_11, 9, 2, 0},
-/* 12 */ { 2, s_4_12, -1, 1, 0},
-/* 13 */ { 3, s_4_13, 12, 2, 0},
-/* 14 */ { 3, s_4_14, 12, 2, 0},
-/* 15 */ { 1, s_4_15, -1, 1, 0},
-/* 16 */ { 2, s_4_16, 15, 2, 0},
-/* 17 */ { 2, s_4_17, 15, 2, 0},
-/* 18 */ { 1, s_4_18, -1, 1, 0},
-/* 19 */ { 2, s_4_19, 18, 2, 0},
-/* 20 */ { 2, s_4_20, 18, 2, 0},
-/* 21 */ { 2, s_4_21, -1, 1, 0},
-/* 22 */ { 2, s_4_22, -1, 2, 0},
-/* 23 */ { 2, s_4_23, -1, 2, 0},
-/* 24 */ { 1, s_4_24, -1, 1, 0},
-/* 25 */ { 2, s_4_25, 24, 2, 0},
-/* 26 */ { 2, s_4_26, -1, 1, 0},
-/* 27 */ { 3, s_4_27, 26, 2, 0},
-/* 28 */ { 3, s_4_28, 26, 2, 0},
-/* 29 */ { 2, s_4_29, -1, 1, 0},
-/* 30 */ { 3, s_4_30, 29, 2, 0},
-/* 31 */ { 3, s_4_31, 29, 1, 0},
-/* 32 */ { 2, s_4_32, -1, 1, 0},
-/* 33 */ { 3, s_4_33, 32, 2, 0},
-/* 34 */ { 2, s_4_34, -1, 1, 0},
-/* 35 */ { 3, s_4_35, 34, 2, 0},
-/* 36 */ { 2, s_4_36, -1, 2, 0},
-/* 37 */ { 2, s_4_37, -1, 2, 0},
-/* 38 */ { 2, s_4_38, -1, 2, 0},
-/* 39 */ { 2, s_4_39, -1, 1, 0},
-/* 40 */ { 3, s_4_40, 39, 2, 0},
-/* 41 */ { 3, s_4_41, 39, 2, 0},
-/* 42 */ { 3, s_4_42, -1, 1, 0},
-/* 43 */ { 3, s_4_43, -1, 2, 0},
-/* 44 */ { 2, s_4_44, -1, 1, 0},
-/* 45 */ { 3, s_4_45, 44, 2, 0}
+{ 1, s_4_0, -1, 2, 0},
+{ 2, s_4_1, 0, 2, 0},
+{ 2, s_4_2, -1, 1, 0},
+{ 3, s_4_3, 2, 2, 0},
+{ 3, s_4_4, 2, 2, 0},
+{ 2, s_4_5, -1, 1, 0},
+{ 3, s_4_6, 5, 2, 0},
+{ 3, s_4_7, -1, 1, 0},
+{ 3, s_4_8, -1, 2, 0},
+{ 3, s_4_9, -1, 1, 0},
+{ 4, s_4_10, 9, 2, 0},
+{ 4, s_4_11, 9, 2, 0},
+{ 2, s_4_12, -1, 1, 0},
+{ 3, s_4_13, 12, 2, 0},
+{ 3, s_4_14, 12, 2, 0},
+{ 1, s_4_15, -1, 1, 0},
+{ 2, s_4_16, 15, 2, 0},
+{ 2, s_4_17, 15, 2, 0},
+{ 1, s_4_18, -1, 1, 0},
+{ 2, s_4_19, 18, 2, 0},
+{ 2, s_4_20, 18, 2, 0},
+{ 2, s_4_21, -1, 1, 0},
+{ 2, s_4_22, -1, 2, 0},
+{ 2, s_4_23, -1, 2, 0},
+{ 1, s_4_24, -1, 1, 0},
+{ 2, s_4_25, 24, 2, 0},
+{ 2, s_4_26, -1, 1, 0},
+{ 3, s_4_27, 26, 2, 0},
+{ 3, s_4_28, 26, 2, 0},
+{ 2, s_4_29, -1, 1, 0},
+{ 3, s_4_30, 29, 2, 0},
+{ 3, s_4_31, 29, 1, 0},
+{ 2, s_4_32, -1, 1, 0},
+{ 3, s_4_33, 32, 2, 0},
+{ 2, s_4_34, -1, 1, 0},
+{ 3, s_4_35, 34, 2, 0},
+{ 2, s_4_36, -1, 2, 0},
+{ 2, s_4_37, -1, 2, 0},
+{ 2, s_4_38, -1, 2, 0},
+{ 2, s_4_39, -1, 1, 0},
+{ 3, s_4_40, 39, 2, 0},
+{ 3, s_4_41, 39, 2, 0},
+{ 3, s_4_42, -1, 1, 0},
+{ 3, s_4_43, -1, 2, 0},
+{ 2, s_4_44, -1, 1, 0},
+{ 3, s_4_45, 44, 2, 0}
};
static const symbol s_5_0[1] = { 0xC0 };
@@ -277,42 +277,42 @@ static const symbol s_5_35[1] = { 0xD9 };
static const struct among a_5[36] =
{
-/* 0 */ { 1, s_5_0, -1, 1, 0},
-/* 1 */ { 2, s_5_1, 0, 1, 0},
-/* 2 */ { 2, s_5_2, 0, 1, 0},
-/* 3 */ { 1, s_5_3, -1, 1, 0},
-/* 4 */ { 1, s_5_4, -1, 1, 0},
-/* 5 */ { 2, s_5_5, 4, 1, 0},
-/* 6 */ { 2, s_5_6, 4, 1, 0},
-/* 7 */ { 2, s_5_7, -1, 1, 0},
-/* 8 */ { 2, s_5_8, -1, 1, 0},
-/* 9 */ { 3, s_5_9, 8, 1, 0},
-/* 10 */ { 1, s_5_10, -1, 1, 0},
-/* 11 */ { 2, s_5_11, 10, 1, 0},
-/* 12 */ { 2, s_5_12, 10, 1, 0},
-/* 13 */ { 3, s_5_13, 10, 1, 0},
-/* 14 */ { 3, s_5_14, 10, 1, 0},
-/* 15 */ { 4, s_5_15, 14, 1, 0},
-/* 16 */ { 1, s_5_16, -1, 1, 0},
-/* 17 */ { 2, s_5_17, 16, 1, 0},
-/* 18 */ { 3, s_5_18, 17, 1, 0},
-/* 19 */ { 2, s_5_19, 16, 1, 0},
-/* 20 */ { 2, s_5_20, 16, 1, 0},
-/* 21 */ { 2, s_5_21, -1, 1, 0},
-/* 22 */ { 2, s_5_22, -1, 1, 0},
-/* 23 */ { 3, s_5_23, 22, 1, 0},
-/* 24 */ { 2, s_5_24, -1, 1, 0},
-/* 25 */ { 2, s_5_25, -1, 1, 0},
-/* 26 */ { 3, s_5_26, 25, 1, 0},
-/* 27 */ { 1, s_5_27, -1, 1, 0},
-/* 28 */ { 1, s_5_28, -1, 1, 0},
-/* 29 */ { 2, s_5_29, 28, 1, 0},
-/* 30 */ { 2, s_5_30, 28, 1, 0},
-/* 31 */ { 1, s_5_31, -1, 1, 0},
-/* 32 */ { 2, s_5_32, -1, 1, 0},
-/* 33 */ { 2, s_5_33, -1, 1, 0},
-/* 34 */ { 1, s_5_34, -1, 1, 0},
-/* 35 */ { 1, s_5_35, -1, 1, 0}
+{ 1, s_5_0, -1, 1, 0},
+{ 2, s_5_1, 0, 1, 0},
+{ 2, s_5_2, 0, 1, 0},
+{ 1, s_5_3, -1, 1, 0},
+{ 1, s_5_4, -1, 1, 0},
+{ 2, s_5_5, 4, 1, 0},
+{ 2, s_5_6, 4, 1, 0},
+{ 2, s_5_7, -1, 1, 0},
+{ 2, s_5_8, -1, 1, 0},
+{ 3, s_5_9, 8, 1, 0},
+{ 1, s_5_10, -1, 1, 0},
+{ 2, s_5_11, 10, 1, 0},
+{ 2, s_5_12, 10, 1, 0},
+{ 3, s_5_13, 10, 1, 0},
+{ 3, s_5_14, 10, 1, 0},
+{ 4, s_5_15, 14, 1, 0},
+{ 1, s_5_16, -1, 1, 0},
+{ 2, s_5_17, 16, 1, 0},
+{ 3, s_5_18, 17, 1, 0},
+{ 2, s_5_19, 16, 1, 0},
+{ 2, s_5_20, 16, 1, 0},
+{ 2, s_5_21, -1, 1, 0},
+{ 2, s_5_22, -1, 1, 0},
+{ 3, s_5_23, 22, 1, 0},
+{ 2, s_5_24, -1, 1, 0},
+{ 2, s_5_25, -1, 1, 0},
+{ 3, s_5_26, 25, 1, 0},
+{ 1, s_5_27, -1, 1, 0},
+{ 1, s_5_28, -1, 1, 0},
+{ 2, s_5_29, 28, 1, 0},
+{ 2, s_5_30, 28, 1, 0},
+{ 1, s_5_31, -1, 1, 0},
+{ 2, s_5_32, -1, 1, 0},
+{ 2, s_5_33, -1, 1, 0},
+{ 1, s_5_34, -1, 1, 0},
+{ 1, s_5_35, -1, 1, 0}
};
static const symbol s_6_0[3] = { 0xCF, 0xD3, 0xD4 };
@@ -320,8 +320,8 @@ static const symbol s_6_1[4] = { 0xCF, 0xD3, 0xD4, 0xD8 };
static const struct among a_6[2] =
{
-/* 0 */ { 3, s_6_0, -1, 1, 0},
-/* 1 */ { 4, s_6_1, -1, 1, 0}
+{ 3, s_6_0, -1, 1, 0},
+{ 4, s_6_1, -1, 1, 0}
};
static const symbol s_7_0[4] = { 0xC5, 0xCA, 0xDB, 0xC5 };
@@ -331,78 +331,78 @@ static const symbol s_7_3[3] = { 0xC5, 0xCA, 0xDB };
static const struct among a_7[4] =
{
-/* 0 */ { 4, s_7_0, -1, 1, 0},
-/* 1 */ { 1, s_7_1, -1, 2, 0},
-/* 2 */ { 1, s_7_2, -1, 3, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0}
+{ 4, s_7_0, -1, 1, 0},
+{ 1, s_7_1, -1, 2, 0},
+{ 1, s_7_2, -1, 3, 0},
+{ 3, s_7_3, -1, 1, 0}
};
static const unsigned char g_v[] = { 35, 130, 34, 18 };
static const symbol s_0[] = { 0xC5 };
-static int r_mark_regions(struct SN_env * z) { /* forwardmode */
- z->I[0] = z->l; /* $pV = , line 61 */
- z->I[1] = z->l; /* $p2 = , line 62 */
- { int c1 = z->c; /* do, line 63 */
- { /* gopast */ /* grouping v, line 64 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ {
int ret = out_grouping(z, g_v, 192, 220, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- z->I[0] = z->c; /* setmark pV, line 64 */
- { /* gopast */ /* non v, line 64 */
+ z->I[1] = z->c;
+ {
int ret = in_grouping(z, g_v, 192, 220, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- { /* gopast */ /* grouping v, line 65 */
+ {
int ret = out_grouping(z, g_v, 192, 220, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- { /* gopast */ /* non v, line 65 */
+ {
int ret = in_grouping(z, g_v, 192, 220, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
- z->I[1] = z->c; /* setmark p2, line 65 */
+ z->I[0] = z->c;
lab0:
z->c = c1;
}
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $( <= ), line 71 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_perfective_gerund(struct SN_env * z) { /* backwardmode */
+static int r_perfective_gerund(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 74 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((25166336 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 74 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((25166336 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_0, 9);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 74 */
- switch (among_var) { /* among, line 74 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int m1 = z->l - z->c; (void)m1; /* or, line 78 */
- if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab1; /* literal, line 78 */
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) return 0; /* literal, line 78 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) return 0;
z->c--;
}
lab0:
- { int ret = slice_del(z); /* delete, line 78 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 85 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -410,46 +410,46 @@ static int r_perfective_gerund(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_adjective(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 90 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((2271009 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 90 */
+static int r_adjective(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((2271009 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_1, 26))) return 0;
- z->bra = z->c; /* ], line 90 */
- { int ret = slice_del(z); /* delete, line 99 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_adjectival(struct SN_env * z) { /* backwardmode */
+static int r_adjectival(struct SN_env * z) {
int among_var;
- { int ret = r_adjective(z); /* call adjective, line 104 */
+ { int ret = r_adjective(z);
if (ret <= 0) return ret;
}
- { int m1 = z->l - z->c; (void)m1; /* try, line 111 */
- z->ket = z->c; /* [, line 112 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((671113216 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m1; goto lab0; } /* substring, line 112 */
+ { int m1 = z->l - z->c; (void)m1;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((671113216 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m1; goto lab0; }
among_var = find_among_b(z, a_2, 8);
if (!(among_var)) { z->c = z->l - m1; goto lab0; }
- z->bra = z->c; /* ], line 112 */
- switch (among_var) { /* among, line 112 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int m2 = z->l - z->c; (void)m2; /* or, line 117 */
- if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab2; /* literal, line 117 */
+ { int m2 = z->l - z->c; (void)m2;
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab2;
z->c--;
goto lab1;
lab2:
z->c = z->l - m2;
- if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) { z->c = z->l - m1; goto lab0; } /* literal, line 117 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) { z->c = z->l - m1; goto lab0; }
z->c--;
}
lab1:
- { int ret = slice_del(z); /* delete, line 117 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 124 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -460,42 +460,42 @@ static int r_adjectival(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_reflexive(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 131 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 209 && z->p[z->c - 1] != 216)) return 0; /* substring, line 131 */
+static int r_reflexive(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 209 && z->p[z->c - 1] != 216)) return 0;
if (!(find_among_b(z, a_3, 2))) return 0;
- z->bra = z->c; /* ], line 131 */
- { int ret = slice_del(z); /* delete, line 134 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_verb(struct SN_env * z) { /* backwardmode */
+static int r_verb(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 139 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((51443235 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 139 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((51443235 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_4, 46);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 139 */
- switch (among_var) { /* among, line 139 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int m1 = z->l - z->c; (void)m1; /* or, line 145 */
- if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab1; /* literal, line 145 */
+ { int m1 = z->l - z->c; (void)m1;
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
- if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) return 0; /* literal, line 145 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) return 0;
z->c--;
}
lab0:
- { int ret = slice_del(z); /* delete, line 145 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_del(z); /* delete, line 153 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -503,62 +503,62 @@ static int r_verb(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_noun(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 162 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((60991267 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 162 */
+static int r_noun(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((60991267 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_5, 36))) return 0;
- z->bra = z->c; /* ], line 162 */
- { int ret = slice_del(z); /* delete, line 169 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_derivational(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 178 */
- if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 212 && z->p[z->c - 1] != 216)) return 0; /* substring, line 178 */
+static int r_derivational(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 212 && z->p[z->c - 1] != 216)) return 0;
if (!(find_among_b(z, a_6, 2))) return 0;
- z->bra = z->c; /* ], line 178 */
- { int ret = r_R2(z); /* call R2, line 178 */
+ z->bra = z->c;
+ { int ret = r_R2(z);
if (ret <= 0) return ret;
}
- { int ret = slice_del(z); /* delete, line 181 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_tidy_up(struct SN_env * z) { /* backwardmode */
+static int r_tidy_up(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 186 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((151011360 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 186 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((151011360 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_7, 4);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 186 */
- switch (among_var) { /* among, line 186 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 190 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
- z->ket = z->c; /* [, line 191 */
- if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0; /* literal, line 191 */
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0;
z->c--;
- z->bra = z->c; /* ], line 191 */
- if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0; /* literal, line 191 */
+ z->bra = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0;
z->c--;
- { int ret = slice_del(z); /* delete, line 191 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0; /* literal, line 194 */
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0;
z->c--;
- { int ret = slice_del(z); /* delete, line 194 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_del(z); /* delete, line 196 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -566,25 +566,24 @@ static int r_tidy_up(struct SN_env * z) { /* backwardmode */
return 1;
}
-extern int russian_KOI8_R_stem(struct SN_env * z) { /* forwardmode */
- { int c1 = z->c; /* do, line 205 */
-/* repeat, line 205 */
-
- while(1) { int c2 = z->c;
- while(1) { /* goto, line 205 */
+extern int russian_KOI8_R_stem(struct SN_env * z) {
+ { int c1 = z->c;
+ while(1) {
+ int c2 = z->c;
+ while(1) {
int c3 = z->c;
- z->bra = z->c; /* [, line 205 */
- if (z->c == z->l || z->p[z->c] != 0xA3) goto lab2; /* literal, line 205 */
+ z->bra = z->c;
+ if (z->c == z->l || z->p[z->c] != 0xA3) goto lab2;
z->c++;
- z->ket = z->c; /* ], line 205 */
+ z->ket = z->c;
z->c = c3;
break;
lab2:
z->c = c3;
if (z->c >= z->l) goto lab1;
- z->c++; /* goto, line 205 */
+ z->c++;
}
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 205 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
continue;
@@ -594,49 +593,49 @@ extern int russian_KOI8_R_stem(struct SN_env * z) { /* forwardmode */
}
z->c = c1;
}
- /* do, line 207 */
- { int ret = r_mark_regions(z); /* call mark_regions, line 207 */
+
+ { int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 208 */
+ z->lb = z->c; z->c = z->l;
- { int mlimit4; /* setlimit, line 208 */
- if (z->c < z->I[0]) return 0;
- mlimit4 = z->lb; z->lb = z->I[0];
- { 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 */
+ { int mlimit4;
+ if (z->c < z->I[1]) return 0;
+ mlimit4 = z->lb; z->lb = z->I[1];
+ { int m5 = z->l - z->c; (void)m5;
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_perfective_gerund(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
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 */
+ { int m7 = z->l - z->c; (void)m7;
+ { int ret = r_reflexive(z);
if (ret == 0) { z->c = z->l - m7; goto lab6; }
if (ret < 0) return ret;
}
lab6:
;
}
- { int m8 = z->l - z->c; (void)m8; /* or, line 212 */
- { int ret = r_adjectival(z); /* call adjectival, line 212 */
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_adjectival(z);
if (ret == 0) goto lab8;
if (ret < 0) return ret;
}
goto lab7;
lab8:
z->c = z->l - m8;
- { int ret = r_verb(z); /* call verb, line 212 */
+ { int ret = r_verb(z);
if (ret == 0) goto lab9;
if (ret < 0) return ret;
}
goto lab7;
lab9:
z->c = z->l - m8;
- { int ret = r_noun(z); /* call noun, line 212 */
+ { int ret = r_noun(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
@@ -648,25 +647,25 @@ extern int russian_KOI8_R_stem(struct SN_env * z) { /* forwardmode */
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 lab10; } /* literal, line 215 */
+ { int m9 = z->l - z->c; (void)m9;
+ z->ket = z->c;
+ if (z->c <= z->lb || z->p[z->c - 1] != 0xC9) { z->c = z->l - m9; goto lab10; }
z->c--;
- z->bra = z->c; /* ], line 215 */
- { int ret = slice_del(z); /* delete, line 215 */
+ z->bra = z->c;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
lab10:
;
}
- { int m10 = z->l - z->c; (void)m10; /* do, line 218 */
- { int ret = r_derivational(z); /* call derivational, line 218 */
+ { int m10 = z->l - z->c; (void)m10;
+ { int ret = r_derivational(z);
if (ret < 0) return ret;
}
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 */
+ { int m11 = z->l - z->c; (void)m11;
+ { int ret = r_tidy_up(z);
if (ret < 0) return ret;
}
z->c = z->l - m11;
@@ -677,7 +676,7 @@ extern int russian_KOI8_R_stem(struct SN_env * z) { /* forwardmode */
return 1;
}
-extern struct SN_env * russian_KOI8_R_create_env(void) { return SN_create_env(0, 2, 0); }
+extern struct SN_env * russian_KOI8_R_create_env(void) { return SN_create_env(0, 2); }
extern void russian_KOI8_R_close_env(struct SN_env * z) { SN_close_env(z, 0); }
diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c b/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c
index 701ae2e810e41..52045628714cb 100644
--- a/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c
+++ b/src/backend/snowball/libstemmer/stem_UTF_8_arabic.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -189,150 +189,150 @@ static const symbol s_0_143[3] = { 0xEF, 0xBB, 0xBC };
static const struct among a_0[144] =
{
-/* 0 */ { 2, s_0_0, -1, 1, 0},
-/* 1 */ { 2, s_0_1, -1, 1, 0},
-/* 2 */ { 2, s_0_2, -1, 1, 0},
-/* 3 */ { 2, s_0_3, -1, 1, 0},
-/* 4 */ { 2, s_0_4, -1, 1, 0},
-/* 5 */ { 2, s_0_5, -1, 1, 0},
-/* 6 */ { 2, s_0_6, -1, 1, 0},
-/* 7 */ { 2, s_0_7, -1, 1, 0},
-/* 8 */ { 2, s_0_8, -1, 1, 0},
-/* 9 */ { 2, s_0_9, -1, 2, 0},
-/* 10 */ { 2, s_0_10, -1, 3, 0},
-/* 11 */ { 2, s_0_11, -1, 4, 0},
-/* 12 */ { 2, s_0_12, -1, 5, 0},
-/* 13 */ { 2, s_0_13, -1, 6, 0},
-/* 14 */ { 2, s_0_14, -1, 7, 0},
-/* 15 */ { 2, s_0_15, -1, 8, 0},
-/* 16 */ { 2, s_0_16, -1, 9, 0},
-/* 17 */ { 2, s_0_17, -1, 10, 0},
-/* 18 */ { 2, s_0_18, -1, 11, 0},
-/* 19 */ { 3, s_0_19, -1, 12, 0},
-/* 20 */ { 3, s_0_20, -1, 16, 0},
-/* 21 */ { 3, s_0_21, -1, 16, 0},
-/* 22 */ { 3, s_0_22, -1, 13, 0},
-/* 23 */ { 3, s_0_23, -1, 13, 0},
-/* 24 */ { 3, s_0_24, -1, 17, 0},
-/* 25 */ { 3, s_0_25, -1, 17, 0},
-/* 26 */ { 3, s_0_26, -1, 14, 0},
-/* 27 */ { 3, s_0_27, -1, 14, 0},
-/* 28 */ { 3, s_0_28, -1, 15, 0},
-/* 29 */ { 3, s_0_29, -1, 15, 0},
-/* 30 */ { 3, s_0_30, -1, 15, 0},
-/* 31 */ { 3, s_0_31, -1, 15, 0},
-/* 32 */ { 3, s_0_32, -1, 18, 0},
-/* 33 */ { 3, s_0_33, -1, 18, 0},
-/* 34 */ { 3, s_0_34, -1, 19, 0},
-/* 35 */ { 3, s_0_35, -1, 19, 0},
-/* 36 */ { 3, s_0_36, -1, 19, 0},
-/* 37 */ { 3, s_0_37, -1, 19, 0},
-/* 38 */ { 3, s_0_38, -1, 20, 0},
-/* 39 */ { 3, s_0_39, -1, 20, 0},
-/* 40 */ { 3, s_0_40, -1, 21, 0},
-/* 41 */ { 3, s_0_41, -1, 21, 0},
-/* 42 */ { 3, s_0_42, -1, 21, 0},
-/* 43 */ { 3, s_0_43, -1, 21, 0},
-/* 44 */ { 3, s_0_44, -1, 22, 0},
-/* 45 */ { 3, s_0_45, -1, 22, 0},
-/* 46 */ { 3, s_0_46, -1, 22, 0},
-/* 47 */ { 3, s_0_47, -1, 22, 0},
-/* 48 */ { 3, s_0_48, -1, 23, 0},
-/* 49 */ { 3, s_0_49, -1, 23, 0},
-/* 50 */ { 3, s_0_50, -1, 23, 0},
-/* 51 */ { 3, s_0_51, -1, 23, 0},
-/* 52 */ { 3, s_0_52, -1, 24, 0},
-/* 53 */ { 3, s_0_53, -1, 24, 0},
-/* 54 */ { 3, s_0_54, -1, 24, 0},
-/* 55 */ { 3, s_0_55, -1, 24, 0},
-/* 56 */ { 3, s_0_56, -1, 25, 0},
-/* 57 */ { 3, s_0_57, -1, 25, 0},
-/* 58 */ { 3, s_0_58, -1, 25, 0},
-/* 59 */ { 3, s_0_59, -1, 25, 0},
-/* 60 */ { 3, s_0_60, -1, 26, 0},
-/* 61 */ { 3, s_0_61, -1, 26, 0},
-/* 62 */ { 3, s_0_62, -1, 27, 0},
-/* 63 */ { 3, s_0_63, -1, 27, 0},
-/* 64 */ { 3, s_0_64, -1, 28, 0},
-/* 65 */ { 3, s_0_65, -1, 28, 0},
-/* 66 */ { 3, s_0_66, -1, 29, 0},
-/* 67 */ { 3, s_0_67, -1, 29, 0},
-/* 68 */ { 3, s_0_68, -1, 30, 0},
-/* 69 */ { 3, s_0_69, -1, 30, 0},
-/* 70 */ { 3, s_0_70, -1, 30, 0},
-/* 71 */ { 3, s_0_71, -1, 30, 0},
-/* 72 */ { 3, s_0_72, -1, 31, 0},
-/* 73 */ { 3, s_0_73, -1, 31, 0},
-/* 74 */ { 3, s_0_74, -1, 31, 0},
-/* 75 */ { 3, s_0_75, -1, 31, 0},
-/* 76 */ { 3, s_0_76, -1, 32, 0},
-/* 77 */ { 3, s_0_77, -1, 32, 0},
-/* 78 */ { 3, s_0_78, -1, 32, 0},
-/* 79 */ { 3, s_0_79, -1, 32, 0},
-/* 80 */ { 3, s_0_80, -1, 33, 0},
-/* 81 */ { 3, s_0_81, -1, 33, 0},
-/* 82 */ { 3, s_0_82, -1, 33, 0},
-/* 83 */ { 3, s_0_83, -1, 33, 0},
-/* 84 */ { 3, s_0_84, -1, 34, 0},
-/* 85 */ { 3, s_0_85, -1, 34, 0},
-/* 86 */ { 3, s_0_86, -1, 34, 0},
-/* 87 */ { 3, s_0_87, -1, 34, 0},
-/* 88 */ { 3, s_0_88, -1, 35, 0},
-/* 89 */ { 3, s_0_89, -1, 35, 0},
-/* 90 */ { 3, s_0_90, -1, 35, 0},
-/* 91 */ { 3, s_0_91, -1, 35, 0},
-/* 92 */ { 3, s_0_92, -1, 36, 0},
-/* 93 */ { 3, s_0_93, -1, 36, 0},
-/* 94 */ { 3, s_0_94, -1, 36, 0},
-/* 95 */ { 3, s_0_95, -1, 36, 0},
-/* 96 */ { 3, s_0_96, -1, 37, 0},
-/* 97 */ { 3, s_0_97, -1, 37, 0},
-/* 98 */ { 3, s_0_98, -1, 37, 0},
-/* 99 */ { 3, s_0_99, -1, 37, 0},
-/*100 */ { 3, s_0_100, -1, 38, 0},
-/*101 */ { 3, s_0_101, -1, 38, 0},
-/*102 */ { 3, s_0_102, -1, 38, 0},
-/*103 */ { 3, s_0_103, -1, 38, 0},
-/*104 */ { 3, s_0_104, -1, 39, 0},
-/*105 */ { 3, s_0_105, -1, 39, 0},
-/*106 */ { 3, s_0_106, -1, 39, 0},
-/*107 */ { 3, s_0_107, -1, 39, 0},
-/*108 */ { 3, s_0_108, -1, 40, 0},
-/*109 */ { 3, s_0_109, -1, 40, 0},
-/*110 */ { 3, s_0_110, -1, 40, 0},
-/*111 */ { 3, s_0_111, -1, 40, 0},
-/*112 */ { 3, s_0_112, -1, 41, 0},
-/*113 */ { 3, s_0_113, -1, 41, 0},
-/*114 */ { 3, s_0_114, -1, 41, 0},
-/*115 */ { 3, s_0_115, -1, 41, 0},
-/*116 */ { 3, s_0_116, -1, 42, 0},
-/*117 */ { 3, s_0_117, -1, 42, 0},
-/*118 */ { 3, s_0_118, -1, 42, 0},
-/*119 */ { 3, s_0_119, -1, 42, 0},
-/*120 */ { 3, s_0_120, -1, 43, 0},
-/*121 */ { 3, s_0_121, -1, 43, 0},
-/*122 */ { 3, s_0_122, -1, 43, 0},
-/*123 */ { 3, s_0_123, -1, 43, 0},
-/*124 */ { 3, s_0_124, -1, 44, 0},
-/*125 */ { 3, s_0_125, -1, 44, 0},
-/*126 */ { 3, s_0_126, -1, 44, 0},
-/*127 */ { 3, s_0_127, -1, 44, 0},
-/*128 */ { 3, s_0_128, -1, 45, 0},
-/*129 */ { 3, s_0_129, -1, 45, 0},
-/*130 */ { 3, s_0_130, -1, 46, 0},
-/*131 */ { 3, s_0_131, -1, 46, 0},
-/*132 */ { 3, s_0_132, -1, 47, 0},
-/*133 */ { 3, s_0_133, -1, 47, 0},
-/*134 */ { 3, s_0_134, -1, 47, 0},
-/*135 */ { 3, s_0_135, -1, 47, 0},
-/*136 */ { 3, s_0_136, -1, 51, 0},
-/*137 */ { 3, s_0_137, -1, 51, 0},
-/*138 */ { 3, s_0_138, -1, 49, 0},
-/*139 */ { 3, s_0_139, -1, 49, 0},
-/*140 */ { 3, s_0_140, -1, 50, 0},
-/*141 */ { 3, s_0_141, -1, 50, 0},
-/*142 */ { 3, s_0_142, -1, 48, 0},
-/*143 */ { 3, s_0_143, -1, 48, 0}
+{ 2, s_0_0, -1, 1, 0},
+{ 2, s_0_1, -1, 1, 0},
+{ 2, s_0_2, -1, 1, 0},
+{ 2, s_0_3, -1, 1, 0},
+{ 2, s_0_4, -1, 1, 0},
+{ 2, s_0_5, -1, 1, 0},
+{ 2, s_0_6, -1, 1, 0},
+{ 2, s_0_7, -1, 1, 0},
+{ 2, s_0_8, -1, 1, 0},
+{ 2, s_0_9, -1, 2, 0},
+{ 2, s_0_10, -1, 3, 0},
+{ 2, s_0_11, -1, 4, 0},
+{ 2, s_0_12, -1, 5, 0},
+{ 2, s_0_13, -1, 6, 0},
+{ 2, s_0_14, -1, 7, 0},
+{ 2, s_0_15, -1, 8, 0},
+{ 2, s_0_16, -1, 9, 0},
+{ 2, s_0_17, -1, 10, 0},
+{ 2, s_0_18, -1, 11, 0},
+{ 3, s_0_19, -1, 12, 0},
+{ 3, s_0_20, -1, 16, 0},
+{ 3, s_0_21, -1, 16, 0},
+{ 3, s_0_22, -1, 13, 0},
+{ 3, s_0_23, -1, 13, 0},
+{ 3, s_0_24, -1, 17, 0},
+{ 3, s_0_25, -1, 17, 0},
+{ 3, s_0_26, -1, 14, 0},
+{ 3, s_0_27, -1, 14, 0},
+{ 3, s_0_28, -1, 15, 0},
+{ 3, s_0_29, -1, 15, 0},
+{ 3, s_0_30, -1, 15, 0},
+{ 3, s_0_31, -1, 15, 0},
+{ 3, s_0_32, -1, 18, 0},
+{ 3, s_0_33, -1, 18, 0},
+{ 3, s_0_34, -1, 19, 0},
+{ 3, s_0_35, -1, 19, 0},
+{ 3, s_0_36, -1, 19, 0},
+{ 3, s_0_37, -1, 19, 0},
+{ 3, s_0_38, -1, 20, 0},
+{ 3, s_0_39, -1, 20, 0},
+{ 3, s_0_40, -1, 21, 0},
+{ 3, s_0_41, -1, 21, 0},
+{ 3, s_0_42, -1, 21, 0},
+{ 3, s_0_43, -1, 21, 0},
+{ 3, s_0_44, -1, 22, 0},
+{ 3, s_0_45, -1, 22, 0},
+{ 3, s_0_46, -1, 22, 0},
+{ 3, s_0_47, -1, 22, 0},
+{ 3, s_0_48, -1, 23, 0},
+{ 3, s_0_49, -1, 23, 0},
+{ 3, s_0_50, -1, 23, 0},
+{ 3, s_0_51, -1, 23, 0},
+{ 3, s_0_52, -1, 24, 0},
+{ 3, s_0_53, -1, 24, 0},
+{ 3, s_0_54, -1, 24, 0},
+{ 3, s_0_55, -1, 24, 0},
+{ 3, s_0_56, -1, 25, 0},
+{ 3, s_0_57, -1, 25, 0},
+{ 3, s_0_58, -1, 25, 0},
+{ 3, s_0_59, -1, 25, 0},
+{ 3, s_0_60, -1, 26, 0},
+{ 3, s_0_61, -1, 26, 0},
+{ 3, s_0_62, -1, 27, 0},
+{ 3, s_0_63, -1, 27, 0},
+{ 3, s_0_64, -1, 28, 0},
+{ 3, s_0_65, -1, 28, 0},
+{ 3, s_0_66, -1, 29, 0},
+{ 3, s_0_67, -1, 29, 0},
+{ 3, s_0_68, -1, 30, 0},
+{ 3, s_0_69, -1, 30, 0},
+{ 3, s_0_70, -1, 30, 0},
+{ 3, s_0_71, -1, 30, 0},
+{ 3, s_0_72, -1, 31, 0},
+{ 3, s_0_73, -1, 31, 0},
+{ 3, s_0_74, -1, 31, 0},
+{ 3, s_0_75, -1, 31, 0},
+{ 3, s_0_76, -1, 32, 0},
+{ 3, s_0_77, -1, 32, 0},
+{ 3, s_0_78, -1, 32, 0},
+{ 3, s_0_79, -1, 32, 0},
+{ 3, s_0_80, -1, 33, 0},
+{ 3, s_0_81, -1, 33, 0},
+{ 3, s_0_82, -1, 33, 0},
+{ 3, s_0_83, -1, 33, 0},
+{ 3, s_0_84, -1, 34, 0},
+{ 3, s_0_85, -1, 34, 0},
+{ 3, s_0_86, -1, 34, 0},
+{ 3, s_0_87, -1, 34, 0},
+{ 3, s_0_88, -1, 35, 0},
+{ 3, s_0_89, -1, 35, 0},
+{ 3, s_0_90, -1, 35, 0},
+{ 3, s_0_91, -1, 35, 0},
+{ 3, s_0_92, -1, 36, 0},
+{ 3, s_0_93, -1, 36, 0},
+{ 3, s_0_94, -1, 36, 0},
+{ 3, s_0_95, -1, 36, 0},
+{ 3, s_0_96, -1, 37, 0},
+{ 3, s_0_97, -1, 37, 0},
+{ 3, s_0_98, -1, 37, 0},
+{ 3, s_0_99, -1, 37, 0},
+{ 3, s_0_100, -1, 38, 0},
+{ 3, s_0_101, -1, 38, 0},
+{ 3, s_0_102, -1, 38, 0},
+{ 3, s_0_103, -1, 38, 0},
+{ 3, s_0_104, -1, 39, 0},
+{ 3, s_0_105, -1, 39, 0},
+{ 3, s_0_106, -1, 39, 0},
+{ 3, s_0_107, -1, 39, 0},
+{ 3, s_0_108, -1, 40, 0},
+{ 3, s_0_109, -1, 40, 0},
+{ 3, s_0_110, -1, 40, 0},
+{ 3, s_0_111, -1, 40, 0},
+{ 3, s_0_112, -1, 41, 0},
+{ 3, s_0_113, -1, 41, 0},
+{ 3, s_0_114, -1, 41, 0},
+{ 3, s_0_115, -1, 41, 0},
+{ 3, s_0_116, -1, 42, 0},
+{ 3, s_0_117, -1, 42, 0},
+{ 3, s_0_118, -1, 42, 0},
+{ 3, s_0_119, -1, 42, 0},
+{ 3, s_0_120, -1, 43, 0},
+{ 3, s_0_121, -1, 43, 0},
+{ 3, s_0_122, -1, 43, 0},
+{ 3, s_0_123, -1, 43, 0},
+{ 3, s_0_124, -1, 44, 0},
+{ 3, s_0_125, -1, 44, 0},
+{ 3, s_0_126, -1, 44, 0},
+{ 3, s_0_127, -1, 44, 0},
+{ 3, s_0_128, -1, 45, 0},
+{ 3, s_0_129, -1, 45, 0},
+{ 3, s_0_130, -1, 46, 0},
+{ 3, s_0_131, -1, 46, 0},
+{ 3, s_0_132, -1, 47, 0},
+{ 3, s_0_133, -1, 47, 0},
+{ 3, s_0_134, -1, 47, 0},
+{ 3, s_0_135, -1, 47, 0},
+{ 3, s_0_136, -1, 51, 0},
+{ 3, s_0_137, -1, 51, 0},
+{ 3, s_0_138, -1, 49, 0},
+{ 3, s_0_139, -1, 49, 0},
+{ 3, s_0_140, -1, 50, 0},
+{ 3, s_0_141, -1, 50, 0},
+{ 3, s_0_142, -1, 48, 0},
+{ 3, s_0_143, -1, 48, 0}
};
static const symbol s_1_0[2] = { 0xD8, 0xA2 };
@@ -343,11 +343,11 @@ static const symbol s_1_4[2] = { 0xD8, 0xA6 };
static const struct among a_1[5] =
{
-/* 0 */ { 2, s_1_0, -1, 1, 0},
-/* 1 */ { 2, s_1_1, -1, 1, 0},
-/* 2 */ { 2, s_1_2, -1, 1, 0},
-/* 3 */ { 2, s_1_3, -1, 1, 0},
-/* 4 */ { 2, s_1_4, -1, 1, 0}
+{ 2, s_1_0, -1, 1, 0},
+{ 2, s_1_1, -1, 1, 0},
+{ 2, s_1_2, -1, 1, 0},
+{ 2, s_1_3, -1, 1, 0},
+{ 2, s_1_4, -1, 1, 0}
};
static const symbol s_2_0[2] = { 0xD8, 0xA2 };
@@ -358,11 +358,11 @@ static const symbol s_2_4[2] = { 0xD8, 0xA6 };
static const struct among a_2[5] =
{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 2, s_2_1, -1, 1, 0},
-/* 2 */ { 2, s_2_2, -1, 2, 0},
-/* 3 */ { 2, s_2_3, -1, 1, 0},
-/* 4 */ { 2, s_2_4, -1, 3, 0}
+{ 2, s_2_0, -1, 1, 0},
+{ 2, s_2_1, -1, 1, 0},
+{ 2, s_2_2, -1, 2, 0},
+{ 2, s_2_3, -1, 1, 0},
+{ 2, s_2_4, -1, 3, 0}
};
static const symbol s_3_0[4] = { 0xD8, 0xA7, 0xD9, 0x84 };
@@ -372,10 +372,10 @@ static const symbol s_3_3[4] = { 0xD9, 0x84, 0xD9, 0x84 };
static const struct among a_3[4] =
{
-/* 0 */ { 4, s_3_0, -1, 2, 0},
-/* 1 */ { 6, s_3_1, -1, 1, 0},
-/* 2 */ { 6, s_3_2, -1, 1, 0},
-/* 3 */ { 4, s_3_3, -1, 2, 0}
+{ 4, s_3_0, -1, 2, 0},
+{ 6, s_3_1, -1, 1, 0},
+{ 6, s_3_2, -1, 1, 0},
+{ 4, s_3_3, -1, 2, 0}
};
static const symbol s_4_0[4] = { 0xD8, 0xA3, 0xD8, 0xA2 };
@@ -386,11 +386,11 @@ static const symbol s_4_4[4] = { 0xD8, 0xA3, 0xD8, 0xA7 };
static const struct among a_4[5] =
{
-/* 0 */ { 4, s_4_0, -1, 2, 0},
-/* 1 */ { 4, s_4_1, -1, 1, 0},
-/* 2 */ { 4, s_4_2, -1, 1, 0},
-/* 3 */ { 4, s_4_3, -1, 4, 0},
-/* 4 */ { 4, s_4_4, -1, 3, 0}
+{ 4, s_4_0, -1, 2, 0},
+{ 4, s_4_1, -1, 1, 0},
+{ 4, s_4_2, -1, 1, 0},
+{ 4, s_4_3, -1, 4, 0},
+{ 4, s_4_4, -1, 3, 0}
};
static const symbol s_5_0[2] = { 0xD9, 0x81 };
@@ -398,8 +398,8 @@ static const symbol s_5_1[2] = { 0xD9, 0x88 };
static const struct among a_5[2] =
{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 2, s_5_1, -1, 1, 0}
+{ 2, s_5_0, -1, 1, 0},
+{ 2, s_5_1, -1, 1, 0}
};
static const symbol s_6_0[4] = { 0xD8, 0xA7, 0xD9, 0x84 };
@@ -409,10 +409,10 @@ static const symbol s_6_3[4] = { 0xD9, 0x84, 0xD9, 0x84 };
static const struct among a_6[4] =
{
-/* 0 */ { 4, s_6_0, -1, 2, 0},
-/* 1 */ { 6, s_6_1, -1, 1, 0},
-/* 2 */ { 6, s_6_2, -1, 1, 0},
-/* 3 */ { 4, s_6_3, -1, 2, 0}
+{ 4, s_6_0, -1, 2, 0},
+{ 6, s_6_1, -1, 1, 0},
+{ 6, s_6_2, -1, 1, 0},
+{ 4, s_6_3, -1, 2, 0}
};
static const symbol s_7_0[2] = { 0xD8, 0xA8 };
@@ -421,9 +421,9 @@ static const symbol s_7_2[4] = { 0xD9, 0x83, 0xD9, 0x83 };
static const struct among a_7[3] =
{
-/* 0 */ { 2, s_7_0, -1, 1, 0},
-/* 1 */ { 4, s_7_1, 0, 2, 0},
-/* 2 */ { 4, s_7_2, -1, 3, 0}
+{ 2, s_7_0, -1, 1, 0},
+{ 4, s_7_1, 0, 2, 0},
+{ 4, s_7_2, -1, 3, 0}
};
static const symbol s_8_0[4] = { 0xD8, 0xB3, 0xD8, 0xA3 };
@@ -433,10 +433,10 @@ static const symbol s_8_3[4] = { 0xD8, 0xB3, 0xD9, 0x8A };
static const struct among a_8[4] =
{
-/* 0 */ { 4, s_8_0, -1, 4, 0},
-/* 1 */ { 4, s_8_1, -1, 2, 0},
-/* 2 */ { 4, s_8_2, -1, 3, 0},
-/* 3 */ { 4, s_8_3, -1, 1, 0}
+{ 4, s_8_0, -1, 4, 0},
+{ 4, s_8_1, -1, 2, 0},
+{ 4, s_8_2, -1, 3, 0},
+{ 4, s_8_3, -1, 1, 0}
};
static const symbol s_9_0[6] = { 0xD8, 0xAA, 0xD8, 0xB3, 0xD8, 0xAA };
@@ -445,9 +445,9 @@ static const symbol s_9_2[6] = { 0xD9, 0x8A, 0xD8, 0xB3, 0xD8, 0xAA };
static const struct among a_9[3] =
{
-/* 0 */ { 6, s_9_0, -1, 1, 0},
-/* 1 */ { 6, s_9_1, -1, 1, 0},
-/* 2 */ { 6, s_9_2, -1, 1, 0}
+{ 6, s_9_0, -1, 1, 0},
+{ 6, s_9_1, -1, 1, 0},
+{ 6, s_9_2, -1, 1, 0}
};
static const symbol s_10_0[2] = { 0xD9, 0x83 };
@@ -463,23 +463,23 @@ static const symbol s_10_9[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
static const struct among a_10[10] =
{
-/* 0 */ { 2, s_10_0, -1, 1, 0},
-/* 1 */ { 4, s_10_1, -1, 2, 0},
-/* 2 */ { 4, s_10_2, -1, 2, 0},
-/* 3 */ { 4, s_10_3, -1, 2, 0},
-/* 4 */ { 2, s_10_4, -1, 1, 0},
-/* 5 */ { 2, s_10_5, -1, 1, 0},
-/* 6 */ { 6, s_10_6, -1, 3, 0},
-/* 7 */ { 6, s_10_7, -1, 3, 0},
-/* 8 */ { 4, s_10_8, -1, 2, 0},
-/* 9 */ { 4, s_10_9, -1, 2, 0}
+{ 2, s_10_0, -1, 1, 0},
+{ 4, s_10_1, -1, 2, 0},
+{ 4, s_10_2, -1, 2, 0},
+{ 4, s_10_3, -1, 2, 0},
+{ 2, s_10_4, -1, 1, 0},
+{ 2, s_10_5, -1, 1, 0},
+{ 6, s_10_6, -1, 3, 0},
+{ 6, s_10_7, -1, 3, 0},
+{ 4, s_10_8, -1, 2, 0},
+{ 4, s_10_9, -1, 2, 0}
};
static const symbol s_11_0[2] = { 0xD9, 0x86 };
static const struct among a_11[1] =
{
-/* 0 */ { 2, s_11_0, -1, 1, 0}
+{ 2, s_11_0, -1, 1, 0}
};
static const symbol s_12_0[2] = { 0xD9, 0x88 };
@@ -488,37 +488,37 @@ static const symbol s_12_2[2] = { 0xD8, 0xA7 };
static const struct among a_12[3] =
{
-/* 0 */ { 2, s_12_0, -1, 1, 0},
-/* 1 */ { 2, s_12_1, -1, 1, 0},
-/* 2 */ { 2, s_12_2, -1, 1, 0}
+{ 2, s_12_0, -1, 1, 0},
+{ 2, s_12_1, -1, 1, 0},
+{ 2, s_12_2, -1, 1, 0}
};
static const symbol s_13_0[4] = { 0xD8, 0xA7, 0xD8, 0xAA };
static const struct among a_13[1] =
{
-/* 0 */ { 4, s_13_0, -1, 1, 0}
+{ 4, s_13_0, -1, 1, 0}
};
static const symbol s_14_0[2] = { 0xD8, 0xAA };
static const struct among a_14[1] =
{
-/* 0 */ { 2, s_14_0, -1, 1, 0}
+{ 2, s_14_0, -1, 1, 0}
};
static const symbol s_15_0[2] = { 0xD8, 0xA9 };
static const struct among a_15[1] =
{
-/* 0 */ { 2, s_15_0, -1, 1, 0}
+{ 2, s_15_0, -1, 1, 0}
};
static const symbol s_16_0[2] = { 0xD9, 0x8A };
static const struct among a_16[1] =
{
-/* 0 */ { 2, s_16_0, -1, 1, 0}
+{ 2, s_16_0, -1, 1, 0}
};
static const symbol s_17_0[2] = { 0xD9, 0x83 };
@@ -536,18 +536,18 @@ static const symbol s_17_11[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
static const struct among a_17[12] =
{
-/* 0 */ { 2, s_17_0, -1, 1, 0},
-/* 1 */ { 4, s_17_1, -1, 2, 0},
-/* 2 */ { 4, s_17_2, -1, 2, 0},
-/* 3 */ { 4, s_17_3, -1, 2, 0},
-/* 4 */ { 4, s_17_4, -1, 2, 0},
-/* 5 */ { 2, s_17_5, -1, 1, 0},
-/* 6 */ { 6, s_17_6, -1, 3, 0},
-/* 7 */ { 4, s_17_7, -1, 2, 0},
-/* 8 */ { 6, s_17_8, -1, 3, 0},
-/* 9 */ { 6, s_17_9, -1, 3, 0},
-/* 10 */ { 4, s_17_10, -1, 2, 0},
-/* 11 */ { 4, s_17_11, -1, 2, 0}
+{ 2, s_17_0, -1, 1, 0},
+{ 4, s_17_1, -1, 2, 0},
+{ 4, s_17_2, -1, 2, 0},
+{ 4, s_17_3, -1, 2, 0},
+{ 4, s_17_4, -1, 2, 0},
+{ 2, s_17_5, -1, 1, 0},
+{ 6, s_17_6, -1, 3, 0},
+{ 4, s_17_7, -1, 2, 0},
+{ 6, s_17_8, -1, 3, 0},
+{ 6, s_17_9, -1, 3, 0},
+{ 4, s_17_10, -1, 2, 0},
+{ 4, s_17_11, -1, 2, 0}
};
static const symbol s_18_0[2] = { 0xD9, 0x86 };
@@ -564,17 +564,17 @@ static const symbol s_18_10[2] = { 0xD8, 0xAA };
static const struct among a_18[11] =
{
-/* 0 */ { 2, s_18_0, -1, 1, 0},
-/* 1 */ { 4, s_18_1, 0, 3, 0},
-/* 2 */ { 4, s_18_2, 0, 3, 0},
-/* 3 */ { 4, s_18_3, 0, 3, 0},
-/* 4 */ { 4, s_18_4, 0, 2, 0},
-/* 5 */ { 2, s_18_5, -1, 1, 0},
-/* 6 */ { 2, s_18_6, -1, 1, 0},
-/* 7 */ { 6, s_18_7, 6, 4, 0},
-/* 8 */ { 4, s_18_8, 6, 2, 0},
-/* 9 */ { 4, s_18_9, 6, 2, 0},
-/* 10 */ { 2, s_18_10, -1, 1, 0}
+{ 2, s_18_0, -1, 1, 0},
+{ 4, s_18_1, 0, 3, 0},
+{ 4, s_18_2, 0, 3, 0},
+{ 4, s_18_3, 0, 3, 0},
+{ 4, s_18_4, 0, 2, 0},
+{ 2, s_18_5, -1, 1, 0},
+{ 2, s_18_6, -1, 1, 0},
+{ 6, s_18_7, 6, 4, 0},
+{ 4, s_18_8, 6, 2, 0},
+{ 4, s_18_9, 6, 2, 0},
+{ 2, s_18_10, -1, 1, 0}
};
static const symbol s_19_0[4] = { 0xD8, 0xAA, 0xD9, 0x85 };
@@ -582,8 +582,8 @@ static const symbol s_19_1[4] = { 0xD9, 0x88, 0xD8, 0xA7 };
static const struct among a_19[2] =
{
-/* 0 */ { 4, s_19_0, -1, 1, 0},
-/* 1 */ { 4, s_19_1, -1, 1, 0}
+{ 4, s_19_0, -1, 1, 0},
+{ 4, s_19_1, -1, 1, 0}
};
static const symbol s_20_0[2] = { 0xD9, 0x88 };
@@ -591,15 +591,15 @@ static const symbol s_20_1[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x88 };
static const struct among a_20[2] =
{
-/* 0 */ { 2, s_20_0, -1, 1, 0},
-/* 1 */ { 6, s_20_1, 0, 2, 0}
+{ 2, s_20_0, -1, 1, 0},
+{ 6, s_20_1, 0, 2, 0}
};
static const symbol s_21_0[2] = { 0xD9, 0x89 };
static const struct among a_21[1] =
{
-/* 0 */ { 2, s_21_0, -1, 1, 0}
+{ 2, s_21_0, -1, 1, 0}
};
static const symbol s_0[] = { '0' };
@@ -672,270 +672,269 @@ static const symbol s_66[] = { 0xD8, 0xA3 };
static const symbol s_67[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA };
static const symbol s_68[] = { 0xD9, 0x8A };
-static int r_Normalize_pre(struct SN_env * z) { /* forwardmode */
+static int r_Normalize_pre(struct SN_env * z) {
int among_var;
- { int c1 = z->c; /* do, line 247 */
-/* 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 */
+ { int c1 = z->c;
+ while(1) {
+ int c2 = z->c;
+ { int c3 = z->c;
+ z->bra = z->c;
+ among_var = find_among(z, a_0, 144);
if (!(among_var)) goto lab3;
- z->ket = z->c; /* ], line 249 */
- switch (among_var) { /* among, line 249 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_del(z); /* delete, line 250 */
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 254 */
+ { int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 255 */
+ { int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 4:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 256 */
+ { int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 5:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 257 */
+ { int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 6:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 258 */
+ { int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 7:
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 259 */
+ { int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 8:
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 260 */
+ { int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 9:
- { int ret = slice_from_s(z, 1, s_7); /* <-, line 261 */
+ { int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 10:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 262 */
+ { int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 11:
- { int ret = slice_from_s(z, 1, s_9); /* <-, line 263 */
+ { int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
case 12:
- { int ret = slice_from_s(z, 2, s_10); /* <-, line 266 */
+ { int ret = slice_from_s(z, 2, s_10);
if (ret < 0) return ret;
}
break;
case 13:
- { int ret = slice_from_s(z, 2, s_11); /* <-, line 267 */
+ { int ret = slice_from_s(z, 2, s_11);
if (ret < 0) return ret;
}
break;
case 14:
- { int ret = slice_from_s(z, 2, s_12); /* <-, line 268 */
+ { int ret = slice_from_s(z, 2, s_12);
if (ret < 0) return ret;
}
break;
case 15:
- { int ret = slice_from_s(z, 2, s_13); /* <-, line 269 */
+ { int ret = slice_from_s(z, 2, s_13);
if (ret < 0) return ret;
}
break;
case 16:
- { int ret = slice_from_s(z, 2, s_14); /* <-, line 270 */
+ { int ret = slice_from_s(z, 2, s_14);
if (ret < 0) return ret;
}
break;
case 17:
- { int ret = slice_from_s(z, 2, s_15); /* <-, line 271 */
+ { int ret = slice_from_s(z, 2, s_15);
if (ret < 0) return ret;
}
break;
case 18:
- { int ret = slice_from_s(z, 2, s_16); /* <-, line 272 */
+ { int ret = slice_from_s(z, 2, s_16);
if (ret < 0) return ret;
}
break;
case 19:
- { int ret = slice_from_s(z, 2, s_17); /* <-, line 273 */
+ { int ret = slice_from_s(z, 2, s_17);
if (ret < 0) return ret;
}
break;
case 20:
- { int ret = slice_from_s(z, 2, s_18); /* <-, line 274 */
+ { int ret = slice_from_s(z, 2, s_18);
if (ret < 0) return ret;
}
break;
case 21:
- { int ret = slice_from_s(z, 2, s_19); /* <-, line 275 */
+ { int ret = slice_from_s(z, 2, s_19);
if (ret < 0) return ret;
}
break;
case 22:
- { int ret = slice_from_s(z, 2, s_20); /* <-, line 276 */
+ { int ret = slice_from_s(z, 2, s_20);
if (ret < 0) return ret;
}
break;
case 23:
- { int ret = slice_from_s(z, 2, s_21); /* <-, line 277 */
+ { int ret = slice_from_s(z, 2, s_21);
if (ret < 0) return ret;
}
break;
case 24:
- { int ret = slice_from_s(z, 2, s_22); /* <-, line 278 */
+ { int ret = slice_from_s(z, 2, s_22);
if (ret < 0) return ret;
}
break;
case 25:
- { int ret = slice_from_s(z, 2, s_23); /* <-, line 279 */
+ { int ret = slice_from_s(z, 2, s_23);
if (ret < 0) return ret;
}
break;
case 26:
- { int ret = slice_from_s(z, 2, s_24); /* <-, line 280 */
+ { int ret = slice_from_s(z, 2, s_24);
if (ret < 0) return ret;
}
break;
case 27:
- { int ret = slice_from_s(z, 2, s_25); /* <-, line 281 */
+ { int ret = slice_from_s(z, 2, s_25);
if (ret < 0) return ret;
}
break;
case 28:
- { int ret = slice_from_s(z, 2, s_26); /* <-, line 282 */
+ { int ret = slice_from_s(z, 2, s_26);
if (ret < 0) return ret;
}
break;
case 29:
- { int ret = slice_from_s(z, 2, s_27); /* <-, line 283 */
+ { int ret = slice_from_s(z, 2, s_27);
if (ret < 0) return ret;
}
break;
case 30:
- { int ret = slice_from_s(z, 2, s_28); /* <-, line 284 */
+ { int ret = slice_from_s(z, 2, s_28);
if (ret < 0) return ret;
}
break;
case 31:
- { int ret = slice_from_s(z, 2, s_29); /* <-, line 285 */
+ { int ret = slice_from_s(z, 2, s_29);
if (ret < 0) return ret;
}
break;
case 32:
- { int ret = slice_from_s(z, 2, s_30); /* <-, line 286 */
+ { int ret = slice_from_s(z, 2, s_30);
if (ret < 0) return ret;
}
break;
case 33:
- { int ret = slice_from_s(z, 2, s_31); /* <-, line 287 */
+ { int ret = slice_from_s(z, 2, s_31);
if (ret < 0) return ret;
}
break;
case 34:
- { int ret = slice_from_s(z, 2, s_32); /* <-, line 288 */
+ { int ret = slice_from_s(z, 2, s_32);
if (ret < 0) return ret;
}
break;
case 35:
- { int ret = slice_from_s(z, 2, s_33); /* <-, line 289 */
+ { int ret = slice_from_s(z, 2, s_33);
if (ret < 0) return ret;
}
break;
case 36:
- { int ret = slice_from_s(z, 2, s_34); /* <-, line 290 */
+ { int ret = slice_from_s(z, 2, s_34);
if (ret < 0) return ret;
}
break;
case 37:
- { int ret = slice_from_s(z, 2, s_35); /* <-, line 291 */
+ { int ret = slice_from_s(z, 2, s_35);
if (ret < 0) return ret;
}
break;
case 38:
- { int ret = slice_from_s(z, 2, s_36); /* <-, line 292 */
+ { int ret = slice_from_s(z, 2, s_36);
if (ret < 0) return ret;
}
break;
case 39:
- { int ret = slice_from_s(z, 2, s_37); /* <-, line 293 */
+ { int ret = slice_from_s(z, 2, s_37);
if (ret < 0) return ret;
}
break;
case 40:
- { int ret = slice_from_s(z, 2, s_38); /* <-, line 294 */
+ { int ret = slice_from_s(z, 2, s_38);
if (ret < 0) return ret;
}
break;
case 41:
- { int ret = slice_from_s(z, 2, s_39); /* <-, line 295 */
+ { int ret = slice_from_s(z, 2, s_39);
if (ret < 0) return ret;
}
break;
case 42:
- { int ret = slice_from_s(z, 2, s_40); /* <-, line 296 */
+ { int ret = slice_from_s(z, 2, s_40);
if (ret < 0) return ret;
}
break;
case 43:
- { int ret = slice_from_s(z, 2, s_41); /* <-, line 297 */
+ { int ret = slice_from_s(z, 2, s_41);
if (ret < 0) return ret;
}
break;
case 44:
- { int ret = slice_from_s(z, 2, s_42); /* <-, line 298 */
+ { int ret = slice_from_s(z, 2, s_42);
if (ret < 0) return ret;
}
break;
case 45:
- { int ret = slice_from_s(z, 2, s_43); /* <-, line 299 */
+ { int ret = slice_from_s(z, 2, s_43);
if (ret < 0) return ret;
}
break;
case 46:
- { int ret = slice_from_s(z, 2, s_44); /* <-, line 300 */
+ { int ret = slice_from_s(z, 2, s_44);
if (ret < 0) return ret;
}
break;
case 47:
- { int ret = slice_from_s(z, 2, s_45); /* <-, line 301 */
+ { int ret = slice_from_s(z, 2, s_45);
if (ret < 0) return ret;
}
break;
case 48:
- { int ret = slice_from_s(z, 4, s_46); /* <-, line 304 */
+ { int ret = slice_from_s(z, 4, s_46);
if (ret < 0) return ret;
}
break;
case 49:
- { int ret = slice_from_s(z, 4, s_47); /* <-, line 305 */
+ { int ret = slice_from_s(z, 4, s_47);
if (ret < 0) return ret;
}
break;
case 50:
- { int ret = slice_from_s(z, 4, s_48); /* <-, line 306 */
+ { int ret = slice_from_s(z, 4, s_48);
if (ret < 0) return ret;
}
break;
case 51:
- { int ret = slice_from_s(z, 4, s_49); /* <-, line 307 */
+ { int ret = slice_from_s(z, 4, s_49);
if (ret < 0) return ret;
}
break;
@@ -943,9 +942,9 @@ static int r_Normalize_pre(struct SN_env * z) { /* forwardmode */
goto lab2;
lab3:
z->c = c3;
- { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
+ { int ret = skip_utf8(z->p, z->c, z->l, 1);
if (ret < 0) goto lab1;
- z->c = ret; /* next, line 312 */
+ z->c = ret;
}
}
lab2:
@@ -959,45 +958,44 @@ static int r_Normalize_pre(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_Normalize_post(struct SN_env * z) { /* forwardmode */
+static int r_Normalize_post(struct SN_env * z) {
int among_var;
- { int c1 = z->c; /* do, line 318 */
- z->lb = z->c; z->c = z->l; /* backwards, line 320 */
+ { int c1 = z->c;
+ z->lb = z->c; z->c = z->l;
- z->ket = z->c; /* [, line 321 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((124 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0; /* substring, line 321 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((124 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
if (!(find_among_b(z, a_1, 5))) goto lab0;
- z->bra = z->c; /* ], line 321 */
- { int ret = slice_from_s(z, 2, s_50); /* <-, line 322 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 2, s_50);
if (ret < 0) return ret;
}
z->c = z->lb;
lab0:
z->c = c1;
}
- { int c2 = z->c; /* do, line 329 */
-/* 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 */
+ { int c2 = z->c;
+ while(1) {
+ int c3 = z->c;
+ { int c4 = z->c;
+ z->bra = z->c;
+ if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((124 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab4;
among_var = find_among(z, a_2, 5);
if (!(among_var)) goto lab4;
- z->ket = z->c; /* ], line 332 */
- switch (among_var) { /* among, line 332 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- { int ret = slice_from_s(z, 2, s_51); /* <-, line 333 */
+ { int ret = slice_from_s(z, 2, s_51);
if (ret < 0) return ret;
}
break;
case 2:
- { int ret = slice_from_s(z, 2, s_52); /* <-, line 334 */
+ { int ret = slice_from_s(z, 2, s_52);
if (ret < 0) return ret;
}
break;
case 3:
- { int ret = slice_from_s(z, 2, s_53); /* <-, line 335 */
+ { int ret = slice_from_s(z, 2, s_53);
if (ret < 0) return ret;
}
break;
@@ -1005,9 +1003,9 @@ static int r_Normalize_post(struct SN_env * z) { /* forwardmode */
goto lab3;
lab4:
z->c = c4;
- { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
+ { int ret = skip_utf8(z->p, z->c, z->l, 1);
if (ret < 0) goto lab2;
- z->c = ret; /* next, line 339 */
+ z->c = ret;
}
}
lab3:
@@ -1021,59 +1019,59 @@ static int r_Normalize_post(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_Checks1(struct SN_env * z) { /* forwardmode */
+static int r_Checks1(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 345 */
- if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0; /* substring, line 345 */
+ z->bra = z->c;
+ if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0;
among_var = find_among(z, a_3, 4);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 345 */
- switch (among_var) { /* among, line 345 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 346 */
- z->B[0] = 1; /* set is_noun, line 346 */
- z->B[1] = 0; /* unset is_verb, line 346 */
- z->B[2] = 1; /* set is_defined, line 346 */
+ if (!(len_utf8(z->p) > 4)) return 0;
+ z->I[2] = 1;
+ z->I[1] = 0;
+ z->I[0] = 1;
break;
case 2:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 347 */
- z->B[0] = 1; /* set is_noun, line 347 */
- z->B[1] = 0; /* unset is_verb, line 347 */
- z->B[2] = 1; /* set is_defined, line 347 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ z->I[2] = 1;
+ z->I[1] = 0;
+ z->I[0] = 1;
break;
}
return 1;
}
-static int r_Prefix_Step1(struct SN_env * z) { /* forwardmode */
+static int r_Prefix_Step1(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 354 */
- if (z->c + 3 >= z->l || z->p[z->c + 3] >> 5 != 5 || !((188 >> (z->p[z->c + 3] & 0x1f)) & 1)) return 0; /* substring, line 354 */
+ z->bra = z->c;
+ if (z->c + 3 >= z->l || z->p[z->c + 3] >> 5 != 5 || !((188 >> (z->p[z->c + 3] & 0x1f)) & 1)) return 0;
among_var = find_among(z, a_4, 5);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 354 */
- switch (among_var) { /* among, line 354 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 355 */
- { int ret = slice_from_s(z, 2, s_54); /* <-, line 355 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_from_s(z, 2, s_54);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 356 */
- { int ret = slice_from_s(z, 2, s_55); /* <-, line 356 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_from_s(z, 2, s_55);
if (ret < 0) return ret;
}
break;
case 3:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 358 */
- { int ret = slice_from_s(z, 2, s_56); /* <-, line 358 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_from_s(z, 2, s_56);
if (ret < 0) return ret;
}
break;
case 4:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 359 */
- { int ret = slice_from_s(z, 2, s_57); /* <-, line 359 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_from_s(z, 2, s_57);
if (ret < 0) return ret;
}
break;
@@ -1081,47 +1079,47 @@ static int r_Prefix_Step1(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_Prefix_Step2(struct SN_env * z) { /* forwardmode */
- { int c1 = z->c; /* not, line 365 */
- if (!(eq_s(z, 4, s_58))) goto lab0; /* literal, line 365 */
+static int r_Prefix_Step2(struct SN_env * z) {
+ { int c1 = z->c;
+ if (!(eq_s(z, 4, s_58))) goto lab0;
return 0;
lab0:
z->c = c1;
}
- { int c2 = z->c; /* not, line 366 */
- if (!(eq_s(z, 4, s_59))) goto lab1; /* literal, line 366 */
+ { int c2 = z->c;
+ if (!(eq_s(z, 4, s_59))) goto lab1;
return 0;
lab1:
z->c = c2;
}
- z->bra = z->c; /* [, line 367 */
- if (z->c + 1 >= z->l || (z->p[z->c + 1] != 129 && z->p[z->c + 1] != 136)) return 0; /* substring, line 367 */
+ z->bra = z->c;
+ if (z->c + 1 >= z->l || (z->p[z->c + 1] != 129 && z->p[z->c + 1] != 136)) return 0;
if (!(find_among(z, a_5, 2))) return 0;
- z->ket = z->c; /* ], line 367 */
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 368 */
- { int ret = slice_del(z); /* delete, line 368 */
+ z->ket = z->c;
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Prefix_Step3a_Noun(struct SN_env * z) { /* forwardmode */
+static int r_Prefix_Step3a_Noun(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 374 */
- if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0; /* substring, line 374 */
+ z->bra = z->c;
+ if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0;
among_var = find_among(z, a_6, 4);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 374 */
- switch (among_var) { /* among, line 374 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) > 5)) return 0; /* $( > ), line 375 */
- { int ret = slice_del(z); /* delete, line 375 */
+ if (!(len_utf8(z->p) > 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 376 */
- { int ret = slice_del(z); /* delete, line 376 */
+ if (!(len_utf8(z->p) > 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -1129,35 +1127,35 @@ static int r_Prefix_Step3a_Noun(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_Prefix_Step3b_Noun(struct SN_env * z) { /* forwardmode */
+static int r_Prefix_Step3b_Noun(struct SN_env * z) {
int among_var;
- { int c1 = z->c; /* not, line 381 */
- if (!(eq_s(z, 4, s_60))) goto lab0; /* literal, line 381 */
+ { int c1 = z->c;
+ if (!(eq_s(z, 4, s_60))) goto lab0;
return 0;
lab0:
z->c = c1;
}
- z->bra = z->c; /* [, line 382 */
- if (z->c + 1 >= z->l || (z->p[z->c + 1] != 168 && z->p[z->c + 1] != 131)) return 0; /* substring, line 382 */
+ z->bra = z->c;
+ if (z->c + 1 >= z->l || (z->p[z->c + 1] != 168 && z->p[z->c + 1] != 131)) return 0;
among_var = find_among(z, a_7, 3);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 382 */
- switch (among_var) { /* among, line 382 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 383 */
- { int ret = slice_del(z); /* delete, line 383 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 385 */
- { int ret = slice_from_s(z, 2, s_61); /* <-, line 385 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_from_s(z, 2, s_61);
if (ret < 0) return ret;
}
break;
case 3:
- if (!(len_utf8(z->p) > 3)) return 0; /* $( > ), line 386 */
- { int ret = slice_from_s(z, 2, s_62); /* <-, line 386 */
+ if (!(len_utf8(z->p) > 3)) return 0;
+ { int ret = slice_from_s(z, 2, s_62);
if (ret < 0) return ret;
}
break;
@@ -1165,34 +1163,34 @@ static int r_Prefix_Step3b_Noun(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_Prefix_Step3_Verb(struct SN_env * z) { /* forwardmode */
+static int r_Prefix_Step3_Verb(struct SN_env * z) {
int among_var;
- z->bra = z->c; /* [, line 392 */
- among_var = find_among(z, a_8, 4); /* substring, line 392 */
+ z->bra = z->c;
+ among_var = find_among(z, a_8, 4);
if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 392 */
- switch (among_var) { /* among, line 392 */
+ z->ket = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 394 */
- { int ret = slice_from_s(z, 2, s_63); /* <-, line 394 */
+ if (!(len_utf8(z->p) > 4)) return 0;
+ { int ret = slice_from_s(z, 2, s_63);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 395 */
- { int ret = slice_from_s(z, 2, s_64); /* <-, line 395 */
+ if (!(len_utf8(z->p) > 4)) return 0;
+ { int ret = slice_from_s(z, 2, s_64);
if (ret < 0) return ret;
}
break;
case 3:
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 396 */
- { int ret = slice_from_s(z, 2, s_65); /* <-, line 396 */
+ if (!(len_utf8(z->p) > 4)) return 0;
+ { int ret = slice_from_s(z, 2, s_65);
if (ret < 0) return ret;
}
break;
case 4:
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 397 */
- { int ret = slice_from_s(z, 2, s_66); /* <-, line 397 */
+ if (!(len_utf8(z->p) > 4)) return 0;
+ { int ret = slice_from_s(z, 2, s_66);
if (ret < 0) return ret;
}
break;
@@ -1200,42 +1198,42 @@ static int r_Prefix_Step3_Verb(struct SN_env * z) { /* forwardmode */
return 1;
}
-static int r_Prefix_Step4_Verb(struct SN_env * z) { /* forwardmode */
- z->bra = z->c; /* [, line 402 */
- if (z->c + 5 >= z->l || z->p[z->c + 5] != 170) return 0; /* substring, line 402 */
+static int r_Prefix_Step4_Verb(struct SN_env * z) {
+ z->bra = z->c;
+ if (z->c + 5 >= z->l || z->p[z->c + 5] != 170) return 0;
if (!(find_among(z, a_9, 3))) return 0;
- z->ket = z->c; /* ], line 402 */
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 403 */
- z->B[1] = 1; /* set is_verb, line 403 */
- z->B[0] = 0; /* unset is_noun, line 403 */
- { int ret = slice_from_s(z, 6, s_67); /* <-, line 403 */
+ z->ket = z->c;
+ if (!(len_utf8(z->p) > 4)) return 0;
+ z->I[1] = 1;
+ z->I[2] = 0;
+ { int ret = slice_from_s(z, 6, s_67);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Noun_Step1a(struct SN_env * z) { /* backwardmode */
+static int r_Suffix_Noun_Step1a(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 411 */
- among_var = find_among_b(z, a_10, 10); /* substring, line 411 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_10, 10);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 411 */
- switch (among_var) { /* among, line 411 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) >= 4)) return 0; /* $( >= ), line 412 */
- { int ret = slice_del(z); /* delete, line 412 */
+ if (!(len_utf8(z->p) >= 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) >= 5)) return 0; /* $( >= ), line 413 */
- { int ret = slice_del(z); /* delete, line 413 */
+ if (!(len_utf8(z->p) >= 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- if (!(len_utf8(z->p) >= 6)) return 0; /* $( >= ), line 414 */
- { int ret = slice_del(z); /* delete, line 414 */
+ if (!(len_utf8(z->p) >= 6)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -1243,99 +1241,99 @@ static int r_Suffix_Noun_Step1a(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Suffix_Noun_Step1b(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 418 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 134) return 0; /* substring, line 418 */
+static int r_Suffix_Noun_Step1b(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 134) return 0;
if (!(find_among_b(z, a_11, 1))) return 0;
- z->bra = z->c; /* ], line 418 */
- if (!(len_utf8(z->p) > 5)) return 0; /* $( > ), line 419 */
- { int ret = slice_del(z); /* delete, line 419 */
+ z->bra = z->c;
+ if (!(len_utf8(z->p) > 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Noun_Step2a(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 424 */
- if (!(find_among_b(z, a_12, 3))) return 0; /* substring, line 424 */
- z->bra = z->c; /* ], line 424 */
- if (!(len_utf8(z->p) > 4)) return 0; /* $( > ), line 425 */
- { int ret = slice_del(z); /* delete, line 425 */
+static int r_Suffix_Noun_Step2a(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_12, 3))) return 0;
+ z->bra = z->c;
+ if (!(len_utf8(z->p) > 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Noun_Step2b(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 430 */
- if (z->c - 3 <= z->lb || z->p[z->c - 1] != 170) return 0; /* substring, line 430 */
+static int r_Suffix_Noun_Step2b(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 3 <= z->lb || z->p[z->c - 1] != 170) return 0;
if (!(find_among_b(z, a_13, 1))) return 0;
- z->bra = z->c; /* ], line 430 */
- if (!(len_utf8(z->p) >= 5)) return 0; /* $( >= ), line 431 */
- { int ret = slice_del(z); /* delete, line 431 */
+ z->bra = z->c;
+ if (!(len_utf8(z->p) >= 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Noun_Step2c1(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 436 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 170) return 0; /* substring, line 436 */
+static int r_Suffix_Noun_Step2c1(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 170) return 0;
if (!(find_among_b(z, a_14, 1))) return 0;
- z->bra = z->c; /* ], line 436 */
- if (!(len_utf8(z->p) >= 4)) return 0; /* $( >= ), line 437 */
- { int ret = slice_del(z); /* delete, line 437 */
+ z->bra = z->c;
+ if (!(len_utf8(z->p) >= 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Noun_Step2c2(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 441 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 169) return 0; /* substring, line 441 */
+static int r_Suffix_Noun_Step2c2(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 169) return 0;
if (!(find_among_b(z, a_15, 1))) return 0;
- z->bra = z->c; /* ], line 441 */
- if (!(len_utf8(z->p) >= 4)) return 0; /* $( >= ), line 442 */
- { int ret = slice_del(z); /* delete, line 442 */
+ z->bra = z->c;
+ if (!(len_utf8(z->p) >= 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Noun_Step3(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 446 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 138) return 0; /* substring, line 446 */
+static int r_Suffix_Noun_Step3(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 138) return 0;
if (!(find_among_b(z, a_16, 1))) return 0;
- z->bra = z->c; /* ], line 446 */
- if (!(len_utf8(z->p) >= 3)) return 0; /* $( >= ), line 447 */
- { int ret = slice_del(z); /* delete, line 447 */
+ z->bra = z->c;
+ if (!(len_utf8(z->p) >= 3)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Verb_Step1(struct SN_env * z) { /* backwardmode */
+static int r_Suffix_Verb_Step1(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 452 */
- among_var = find_among_b(z, a_17, 12); /* substring, line 452 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_17, 12);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 452 */
- switch (among_var) { /* among, line 452 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) >= 4)) return 0; /* $( >= ), line 453 */
- { int ret = slice_del(z); /* delete, line 453 */
+ if (!(len_utf8(z->p) >= 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) >= 5)) return 0; /* $( >= ), line 454 */
- { int ret = slice_del(z); /* delete, line 454 */
+ if (!(len_utf8(z->p) >= 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- if (!(len_utf8(z->p) >= 6)) return 0; /* $( >= ), line 455 */
- { int ret = slice_del(z); /* delete, line 455 */
+ if (!(len_utf8(z->p) >= 6)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -1343,34 +1341,34 @@ static int r_Suffix_Verb_Step1(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Suffix_Verb_Step2a(struct SN_env * z) { /* backwardmode */
+static int r_Suffix_Verb_Step2a(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 459 */
- among_var = find_among_b(z, a_18, 11); /* substring, line 459 */
+ z->ket = z->c;
+ among_var = find_among_b(z, a_18, 11);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 459 */
- switch (among_var) { /* among, line 459 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) >= 4)) return 0; /* $( >= ), line 460 */
- { int ret = slice_del(z); /* delete, line 460 */
+ if (!(len_utf8(z->p) >= 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) >= 5)) return 0; /* $( >= ), line 462 */
- { int ret = slice_del(z); /* delete, line 462 */
+ if (!(len_utf8(z->p) >= 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
- if (!(len_utf8(z->p) > 5)) return 0; /* $( > ), line 463 */
- { int ret = slice_del(z); /* delete, line 463 */
+ if (!(len_utf8(z->p) > 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 4:
- if (!(len_utf8(z->p) >= 6)) return 0; /* $( >= ), line 464 */
- { int ret = slice_del(z); /* delete, line 464 */
+ if (!(len_utf8(z->p) >= 6)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -1378,35 +1376,35 @@ static int r_Suffix_Verb_Step2a(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Suffix_Verb_Step2b(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 469 */
- if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 133 && z->p[z->c - 1] != 167)) return 0; /* substring, line 469 */
+static int r_Suffix_Verb_Step2b(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 133 && z->p[z->c - 1] != 167)) return 0;
if (!(find_among_b(z, a_19, 2))) return 0;
- z->bra = z->c; /* ], line 469 */
- if (!(len_utf8(z->p) >= 5)) return 0; /* $( >= ), line 470 */
- { int ret = slice_del(z); /* delete, line 470 */
+ z->bra = z->c;
+ if (!(len_utf8(z->p) >= 5)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
-static int r_Suffix_Verb_Step2c(struct SN_env * z) { /* backwardmode */
+static int r_Suffix_Verb_Step2c(struct SN_env * z) {
int among_var;
- z->ket = z->c; /* [, line 476 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 136) return 0; /* substring, line 476 */
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 136) return 0;
among_var = find_among_b(z, a_20, 2);
if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 476 */
- switch (among_var) { /* among, line 476 */
+ z->bra = z->c;
+ switch (among_var) {
case 1:
- if (!(len_utf8(z->p) >= 4)) return 0; /* $( >= ), line 477 */
- { int ret = slice_del(z); /* delete, line 477 */
+ if (!(len_utf8(z->p) >= 4)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
- if (!(len_utf8(z->p) >= 6)) return 0; /* $( >= ), line 478 */
- { int ret = slice_del(z); /* delete, line 478 */
+ if (!(len_utf8(z->p) >= 6)) return 0;
+ { int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
@@ -1414,40 +1412,41 @@ static int r_Suffix_Verb_Step2c(struct SN_env * z) { /* backwardmode */
return 1;
}
-static int r_Suffix_All_alef_maqsura(struct SN_env * z) { /* backwardmode */
- z->ket = z->c; /* [, line 483 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 137) return 0; /* substring, line 483 */
+static int r_Suffix_All_alef_maqsura(struct SN_env * z) {
+ z->ket = z->c;
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 137) return 0;
if (!(find_among_b(z, a_21, 1))) return 0;
- z->bra = z->c; /* ], line 483 */
- { int ret = slice_from_s(z, 2, s_68); /* <-, line 484 */
+ z->bra = z->c;
+ { int ret = slice_from_s(z, 2, s_68);
if (ret < 0) return ret;
}
return 1;
}
-extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
- z->B[0] = 1; /* set is_noun, line 493 */
- z->B[1] = 1; /* set is_verb, line 494 */
- 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 */
+extern int arabic_UTF_8_stem(struct SN_env * z) {
+ z->I[2] = 1;
+ z->I[1] = 1;
+ z->I[0] = 0;
+ { int c1 = z->c;
+ { int ret = r_Checks1(z);
if (ret < 0) return ret;
}
z->c = c1;
}
- /* do, line 501 */
- { int ret = r_Normalize_pre(z); /* call Normalize_pre, line 501 */
+
+ { int ret = r_Normalize_pre(z);
if (ret < 0) return ret;
}
- z->lb = z->c; z->c = z->l; /* backwards, line 504 */
+ z->lb = z->c; z->c = z->l;
- { 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 lab2; /* Boolean test is_verb, line 509 */
- { int m4 = z->l - z->c; (void)m4; /* or, line 515 */
+ { int m2 = z->l - z->c; (void)m2;
+ { int m3 = z->l - z->c; (void)m3;
+ if (!(z->I[1])) goto lab2;
+ { int m4 = z->l - z->c; (void)m4;
{ int i = 1;
- while(1) { int m5 = z->l - z->c; (void)m5;
- { int ret = r_Suffix_Verb_Step1(z); /* call Suffix_Verb_Step1, line 512 */
+ while(1) {
+ int m5 = z->l - z->c; (void)m5;
+ { int ret = r_Suffix_Verb_Step1(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
@@ -1459,38 +1458,38 @@ extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
}
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 */
+ { int m6 = z->l - z->c; (void)m6;
+ { int ret = r_Suffix_Verb_Step2a(z);
if (ret == 0) goto lab7;
if (ret < 0) return ret;
}
goto lab6;
lab7:
z->c = z->l - m6;
- { int ret = r_Suffix_Verb_Step2c(z); /* call Suffix_Verb_Step2c, line 513 */
+ { int ret = r_Suffix_Verb_Step2c(z);
if (ret == 0) goto lab8;
if (ret < 0) return ret;
}
goto lab6;
lab8:
z->c = z->l - m6;
- { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
+ { int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
if (ret < 0) goto lab4;
- z->c = ret; /* next, line 513 */
+ z->c = ret;
}
}
lab6:
goto lab3;
lab4:
z->c = z->l - m4;
- { int ret = r_Suffix_Verb_Step2b(z); /* call Suffix_Verb_Step2b, line 515 */
+ { int ret = r_Suffix_Verb_Step2b(z);
if (ret == 0) goto lab9;
if (ret < 0) return ret;
}
goto lab3;
lab9:
z->c = z->l - m4;
- { int ret = r_Suffix_Verb_Step2a(z); /* call Suffix_Verb_Step2a, line 516 */
+ { int ret = r_Suffix_Verb_Step2a(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
@@ -1499,75 +1498,75 @@ extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
goto lab1;
lab2:
z->c = z->l - m3;
- 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 (!(z->I[2])) goto lab10;
+ { int m7 = z->l - z->c; (void)m7;
+ { int m8 = z->l - z->c; (void)m8;
+ { int ret = r_Suffix_Noun_Step2c2(z);
if (ret == 0) goto lab13;
if (ret < 0) return ret;
}
goto lab12;
lab13:
z->c = z->l - m8;
- /* not, line 526 */
- if (!(z->B[2])) goto lab15; /* Boolean test is_defined, line 526 */
+
+ if (!(z->I[0])) goto lab15;
goto lab14;
lab15:
- { int ret = r_Suffix_Noun_Step1a(z); /* call Suffix_Noun_Step1a, line 526 */
+ { int ret = r_Suffix_Noun_Step1a(z);
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 */
+ { int m9 = z->l - z->c; (void)m9;
+ { int ret = r_Suffix_Noun_Step2a(z);
if (ret == 0) goto lab17;
if (ret < 0) return ret;
}
goto lab16;
lab17:
z->c = z->l - m9;
- { int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 528 */
+ { int ret = r_Suffix_Noun_Step2b(z);
if (ret == 0) goto lab18;
if (ret < 0) return ret;
}
goto lab16;
lab18:
z->c = z->l - m9;
- { int ret = r_Suffix_Noun_Step2c1(z); /* call Suffix_Noun_Step2c1, line 529 */
+ { int ret = r_Suffix_Noun_Step2c1(z);
if (ret == 0) goto lab19;
if (ret < 0) return ret;
}
goto lab16;
lab19:
z->c = z->l - m9;
- { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
+ { int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
if (ret < 0) goto lab14;
- z->c = ret; /* next, line 530 */
+ z->c = ret;
}
}
lab16:
goto lab12;
lab14:
z->c = z->l - m8;
- { int ret = r_Suffix_Noun_Step1b(z); /* call Suffix_Noun_Step1b, line 531 */
+ { int ret = r_Suffix_Noun_Step1b(z);
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 */
+ { int m10 = z->l - z->c; (void)m10;
+ { int ret = r_Suffix_Noun_Step2a(z);
if (ret == 0) goto lab22;
if (ret < 0) return ret;
}
goto lab21;
lab22:
z->c = z->l - m10;
- { int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 533 */
+ { int ret = r_Suffix_Noun_Step2b(z);
if (ret == 0) goto lab23;
if (ret < 0) return ret;
}
goto lab21;
lab23:
z->c = z->l - m10;
- { int ret = r_Suffix_Noun_Step2c1(z); /* call Suffix_Noun_Step2c1, line 534 */
+ { int ret = r_Suffix_Noun_Step2c1(z);
if (ret == 0) goto lab20;
if (ret < 0) return ret;
}
@@ -1576,18 +1575,18 @@ extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
goto lab12;
lab20:
z->c = z->l - m8;
- /* not, line 535 */
- if (!(z->B[2])) goto lab25; /* Boolean test is_defined, line 535 */
+
+ if (!(z->I[0])) goto lab25;
goto lab24;
lab25:
- { int ret = r_Suffix_Noun_Step2a(z); /* call Suffix_Noun_Step2a, line 535 */
+ { int ret = r_Suffix_Noun_Step2a(z);
if (ret == 0) goto lab24;
if (ret < 0) return ret;
}
goto lab12;
lab24:
z->c = z->l - m8;
- { int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 536 */
+ { int ret = r_Suffix_Noun_Step2b(z);
if (ret == 0) { z->c = z->l - m7; goto lab11; }
if (ret < 0) return ret;
}
@@ -1596,14 +1595,14 @@ extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
lab11:
;
}
- { int ret = r_Suffix_Noun_Step3(z); /* call Suffix_Noun_Step3, line 538 */
+ { int ret = r_Suffix_Noun_Step3(z);
if (ret == 0) goto lab10;
if (ret < 0) return ret;
}
goto lab1;
lab10:
z->c = z->l - m3;
- { int ret = r_Suffix_All_alef_maqsura(z); /* call Suffix_All_alef_maqsura, line 544 */
+ { int ret = r_Suffix_All_alef_maqsura(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
@@ -1613,49 +1612,49 @@ extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
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 */
+ { int c11 = z->c;
+ { int c12 = z->c;
+ { int ret = r_Prefix_Step1(z);
if (ret == 0) { z->c = c12; goto lab27; }
if (ret < 0) return ret;
}
lab27:
;
}
- { int c13 = z->c; /* try, line 551 */
- { int ret = r_Prefix_Step2(z); /* call Prefix_Step2, line 551 */
+ { int c13 = z->c;
+ { int ret = r_Prefix_Step2(z);
if (ret == 0) { z->c = c13; goto lab28; }
if (ret < 0) return ret;
}
lab28:
;
}
- { int c14 = z->c; /* or, line 553 */
- { int ret = r_Prefix_Step3a_Noun(z); /* call Prefix_Step3a_Noun, line 552 */
+ { int c14 = z->c;
+ { int ret = r_Prefix_Step3a_Noun(z);
if (ret == 0) goto lab30;
if (ret < 0) return ret;
}
goto lab29;
lab30:
z->c = c14;
- 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 (!(z->I[2])) goto lab31;
+ { int ret = r_Prefix_Step3b_Noun(z);
if (ret == 0) goto lab31;
if (ret < 0) return ret;
}
goto lab29;
lab31:
z->c = c14;
- 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 (!(z->I[1])) goto lab26;
+ { int c15 = z->c;
+ { int ret = r_Prefix_Step3_Verb(z);
if (ret == 0) { z->c = c15; goto lab32; }
if (ret < 0) return ret;
}
lab32:
;
}
- { int ret = r_Prefix_Step4_Verb(z); /* call Prefix_Step4_Verb, line 554 */
+ { int ret = r_Prefix_Step4_Verb(z);
if (ret == 0) goto lab26;
if (ret < 0) return ret;
}
@@ -1664,14 +1663,14 @@ extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
lab26:
z->c = c11;
}
- /* do, line 559 */
- { int ret = r_Normalize_post(z); /* call Normalize_post, line 559 */
+
+ { int ret = r_Normalize_post(z);
if (ret < 0) return ret;
}
return 1;
}
-extern struct SN_env * arabic_UTF_8_create_env(void) { return SN_create_env(0, 0, 3); }
+extern struct SN_env * arabic_UTF_8_create_env(void) { return SN_create_env(0, 3); }
extern void arabic_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_armenian.c b/src/backend/snowball/libstemmer/stem_UTF_8_armenian.c
new file mode 100644
index 0000000000000..009ddb51d1d18
--- /dev/null
+++ b/src/backend/snowball/libstemmer/stem_UTF_8_armenian.c
@@ -0,0 +1,559 @@
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
+
+#include "header.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern int armenian_UTF_8_stem(struct SN_env * z);
+#ifdef __cplusplus
+}
+#endif
+static int r_ending(struct SN_env * z);
+static int r_noun(struct SN_env * z);
+static int r_verb(struct SN_env * z);
+static int r_adjective(struct SN_env * z);
+static int r_R2(struct SN_env * z);
+static int r_mark_regions(struct SN_env * z);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+extern struct SN_env * armenian_UTF_8_create_env(void);
+extern void armenian_UTF_8_close_env(struct SN_env * z);
+
+
+#ifdef __cplusplus
+}
+#endif
+static const symbol s_0_0[6] = { 0xD5, 0xA2, 0xD5, 0xA1, 0xD6, 0x80 };
+static const symbol s_0_1[8] = { 0xD6, 0x80, 0xD5, 0xB8, 0xD6, 0x80, 0xD5, 0xA4 };
+static const symbol s_0_2[10] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD6, 0x80, 0xD5, 0xA4 };
+static const symbol s_0_3[6] = { 0xD5, 0xA1, 0xD5, 0xAC, 0xD5, 0xAB };
+static const symbol s_0_4[6] = { 0xD5, 0xA1, 0xD5, 0xAF, 0xD5, 0xAB };
+static const symbol s_0_5[8] = { 0xD5, 0xB8, 0xD6, 0x80, 0xD5, 0xA1, 0xD5, 0xAF };
+static const symbol s_0_6[4] = { 0xD5, 0xA5, 0xD5, 0xB2 };
+static const symbol s_0_7[8] = { 0xD5, 0xBE, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB6 };
+static const symbol s_0_8[8] = { 0xD5, 0xA1, 0xD6, 0x80, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_0_9[8] = { 0xD5, 0xA1, 0xD5, 0xAF, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_0_10[4] = { 0xD5, 0xA5, 0xD5, 0xB6 };
+static const symbol s_0_11[8] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xA5, 0xD5, 0xB6 };
+static const symbol s_0_12[8] = { 0xD5, 0xA5, 0xD5, 0xAF, 0xD5, 0xA5, 0xD5, 0xB6 };
+static const symbol s_0_13[8] = { 0xD5, 0xB8, 0xD6, 0x80, 0xD5, 0xA7, 0xD5, 0xB6 };
+static const symbol s_0_14[4] = { 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_0_15[6] = { 0xD5, 0xA3, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_0_16[8] = { 0xD5, 0xB8, 0xD5, 0xBE, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_0_17[8] = { 0xD5, 0xAC, 0xD5, 0xA1, 0xD5, 0xB5, 0xD5, 0xB6 };
+static const symbol s_0_18[6] = { 0xD5, 0xBA, 0xD5, 0xA5, 0xD5, 0xBD };
+static const symbol s_0_19[4] = { 0xD5, 0xAB, 0xD5, 0xBE };
+static const symbol s_0_20[4] = { 0xD5, 0xA1, 0xD5, 0xBF };
+static const symbol s_0_21[8] = { 0xD5, 0xA1, 0xD5, 0xBE, 0xD5, 0xA5, 0xD5, 0xBF };
+static const symbol s_0_22[6] = { 0xD5, 0xAF, 0xD5, 0xB8, 0xD5, 0xBF };
+
+static const struct among a_0[23] =
+{
+{ 6, s_0_0, -1, 1, 0},
+{ 8, s_0_1, -1, 1, 0},
+{ 10, s_0_2, 1, 1, 0},
+{ 6, s_0_3, -1, 1, 0},
+{ 6, s_0_4, -1, 1, 0},
+{ 8, s_0_5, -1, 1, 0},
+{ 4, s_0_6, -1, 1, 0},
+{ 8, s_0_7, -1, 1, 0},
+{ 8, s_0_8, -1, 1, 0},
+{ 8, s_0_9, -1, 1, 0},
+{ 4, s_0_10, -1, 1, 0},
+{ 8, s_0_11, 10, 1, 0},
+{ 8, s_0_12, 10, 1, 0},
+{ 8, s_0_13, -1, 1, 0},
+{ 4, s_0_14, -1, 1, 0},
+{ 6, s_0_15, 14, 1, 0},
+{ 8, s_0_16, 14, 1, 0},
+{ 8, s_0_17, -1, 1, 0},
+{ 6, s_0_18, -1, 1, 0},
+{ 4, s_0_19, -1, 1, 0},
+{ 4, s_0_20, -1, 1, 0},
+{ 8, s_0_21, -1, 1, 0},
+{ 6, s_0_22, -1, 1, 0}
+};
+
+static const symbol s_1_0[4] = { 0xD5, 0xA1, 0xD6, 0x80 };
+static const symbol s_1_1[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xA1, 0xD6, 0x80 };
+static const symbol s_1_2[8] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xA1, 0xD6, 0x80 };
+static const symbol s_1_3[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD6, 0x80, 0xD5, 0xAB, 0xD6, 0x80 };
+static const symbol s_1_4[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xAB, 0xD6, 0x80 };
+static const symbol s_1_5[8] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD6, 0x80 };
+static const symbol s_1_6[10] = { 0xD5, 0xBE, 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD6, 0x80 };
+static const symbol s_1_7[10] = { 0xD5, 0xA1, 0xD5, 0xAC, 0xD5, 0xB8, 0xD6, 0x82, 0xD6, 0x81 };
+static const symbol s_1_8[10] = { 0xD5, 0xA5, 0xD5, 0xAC, 0xD5, 0xB8, 0xD6, 0x82, 0xD6, 0x81 };
+static const symbol s_1_9[4] = { 0xD5, 0xA1, 0xD6, 0x81 };
+static const symbol s_1_10[4] = { 0xD5, 0xA5, 0xD6, 0x81 };
+static const symbol s_1_11[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD6, 0x80, 0xD5, 0xA5, 0xD6, 0x81 };
+static const symbol s_1_12[8] = { 0xD5, 0xA1, 0xD5, 0xAC, 0xD5, 0xB8, 0xD6, 0x82 };
+static const symbol s_1_13[8] = { 0xD5, 0xA5, 0xD5, 0xAC, 0xD5, 0xB8, 0xD6, 0x82 };
+static const symbol s_1_14[4] = { 0xD5, 0xA1, 0xD6, 0x84 };
+static const symbol s_1_15[6] = { 0xD6, 0x81, 0xD5, 0xA1, 0xD6, 0x84 };
+static const symbol s_1_16[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xA1, 0xD6, 0x84 };
+static const symbol s_1_17[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD6, 0x80, 0xD5, 0xAB, 0xD6, 0x84 };
+static const symbol s_1_18[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xAB, 0xD6, 0x84 };
+static const symbol s_1_19[8] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD6, 0x84 };
+static const symbol s_1_20[10] = { 0xD5, 0xBE, 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD6, 0x84 };
+static const symbol s_1_21[6] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_1_22[8] = { 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_1_23[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_1_24[12] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD6, 0x80, 0xD5, 0xAB, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_1_25[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xAB, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_1_26[10] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_1_27[12] = { 0xD5, 0xBE, 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_1_28[2] = { 0xD5, 0xA1 };
+static const symbol s_1_29[6] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xA1 };
+static const symbol s_1_30[6] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xA1 };
+static const symbol s_1_31[4] = { 0xD5, 0xBE, 0xD5, 0xA5 };
+static const symbol s_1_32[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD6, 0x80, 0xD5, 0xAB };
+static const symbol s_1_33[6] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xAB };
+static const symbol s_1_34[6] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB };
+static const symbol s_1_35[8] = { 0xD5, 0xBE, 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB };
+static const symbol s_1_36[4] = { 0xD5, 0xA1, 0xD5, 0xAC };
+static const symbol s_1_37[6] = { 0xD5, 0xA8, 0xD5, 0xA1, 0xD5, 0xAC };
+static const symbol s_1_38[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xB6, 0xD5, 0xA1, 0xD5, 0xAC };
+static const symbol s_1_39[8] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA1, 0xD5, 0xAC };
+static const symbol s_1_40[8] = { 0xD5, 0xA5, 0xD5, 0xB6, 0xD5, 0xA1, 0xD5, 0xAC };
+static const symbol s_1_41[4] = { 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_42[6] = { 0xD5, 0xA8, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_43[6] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_44[8] = { 0xD6, 0x81, 0xD5, 0xB6, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_45[10] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xB6, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_46[6] = { 0xD5, 0xB9, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_47[6] = { 0xD5, 0xBE, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_48[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xBE, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_49[10] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xBE, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_50[6] = { 0xD5, 0xBF, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_51[8] = { 0xD5, 0xA1, 0xD5, 0xBF, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_52[8] = { 0xD5, 0xB8, 0xD5, 0xBF, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_53[10] = { 0xD5, 0xAF, 0xD5, 0xB8, 0xD5, 0xBF, 0xD5, 0xA5, 0xD5, 0xAC };
+static const symbol s_1_54[6] = { 0xD5, 0xBE, 0xD5, 0xA1, 0xD5, 0xAE };
+static const symbol s_1_55[6] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB4 };
+static const symbol s_1_56[8] = { 0xD5, 0xBE, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB4 };
+static const symbol s_1_57[4] = { 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_1_58[6] = { 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_1_59[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_1_60[10] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD6, 0x80, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_1_61[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_1_62[8] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_1_63[10] = { 0xD5, 0xBE, 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_1_64[8] = { 0xD5, 0xA1, 0xD5, 0xAC, 0xD5, 0xAB, 0xD5, 0xBD };
+static const symbol s_1_65[8] = { 0xD5, 0xA5, 0xD5, 0xAC, 0xD5, 0xAB, 0xD5, 0xBD };
+static const symbol s_1_66[4] = { 0xD5, 0xA1, 0xD5, 0xBE };
+static const symbol s_1_67[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xBE };
+static const symbol s_1_68[8] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xBE };
+static const symbol s_1_69[8] = { 0xD5, 0xA1, 0xD5, 0xAC, 0xD5, 0xB8, 0xD5, 0xBE };
+static const symbol s_1_70[8] = { 0xD5, 0xA5, 0xD5, 0xAC, 0xD5, 0xB8, 0xD5, 0xBE };
+
+static const struct among a_1[71] =
+{
+{ 4, s_1_0, -1, 1, 0},
+{ 8, s_1_1, 0, 1, 0},
+{ 8, s_1_2, 0, 1, 0},
+{ 10, s_1_3, -1, 1, 0},
+{ 8, s_1_4, -1, 1, 0},
+{ 8, s_1_5, -1, 1, 0},
+{ 10, s_1_6, 5, 1, 0},
+{ 10, s_1_7, -1, 1, 0},
+{ 10, s_1_8, -1, 1, 0},
+{ 4, s_1_9, -1, 1, 0},
+{ 4, s_1_10, -1, 1, 0},
+{ 10, s_1_11, 10, 1, 0},
+{ 8, s_1_12, -1, 1, 0},
+{ 8, s_1_13, -1, 1, 0},
+{ 4, s_1_14, -1, 1, 0},
+{ 6, s_1_15, 14, 1, 0},
+{ 8, s_1_16, 15, 1, 0},
+{ 10, s_1_17, -1, 1, 0},
+{ 8, s_1_18, -1, 1, 0},
+{ 8, s_1_19, -1, 1, 0},
+{ 10, s_1_20, 19, 1, 0},
+{ 6, s_1_21, -1, 1, 0},
+{ 8, s_1_22, 21, 1, 0},
+{ 10, s_1_23, 22, 1, 0},
+{ 12, s_1_24, -1, 1, 0},
+{ 10, s_1_25, -1, 1, 0},
+{ 10, s_1_26, -1, 1, 0},
+{ 12, s_1_27, 26, 1, 0},
+{ 2, s_1_28, -1, 1, 0},
+{ 6, s_1_29, 28, 1, 0},
+{ 6, s_1_30, 28, 1, 0},
+{ 4, s_1_31, -1, 1, 0},
+{ 8, s_1_32, -1, 1, 0},
+{ 6, s_1_33, -1, 1, 0},
+{ 6, s_1_34, -1, 1, 0},
+{ 8, s_1_35, 34, 1, 0},
+{ 4, s_1_36, -1, 1, 0},
+{ 6, s_1_37, 36, 1, 0},
+{ 10, s_1_38, 36, 1, 0},
+{ 8, s_1_39, 36, 1, 0},
+{ 8, s_1_40, 36, 1, 0},
+{ 4, s_1_41, -1, 1, 0},
+{ 6, s_1_42, 41, 1, 0},
+{ 6, s_1_43, 41, 1, 0},
+{ 8, s_1_44, 43, 1, 0},
+{ 10, s_1_45, 44, 1, 0},
+{ 6, s_1_46, 41, 1, 0},
+{ 6, s_1_47, 41, 1, 0},
+{ 10, s_1_48, 47, 1, 0},
+{ 10, s_1_49, 47, 1, 0},
+{ 6, s_1_50, 41, 1, 0},
+{ 8, s_1_51, 50, 1, 0},
+{ 8, s_1_52, 50, 1, 0},
+{ 10, s_1_53, 52, 1, 0},
+{ 6, s_1_54, -1, 1, 0},
+{ 6, s_1_55, -1, 1, 0},
+{ 8, s_1_56, 55, 1, 0},
+{ 4, s_1_57, -1, 1, 0},
+{ 6, s_1_58, 57, 1, 0},
+{ 8, s_1_59, 58, 1, 0},
+{ 10, s_1_60, -1, 1, 0},
+{ 8, s_1_61, -1, 1, 0},
+{ 8, s_1_62, -1, 1, 0},
+{ 10, s_1_63, 62, 1, 0},
+{ 8, s_1_64, -1, 1, 0},
+{ 8, s_1_65, -1, 1, 0},
+{ 4, s_1_66, -1, 1, 0},
+{ 8, s_1_67, 66, 1, 0},
+{ 8, s_1_68, 66, 1, 0},
+{ 8, s_1_69, -1, 1, 0},
+{ 8, s_1_70, -1, 1, 0}
+};
+
+static const symbol s_2_0[6] = { 0xD5, 0xA3, 0xD5, 0xA1, 0xD6, 0x80 };
+static const symbol s_2_1[6] = { 0xD5, 0xBE, 0xD5, 0xB8, 0xD6, 0x80 };
+static const symbol s_2_2[8] = { 0xD5, 0xA1, 0xD5, 0xBE, 0xD5, 0xB8, 0xD6, 0x80 };
+static const symbol s_2_3[8] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD6, 0x85, 0xD6, 0x81 };
+static const symbol s_2_4[4] = { 0xD5, 0xB8, 0xD6, 0x81 };
+static const symbol s_2_5[4] = { 0xD5, 0xB8, 0xD6, 0x82 };
+static const symbol s_2_6[2] = { 0xD6, 0x84 };
+static const symbol s_2_7[6] = { 0xD5, 0xA1, 0xD6, 0x80, 0xD6, 0x84 };
+static const symbol s_2_8[6] = { 0xD5, 0xB9, 0xD5, 0xA5, 0xD6, 0x84 };
+static const symbol s_2_9[4] = { 0xD5, 0xAB, 0xD6, 0x84 };
+static const symbol s_2_10[8] = { 0xD5, 0xA1, 0xD5, 0xAC, 0xD5, 0xAB, 0xD6, 0x84 };
+static const symbol s_2_11[8] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xAB, 0xD6, 0x84 };
+static const symbol s_2_12[8] = { 0xD5, 0xBE, 0xD5, 0xA1, 0xD5, 0xAE, 0xD6, 0x84 };
+static const symbol s_2_13[8] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB5, 0xD6, 0x84 };
+static const symbol s_2_14[8] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_2_15[10] = { 0xD5, 0xB4, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_2_16[6] = { 0xD5, 0xA5, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_2_17[6] = { 0xD5, 0xB8, 0xD5, 0xB6, 0xD6, 0x84 };
+static const symbol s_2_18[6] = { 0xD5, 0xAB, 0xD5, 0xB9, 0xD6, 0x84 };
+static const symbol s_2_19[6] = { 0xD5, 0xB8, 0xD6, 0x80, 0xD5, 0xA4 };
+static const symbol s_2_20[8] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB5, 0xD5, 0xA9 };
+static const symbol s_2_21[4] = { 0xD6, 0x81, 0xD5, 0xAB };
+static const symbol s_2_22[8] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB0, 0xD5, 0xAB };
+static const symbol s_2_23[4] = { 0xD5, 0xAB, 0xD5, 0xAC };
+static const symbol s_2_24[6] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xAF };
+static const symbol s_2_25[4] = { 0xD5, 0xA1, 0xD5, 0xAF };
+static const symbol s_2_26[6] = { 0xD5, 0xB5, 0xD5, 0xA1, 0xD5, 0xAF };
+static const symbol s_2_27[8] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA1, 0xD5, 0xAF };
+static const symbol s_2_28[4] = { 0xD5, 0xAB, 0xD5, 0xAF };
+static const symbol s_2_29[8] = { 0xD5, 0xB5, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB6 };
+static const symbol s_2_30[14] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xA9, 0xD5, 0xB5, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB6 };
+static const symbol s_2_31[4] = { 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_2_32[8] = { 0xD5, 0xA1, 0xD6, 0x80, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_2_33[6] = { 0xD5, 0xBA, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_2_34[8] = { 0xD5, 0xBD, 0xD5, 0xBF, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_2_35[8] = { 0xD5, 0xA5, 0xD5, 0xB2, 0xD5, 0xA7, 0xD5, 0xB6 };
+static const symbol s_2_36[6] = { 0xD5, 0xA1, 0xD5, 0xAE, 0xD5, 0xB8 };
+static const symbol s_2_37[4] = { 0xD5, 0xAB, 0xD5, 0xB9 };
+static const symbol s_2_38[6] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xBD };
+static const symbol s_2_39[8] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xBD, 0xD5, 0xBF };
+
+static const struct among a_2[40] =
+{
+{ 6, s_2_0, -1, 1, 0},
+{ 6, s_2_1, -1, 1, 0},
+{ 8, s_2_2, 1, 1, 0},
+{ 8, s_2_3, -1, 1, 0},
+{ 4, s_2_4, -1, 1, 0},
+{ 4, s_2_5, -1, 1, 0},
+{ 2, s_2_6, -1, 1, 0},
+{ 6, s_2_7, 6, 1, 0},
+{ 6, s_2_8, 6, 1, 0},
+{ 4, s_2_9, 6, 1, 0},
+{ 8, s_2_10, 9, 1, 0},
+{ 8, s_2_11, 9, 1, 0},
+{ 8, s_2_12, 6, 1, 0},
+{ 8, s_2_13, 6, 1, 0},
+{ 8, s_2_14, 6, 1, 0},
+{ 10, s_2_15, 14, 1, 0},
+{ 6, s_2_16, 6, 1, 0},
+{ 6, s_2_17, 6, 1, 0},
+{ 6, s_2_18, 6, 1, 0},
+{ 6, s_2_19, -1, 1, 0},
+{ 8, s_2_20, -1, 1, 0},
+{ 4, s_2_21, -1, 1, 0},
+{ 8, s_2_22, -1, 1, 0},
+{ 4, s_2_23, -1, 1, 0},
+{ 6, s_2_24, -1, 1, 0},
+{ 4, s_2_25, -1, 1, 0},
+{ 6, s_2_26, 25, 1, 0},
+{ 8, s_2_27, 25, 1, 0},
+{ 4, s_2_28, -1, 1, 0},
+{ 8, s_2_29, -1, 1, 0},
+{ 14, s_2_30, 29, 1, 0},
+{ 4, s_2_31, -1, 1, 0},
+{ 8, s_2_32, 31, 1, 0},
+{ 6, s_2_33, 31, 1, 0},
+{ 8, s_2_34, 31, 1, 0},
+{ 8, s_2_35, -1, 1, 0},
+{ 6, s_2_36, -1, 1, 0},
+{ 4, s_2_37, -1, 1, 0},
+{ 6, s_2_38, -1, 1, 0},
+{ 8, s_2_39, -1, 1, 0}
+};
+
+static const symbol s_3_0[4] = { 0xD5, 0xA5, 0xD6, 0x80 };
+static const symbol s_3_1[6] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80 };
+static const symbol s_3_2[2] = { 0xD6, 0x81 };
+static const symbol s_3_3[6] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD6, 0x81 };
+static const symbol s_3_4[4] = { 0xD5, 0xAB, 0xD6, 0x81 };
+static const symbol s_3_5[8] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xAB, 0xD6, 0x81 };
+static const symbol s_3_6[10] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xAB, 0xD6, 0x81 };
+static const symbol s_3_7[6] = { 0xD6, 0x81, 0xD5, 0xAB, 0xD6, 0x81 };
+static const symbol s_3_8[10] = { 0xD5, 0xBE, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xAB, 0xD6, 0x81 };
+static const symbol s_3_9[8] = { 0xD5, 0xB8, 0xD5, 0xBB, 0xD5, 0xAB, 0xD6, 0x81 };
+static const symbol s_3_10[6] = { 0xD5, 0xBE, 0xD5, 0xAB, 0xD6, 0x81 };
+static const symbol s_3_11[4] = { 0xD5, 0xB8, 0xD6, 0x81 };
+static const symbol s_3_12[4] = { 0xD5, 0xBD, 0xD5, 0xA1 };
+static const symbol s_3_13[4] = { 0xD5, 0xBE, 0xD5, 0xA1 };
+static const symbol s_3_14[6] = { 0xD5, 0xA1, 0xD5, 0xB4, 0xD5, 0xA2 };
+static const symbol s_3_15[2] = { 0xD5, 0xA4 };
+static const symbol s_3_16[6] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xA4 };
+static const symbol s_3_17[8] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xA4 };
+static const symbol s_3_18[6] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xA4 };
+static const symbol s_3_19[6] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA4 };
+static const symbol s_3_20[14] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xA9, 0xD5, 0xB5, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA4 };
+static const symbol s_3_21[8] = { 0xD5, 0xBE, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA4 };
+static const symbol s_3_22[6] = { 0xD5, 0xB8, 0xD5, 0xBB, 0xD5, 0xA4 };
+static const symbol s_3_23[2] = { 0xD5, 0xA8 };
+static const symbol s_3_24[6] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xA8 };
+static const symbol s_3_25[8] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xA8 };
+static const symbol s_3_26[6] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA8 };
+static const symbol s_3_27[14] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xA9, 0xD5, 0xB5, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA8 };
+static const symbol s_3_28[8] = { 0xD5, 0xBE, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xA8 };
+static const symbol s_3_29[6] = { 0xD5, 0xB8, 0xD5, 0xBB, 0xD5, 0xA8 };
+static const symbol s_3_30[2] = { 0xD5, 0xAB };
+static const symbol s_3_31[6] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xAB };
+static const symbol s_3_32[8] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xAB };
+static const symbol s_3_33[4] = { 0xD5, 0xBE, 0xD5, 0xAB };
+static const symbol s_3_34[10] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB4 };
+static const symbol s_3_35[12] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB4 };
+static const symbol s_3_36[10] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB4 };
+static const symbol s_3_37[2] = { 0xD5, 0xB6 };
+static const symbol s_3_38[6] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB6 };
+static const symbol s_3_39[8] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB6 };
+static const symbol s_3_40[6] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xB6 };
+static const symbol s_3_41[4] = { 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_3_42[12] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xA9, 0xD5, 0xB5, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_3_43[6] = { 0xD5, 0xBE, 0xD5, 0xA1, 0xD5, 0xB6 };
+static const symbol s_3_44[4] = { 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_3_45[8] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_3_46[10] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xAB, 0xD5, 0xB6 };
+static const symbol s_3_47[14] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xA9, 0xD5, 0xB5, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xB6 };
+static const symbol s_3_48[4] = { 0xD5, 0xB8, 0xD5, 0xBB };
+static const symbol s_3_49[14] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xA9, 0xD5, 0xB5, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xBD };
+static const symbol s_3_50[8] = { 0xD5, 0xBE, 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xBD };
+static const symbol s_3_51[6] = { 0xD5, 0xB8, 0xD5, 0xBB, 0xD5, 0xBD };
+static const symbol s_3_52[4] = { 0xD5, 0xB8, 0xD5, 0xBE };
+static const symbol s_3_53[8] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD5, 0xBE };
+static const symbol s_3_54[10] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD5, 0xBE };
+static const symbol s_3_55[8] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xB8, 0xD5, 0xBE };
+static const symbol s_3_56[6] = { 0xD5, 0xBE, 0xD5, 0xB8, 0xD5, 0xBE };
+
+static const struct among a_3[57] =
+{
+{ 4, s_3_0, -1, 1, 0},
+{ 6, s_3_1, 0, 1, 0},
+{ 2, s_3_2, -1, 1, 0},
+{ 6, s_3_3, 2, 1, 0},
+{ 4, s_3_4, 2, 1, 0},
+{ 8, s_3_5, 4, 1, 0},
+{ 10, s_3_6, 5, 1, 0},
+{ 6, s_3_7, 4, 1, 0},
+{ 10, s_3_8, 4, 1, 0},
+{ 8, s_3_9, 4, 1, 0},
+{ 6, s_3_10, 4, 1, 0},
+{ 4, s_3_11, 2, 1, 0},
+{ 4, s_3_12, -1, 1, 0},
+{ 4, s_3_13, -1, 1, 0},
+{ 6, s_3_14, -1, 1, 0},
+{ 2, s_3_15, -1, 1, 0},
+{ 6, s_3_16, 15, 1, 0},
+{ 8, s_3_17, 16, 1, 0},
+{ 6, s_3_18, 15, 1, 0},
+{ 6, s_3_19, 15, 1, 0},
+{ 14, s_3_20, 19, 1, 0},
+{ 8, s_3_21, 19, 1, 0},
+{ 6, s_3_22, 15, 1, 0},
+{ 2, s_3_23, -1, 1, 0},
+{ 6, s_3_24, 23, 1, 0},
+{ 8, s_3_25, 24, 1, 0},
+{ 6, s_3_26, 23, 1, 0},
+{ 14, s_3_27, 26, 1, 0},
+{ 8, s_3_28, 26, 1, 0},
+{ 6, s_3_29, 23, 1, 0},
+{ 2, s_3_30, -1, 1, 0},
+{ 6, s_3_31, 30, 1, 0},
+{ 8, s_3_32, 31, 1, 0},
+{ 4, s_3_33, 30, 1, 0},
+{ 10, s_3_34, -1, 1, 0},
+{ 12, s_3_35, 34, 1, 0},
+{ 10, s_3_36, -1, 1, 0},
+{ 2, s_3_37, -1, 1, 0},
+{ 6, s_3_38, 37, 1, 0},
+{ 8, s_3_39, 38, 1, 0},
+{ 6, s_3_40, 37, 1, 0},
+{ 4, s_3_41, 37, 1, 0},
+{ 12, s_3_42, 41, 1, 0},
+{ 6, s_3_43, 41, 1, 0},
+{ 4, s_3_44, 37, 1, 0},
+{ 8, s_3_45, 44, 1, 0},
+{ 10, s_3_46, 45, 1, 0},
+{ 14, s_3_47, 37, 1, 0},
+{ 4, s_3_48, -1, 1, 0},
+{ 14, s_3_49, -1, 1, 0},
+{ 8, s_3_50, -1, 1, 0},
+{ 6, s_3_51, -1, 1, 0},
+{ 4, s_3_52, -1, 1, 0},
+{ 8, s_3_53, 52, 1, 0},
+{ 10, s_3_54, 53, 1, 0},
+{ 8, s_3_55, 52, 1, 0},
+{ 6, s_3_56, 52, 1, 0}
+};
+
+static const unsigned char g_v[] = { 209, 4, 128, 0, 18 };
+
+
+static int r_mark_regions(struct SN_env * z) {
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ {
+ int ret = out_grouping_U(z, g_v, 1377, 1413, 1);
+ if (ret < 0) goto lab0;
+ z->c += ret;
+ }
+ z->I[1] = z->c;
+ {
+ int ret = in_grouping_U(z, g_v, 1377, 1413, 1);
+ if (ret < 0) goto lab0;
+ z->c += ret;
+ }
+ {
+ int ret = out_grouping_U(z, g_v, 1377, 1413, 1);
+ if (ret < 0) goto lab0;
+ z->c += ret;
+ }
+ {
+ int ret = in_grouping_U(z, g_v, 1377, 1413, 1);
+ if (ret < 0) goto lab0;
+ z->c += ret;
+ }
+ z->I[0] = z->c;
+ lab0:
+ z->c = c1;
+ }
+ return 1;
+}
+
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
+ return 1;
+}
+
+static int r_adjective(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_0, 23))) return 0;
+ z->bra = z->c;
+ { int ret = slice_del(z);
+ if (ret < 0) return ret;
+ }
+ return 1;
+}
+
+static int r_verb(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_1, 71))) return 0;
+ z->bra = z->c;
+ { int ret = slice_del(z);
+ if (ret < 0) return ret;
+ }
+ return 1;
+}
+
+static int r_noun(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_2, 40))) return 0;
+ z->bra = z->c;
+ { int ret = slice_del(z);
+ if (ret < 0) return ret;
+ }
+ return 1;
+}
+
+static int r_ending(struct SN_env * z) {
+ z->ket = z->c;
+ if (!(find_among_b(z, a_3, 57))) return 0;
+ z->bra = z->c;
+ { int ret = r_R2(z);
+ if (ret <= 0) return ret;
+ }
+ { int ret = slice_del(z);
+ if (ret < 0) return ret;
+ }
+ return 1;
+}
+
+extern int armenian_UTF_8_stem(struct SN_env * z) {
+
+ { int ret = r_mark_regions(z);
+ if (ret < 0) return ret;
+ }
+ z->lb = z->c; z->c = z->l;
+
+
+ { int mlimit1;
+ if (z->c < z->I[1]) return 0;
+ mlimit1 = z->lb; z->lb = z->I[1];
+ { int m2 = z->l - z->c; (void)m2;
+ { int ret = r_ending(z);
+ if (ret < 0) return ret;
+ }
+ z->c = z->l - m2;
+ }
+ { int m3 = z->l - z->c; (void)m3;
+ { int ret = r_verb(z);
+ if (ret < 0) return ret;
+ }
+ z->c = z->l - m3;
+ }
+ { int m4 = z->l - z->c; (void)m4;
+ { int ret = r_adjective(z);
+ if (ret < 0) return ret;
+ }
+ z->c = z->l - m4;
+ }
+ { int m5 = z->l - z->c; (void)m5;
+ { int ret = r_noun(z);
+ if (ret < 0) return ret;
+ }
+ z->c = z->l - m5;
+ }
+ z->lb = mlimit1;
+ }
+ z->c = z->lb;
+ return 1;
+}
+
+extern struct SN_env * armenian_UTF_8_create_env(void) { return SN_create_env(0, 2); }
+
+extern void armenian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+
diff --git a/src/backend/snowball/libstemmer/stem_UTF_8_basque.c b/src/backend/snowball/libstemmer/stem_UTF_8_basque.c
index f21f53165b8a1..d6beab6df92d0 100644
--- a/src/backend/snowball/libstemmer/stem_UTF_8_basque.c
+++ b/src/backend/snowball/libstemmer/stem_UTF_8_basque.c
@@ -1,4 +1,4 @@
-/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
+/* Generated by Snowball 2.1.0 - https://snowballstem.org/ */
#include "header.h"
@@ -140,115 +140,115 @@ 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}
+{ 4, s_0_0, -1, 1, 0},
+{ 5, s_0_1, 0, 1, 0},
+{ 5, s_0_2, 0, 1, 0},
+{ 5, s_0_3, 0, 1, 0},
+{ 6, s_0_4, -1, 1, 0},
+{ 5, s_0_5, -1, 1, 0},
+{ 6, s_0_6, -1, 1, 0},
+{ 7, s_0_7, -1, 1, 0},
+{ 5, s_0_8, -1, 1, 0},
+{ 5, s_0_9, -1, 1, 0},
+{ 5, s_0_10, -1, 1, 0},
+{ 4, s_0_11, -1, 1, 0},
+{ 5, s_0_12, -1, 1, 0},
+{ 6, s_0_13, 12, 1, 0},
+{ 5, s_0_14, -1, 1, 0},
+{ 6, s_0_15, -1, 2, 0},
+{ 6, s_0_16, -1, 1, 0},
+{ 2, s_0_17, -1, 1, 0},
+{ 5, s_0_18, 17, 1, 0},
+{ 2, s_0_19, -1, 1, 0},
+{ 4, s_0_20, -1, 1, 0},
+{ 4, s_0_21, -1, 1, 0},
+{ 4, s_0_22, -1, 1, 0},
+{ 5, s_0_23, -1, 1, 0},
+{ 6, s_0_24, 23, 1, 0},
+{ 4, s_0_25, -1, 1, 0},
+{ 4, s_0_26, -1, 1, 0},
+{ 6, s_0_27, -1, 1, 0},
+{ 3, s_0_28, -1, 1, 0},
+{ 4, s_0_29, 28, 1, 0},
+{ 7, s_0_30, 29, 4, 0},
+{ 4, s_0_31, 28, 1, 0},
+{ 4, s_0_32, 28, 1, 0},
+{ 4, s_0_33, -1, 1, 0},
+{ 5, s_0_34, 33, 1, 0},
+{ 4, s_0_35, -1, 1, 0},
+{ 4, s_0_36, -1, 1, 0},
+{ 4, s_0_37, -1, 1, 0},
+{ 4, s_0_38, -1, 1, 0},
+{ 3, s_0_39, -1, 1, 0},
+{ 4, s_0_40, 39, 1, 0},
+{ 6, s_0_41, -1, 1, 0},
+{ 3, s_0_42, -1, 1, 0},
+{ 6, s_0_43, 42, 1, 0},
+{ 3, s_0_44, -1, 2, 0},
+{ 6, s_0_45, 44, 1, 0},
+{ 6, s_0_46, 44, 1, 0},
+{ 6, s_0_47, 44, 1, 0},
+{ 3, s_0_48, -1, 1, 0},
+{ 4, s_0_49, 48, 1, 0},
+{ 4, s_0_50, 48, 1, 0},
+{ 4, s_0_51, 48, 1, 0},
+{ 5, s_0_52, -1, 1, 0},
+{ 5, s_0_53, -1, 1, 0},
+{ 5, s_0_54, -1, 1, 0},
+{ 2, s_0_55, -1, 1, 0},
+{ 4, s_0_56, 55, 1, 0},
+{ 5, s_0_57, 55, 1, 0},
+{ 6, s_0_58, 55, 1, 0},
+{ 4, s_0_59, -1, 1, 0},
+{ 4, s_0_60, -1, 1, 0},
+{ 3, s_0_61, -1, 1, 0},
+{ 4, s_0_62, 61, 1, 0},
+{ 3, s_0_63, -1, 1, 0},
+{ 4, s_0_64, -1, 1, 0},
+{ 5, s_0_65, 64, 1, 0},
+{ 2, s_0_66, -1, 1, 0},
+{ 3, s_0_67, -1, 1, 0},
+{ 4, s_0_68, 67, 1, 0},
+{ 4, s_0_69, 67, 1, 0},
+{ 4, s_0_70, 67, 1, 0},
+{ 5, s_0_71, 70, 1, 0},
+{ 5, s_0_72, -1, 2, 0},
+{ 5, s_0_73, -1, 1, 0},
+{ 5, s_0_74, -1, 1, 0},
+{ 6, s_0_75, 74, 1, 0},
+{ 2, s_0_76, -1, 1, 0},
+{ 3, s_0_77, 76, 1, 0},
+{ 4, s_0_78, 77, 1, 0},
+{ 3, s_0_79, 76, 1, 0},
+{ 4, s_0_80, 76, 1, 0},
+{ 7, s_0_81, -1, 3, 0},
+{ 3, s_0_82, -1, 1, 0},
+{ 3, s_0_83, -1, 1, 0},
+{ 3, s_0_84, -1, 1, 0},
+{ 5, s_0_85, 84, 1, 0},
+{ 4, s_0_86, -1, 1, 0},
+{ 5, s_0_87, 86, 1, 0},
+{ 3, s_0_88, -1, 1, 0},
+{ 5, s_0_89, -1, 1, 0},
+{ 2, s_0_90, -1, 1, 0},
+{ 3, s_0_91, 90, 1, 0},
+{ 3, s_0_92, -1, 1, 0},
+{ 4, s_0_93, -1, 1, 0},
+{ 2, s_0_94, -1, 1, 0},
+{ 3, s_0_95, 94, 1, 0},
+{ 4, s_0_96, -1, 1, 0},
+{ 2, s_0_97, -1, 1, 0},
+{ 5, s_0_98, -1, 1, 0},
+{ 2, s_0_99, -1, 1, 0},
+{ 3, s_0_100, 99, 1, 0},
+{ 6, s_0_101, 100, 1, 0},
+{ 4, s_0_102, 100, 1, 0},
+{ 6, s_0_103, 99, 5, 0},
+{ 2, s_0_104, -1, 1, 0},
+{ 5, s_0_105, 104, 1, 0},
+{ 4, s_0_106, 104, 1, 0},
+{ 5, s_0_107, -1, 1, 0},
+{ 5, s_0_108, -1, 1, 0}
};
static const symbol s_1_0[3] = { 'a', 'd', 'a' };
@@ -549,301 +549,301 @@ 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}
+{ 3, s_1_0, -1, 1, 0},
+{ 4, s_1_1, 0, 1, 0},
+{ 4, s_1_2, -1, 1, 0},
+{ 5, s_1_3, -1, 1, 0},
+{ 5, s_1_4, -1, 1, 0},
+{ 5, s_1_5, -1, 1, 0},
+{ 5, s_1_6, -1, 1, 0},
+{ 6, s_1_7, 6, 1, 0},
+{ 6, s_1_8, 6, 1, 0},
+{ 5, s_1_9, -1, 1, 0},
+{ 5, s_1_10, -1, 1, 0},
+{ 6, s_1_11, 10, 1, 0},
+{ 5, s_1_12, -1, 1, 0},
+{ 4, s_1_13, -1, 1, 0},
+{ 5, s_1_14, -1, 1, 0},
+{ 3, s_1_15, -1, 1, 0},
+{ 4, s_1_16, 15, 1, 0},
+{ 6, s_1_17, 15, 1, 0},
+{ 4, s_1_18, 15, 1, 0},
+{ 5, s_1_19, 18, 1, 0},
+{ 3, s_1_20, -1, 1, 0},
+{ 6, s_1_21, -1, 1, 0},
+{ 3, s_1_22, -1, 1, 0},
+{ 5, s_1_23, 22, 1, 0},
+{ 5, s_1_24, 22, 1, 0},
+{ 5, s_1_25, 22, 1, 0},
+{ 5, s_1_26, -1, 1, 0},
+{ 2, s_1_27, -1, 1, 0},
+{ 4, s_1_28, 27, 1, 0},
+{ 4, s_1_29, -1, 1, 0},
+{ 5, s_1_30, -1, 1, 0},
+{ 6, s_1_31, 30, 1, 0},
+{ 6, s_1_32, -1, 1, 0},
+{ 6, s_1_33, -1, 1, 0},
+{ 4, s_1_34, -1, 1, 0},
+{ 4, s_1_35, -1, 1, 0},
+{ 5, s_1_36, 35, 1, 0},
+{ 5, s_1_37, 35, 1, 0},
+{ 5, s_1_38, -1, 1, 0},
+{ 4, s_1_39, -1, 1, 0},
+{ 3, s_1_40, -1, 1, 0},
+{ 5, s_1_41, 40, 1, 0},
+{ 3, s_1_42, -1, 1, 0},
+{ 4, s_1_43, 42, 1, 0},
+{ 4, s_1_44, -1, 1, 0},
+{ 5, s_1_45, 44, 1, 0},
+{ 5, s_1_46, 44, 1, 0},
+{ 5, s_1_47, 44, 1, 0},
+{ 4, s_1_48, -1, 1, 0},
+{ 5, s_1_49, 48, 1, 0},
+{ 5, s_1_50, 48, 1, 0},
+{ 6, s_1_51, -1, 2, 0},
+{ 6, s_1_52, -1, 1, 0},
+{ 6, s_1_53, -1, 1, 0},
+{ 5, s_1_54, -1, 1, 0},
+{ 4, s_1_55, -1, 1, 0},
+{ 3, s_1_56, -1, 1, 0},
+{ 4, s_1_57, -1, 1, 0},
+{ 5, s_1_58, -1, 1, 0},
+{ 6, s_1_59, -1, 1, 0},
+{ 2, s_1_60, -1, 1, 0},
+{ 4, s_1_61, 60, 3, 0},
+{ 5, s_1_62, 60, 10, 0},
+{ 3, s_1_63, 60, 1, 0},
+{ 3, s_1_64, 60, 1, 0},
+{ 3, s_1_65, 60, 1, 0},
+{ 6, s_1_66, -1, 1, 0},
+{ 4, s_1_67, -1, 1, 0},
+{ 5, s_1_68, -1, 1, 0},
+{ 5, s_1_69, -1, 1, 0},
+{ 4, s_1_70, -1, 1, 0},
+{ 3, s_1_71, -1, 1, 0},
+{ 2, s_1_72, -1, 1, 0},
+{ 4, s_1_73, 72, 1, 0},
+{ 3, s_1_74, 72, 1, 0},
+{ 7, s_1_75, 74, 1, 0},
+{ 7, s_1_76, 74, 1, 0},
+{ 6, s_1_77, 74, 1, 0},
+{ 5, s_1_78, 72, 1, 0},
+{ 6, s_1_79, 78, 1, 0},
+{ 4, s_1_80, 72, 1, 0},
+{ 4, s_1_81, 72, 1, 0},
+{ 5, s_1_82, 72, 1, 0},
+{ 3, s_1_83, 72, 1, 0},
+{ 4, s_1_84, 83, 1, 0},
+{ 5, s_1_85, 83, 1, 0},
+{ 6, s_1_86, 85, 1, 0},
+{ 5, s_1_87, -1, 1, 0},
+{ 6, s_1_88, 87, 1, 0},
+{ 4, s_1_89, -1, 1, 0},
+{ 4, s_1_90, -1, 1, 0},
+{ 3, s_1_91, -1, 1, 0},
+{ 5, s_1_92, 91, 1, 0},
+{ 4, s_1_93, 91, 1, 0},
+{ 3, s_1_94, -1, 1, 0},
+{ 5, s_1_95, 94, 1, 0},
+{ 4, s_1_96, -1, 1, 0},
+{ 5, s_1_97, 96, 1, 0},
+{ 5, s_1_98, 96, 1, 0},
+{ 4, s_1_99, -1, 1, 0},
+{ 4, s_1_100, -1, 1, 0},
+{ 4, s_1_101, -1, 1, 0},
+{ 3, s_1_102, -1, 1, 0},
+{ 4, s_1_103, 102, 1, 0},
+{ 4, s_1_104, 102, 1, 0},
+{ 4, s_1_105, -1, 1, 0},
+{ 4, s_1_106, -1, 1, 0},
+{ 4, s_1_107, -1, 1, 0},
+{ 2, s_1_108, -1, 1, 0},
+{ 3, s_1_109, 108, 1, 0},
+{ 4, s_1_110, 109, 1, 0},
+{ 5, s_1_111, 109, 1, 0},
+{ 5, s_1_112, 109, 1, 0},
+{ 4, s_1_113, 109, 1, 0},
+{ 5, s_1_114, 113, 1, 0},
+{ 5, s_1_115, 109, 1, 0},
+{ 4, s_1_116, 108, 1, 0},
+{ 4, s_1_117, 108, 1, 0},
+{ 4, s_1_118, 108, 1, 0},
+{ 3, s_1_119, 108, 2, 0},
+{ 6, s_1_120, 108, 1, 0},
+{ 5, s_1_121, 108, 1, 0},
+{ 3, s_1_122, 108, 1, 0},
+{ 2, s_1_123, -1, 1, 0},
+{ 3, s_1_124, 123, 1, 0},
+{ 2, s_1_125, -1, 1, 0},
+{ 3, s_1_126, 125, 1, 0},
+{ 4, s_1_127, 126, 1, 0},
+{ 3, s_1_128, 125, 1, 0},
+{ 3, s_1_129, -1, 1, 0},
+{ 6, s_1_130, 129, 1, 0},
+{ 5, s_1_131, 129, 1, 0},
+{ 5, s_1_132, -1, 1, 0},
+{ 5, s_1_133, -1, 1, 0},
+{ 5, s_1_134, -1, 1, 0},
+{ 4, s_1_135, -1, 1, 0},
+{ 3, s_1_136, -1, 1, 0},
+{ 6, s_1_137, 136, 1, 0},
+{ 5, s_1_138, 136, 1, 0},
+{ 4, s_1_139, -1, 1, 0},
+{ 3, s_1_140, -1, 1, 0},
+{ 4, s_1_141, 140, 1, 0},
+{ 2, s_1_142, -1, 1, 0},
+{ 3, s_1_143, 142, 1, 0},
+{ 5, s_1_144, 142, 1, 0},
+{ 3, s_1_145, 142, 2, 0},
+{ 6, s_1_146, 145, 1, 0},
+{ 5, s_1_147, 145, 1, 0},
+{ 6, s_1_148, 145, 1, 0},
+{ 6, s_1_149, 145, 1, 0},
+{ 6, s_1_150, 145, 1, 0},
+{ 4, s_1_151, -1, 1, 0},
+{ 4, s_1_152, -1, 1, 0},
+{ 4, s_1_153, -1, 1, 0},
+{ 4, s_1_154, -1, 1, 0},
+{ 5, s_1_155, 154, 1, 0},
+{ 5, s_1_156, 154, 1, 0},
+{ 4, s_1_157, -1, 1, 0},
+{ 2, s_1_158, -1, 1, 0},
+{ 4, s_1_159, -1, 1, 0},
+{ 5, s_1_160, 159, 1, 0},
+{ 4, s_1_161, -1, 1, 0},
+{ 3, s_1_162, -1, 1, 0},
+{ 4, s_1_163, -1, 1, 0},
+{ 2, s_1_164, -1, 1, 0},
+{ 5, s_1_165, 164, 1, 0},
+{ 3, s_1_166, 164, 1, 0},
+{ 4, s_1_167, 166, 1, 0},
+{ 2, s_1_168, -1, 1, 0},
+{ 5, s_1_169, -1, 1, 0},
+{ 2, s_1_170, -1, 1, 0},
+{ 4, s_1_171, 170, 1, 0},
+{ 4, s_1_172, 170, 1, 0},
+{ 4, s_1_173, 170, 1, 0},
+{ 4, s_1_174, -1, 1, 0},
+{ 3, s_1_175, -1, 1, 0},
+{ 2, s_1_176, -1, 1, 0},
+{ 4, s_1_177, 176, 1, 0},
+{ 5, s_1_178, 177, 1, 0},
+{ 5, s_1_179, 176, 8, 0},
+{ 5, s_1_180, 176, 1, 0},
+{ 5, s_1_181, 176, 1, 0},
+{ 3, s_1_182, -1, 1, 0},
+{ 3, s_1_183, -1, 1, 0},
+{ 4, s_1_184, 183, 1, 0},
+{ 4, s_1_185, 183, 1, 0},
+{ 4, s_1_186, -1, 1, 0},
+{ 3, s_1_187, -1, 1, 0},
+{ 2, s_1_188, -1, 1, 0},
+{ 4, s_1_189, 188, 1, 0},
+{ 2, s_1_190, -1, 1, 0},
+{ 3, s_1_191, 190, 1, 0},
+{ 3, s_1_192, 190, 1, 0},
+{ 3, s_1_193, -1, 1, 0},
+{ 4, s_1_194, 193, 1, 0},
+{ 4, s_1_195, 193, 1, 0},
+{ 4, s_1_196, 193, 1, 0},
+{ 5, s_1_197, -1, 2, 0},
+{ 5, s_1_198, -1, 1, 0},
+{ 5, s_1_199, -1, 1, 0},
+{ 4, s_1_200, -1, 1, 0},
+{ 3, s_1_201, -1, 1, 0},
+{ 2, s_1_202, -1, 1, 0},
+{ 5, s_1_203, -1, 1, 0},
+{ 3, s_1_204, -1, 1, 0},
+{ 2, s_1_205, -1, 1, 0},
+{ 2, s_1_206, -1, 1, 0},
+{ 5, s_1_207, -1, 1, 0},
+{ 5, s_1_208, -1, 1, 0},
+{ 3, s_1_209, -1, 1, 0},
+{ 4, s_1_210, 209, 1, 0},
+{ 3, s_1_211, -1, 1, 0},
+{ 3, s_1_212, -1, 1, 0},
+{ 4, s_1_213, 212, 1, 0},
+{ 2, s_1_214, -1, 4, 0},
+{ 3, s_1_215, 214, 2, 0},
+{ 6, s_1_216, 215, 1, 0},
+{ 6, s_1_217, 215, 1, 0},
+{ 5, s_1_218, 215, 1, 0},
+{ 3, s_1_219, 214, 4, 0},
+{ 4, s_1_220, 214, 4, 0},
+{ 4, s_1_221, -1, 1, 0},
+{ 5, s_1_222, 221, 1, 0},
+{ 3, s_1_223, -1, 1, 0},
+{ 3, s_1_224, -1, 1, 0},
+{ 3, s_1_225, -1, 1, 0},
+{ 4, s_1_226, -1, 1, 0},
+{ 5, s_1_227, 226, 1, 0},
+{ 5, s_1_228, -1, 1, 0},
+{ 4, s_1_229, -1, 1, 0},
+{ 5, s_1_230, 229, 1, 0},
+{ 2, s_1_231, -1, 1, 0},
+{ 3, s_1_232, 231, 1, 0},
+{ 3, s_1_233, -1, 1, 0},
+{ 2, s_1_234, -1, 1, 0},
+{ 5, s_1_235, 234, 5, 0},
+{ 4, s_1_236, 234, 1, 0},
+{ 5, s_1_237, 236, 1, 0},
+{ 3, s_1_238, 234, 1, 0},
+{ 6, s_1_239, 234, 1, 0},
+{ 3, s_1_240, 234, 1, 0},
+{ 4, s_1_241, 234, 1, 0},
+{ 8, s_1_242, 241, 6, 0},
+{ 3, s_1_243, 234, 1, 0},
+{ 2, s_1_244, -1, 1, 0},
+{ 4, s_1_245, 244, 1, 0},
+{ 2, s_1_246, -1, 1, 0},
+{ 3, s_1_247, 246, 1, 0},
+{ 5, s_1_248, 247, 9, 0},
+{ 4, s_1_249, 247, 1, 0},
+{ 4, s_1_250, 247, 1, 0},
+{ 3, s_1_251, 246, 1, 0},
+{ 4, s_1_252, 246, 1, 0},
+{ 3, s_1_253, 246, 1, 0},
+{ 3, s_1_254, -1, 1, 0},
+{ 2, s_1_255, -1, 1, 0},
+{ 3, s_1_256, 255, 1, 0},
+{ 3, s_1_257, 255, 1, 0},
+{ 3, s_1_258, -1, 1, 0},
+{ 3, s_1_259, -1, 1, 0},
+{ 6, s_1_260, 259, 1, 0},
+{ 3, s_1_261, -1, 1, 0},
+{ 2, s_1_262, -1, 1, 0},
+{ 2, s_1_263, -1, 1, 0},
+{ 3, s_1_264, 263, 1, 0},
+{ 5, s_1_265, 263, 1, 0},
+{ 5, s_1_266, 263, 7, 0},
+{ 4, s_1_267, 263, 1, 0},
+{ 4, s_1_268, 263, 1, 0},
+{ 3, s_1_269, 263, 1, 0},
+{ 4, s_1_270, 263, 1, 0},
+{ 2, s_1_271, -1, 2, 0},
+{ 3, s_1_272, 271, 1, 0},
+{ 2, s_1_273, -1, 1, 0},
+{ 3, s_1_274, -1, 1, 0},
+{ 2, s_1_275, -1, 1, 0},
+{ 5, s_1_276, 275, 1, 0},
+{ 4, s_1_277, 275, 1, 0},
+{ 4, s_1_278, -1, 1, 0},
+{ 4, s_1_279, -1, 2, 0},
+{ 4, s_1_280, -1, 1, 0},
+{ 3, s_1_281, -1, 1, 0},
+{ 2, s_1_282, -1, 1, 0},
+{ 4, s_1_283, 282, 4, 0},
+{ 5, s_1_284, 282, 1, 0},
+{ 4, s_1_285, 282, 1, 0},
+{ 3, s_1_286, -1, 1, 0},
+{ 2, s_1_287, -1, 1, 0},
+{ 3, s_1_288, 287, 1, 0},
+{ 6, s_1_289, 288, 1, 0},
+{ 1, s_1_290, -1, 1, 0},
+{ 2, s_1_291, 290, 1, 0},
+{ 4, s_1_292, 290, 1, 0},
+{ 2, s_1_293, 290, 1, 0},
+{ 5, s_1_294, 293, 1, 0}
};
static const symbol s_2_0[4] = { 'z', 'l', 'e', 'a' };
@@ -868,25 +868,25 @@ 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}
+{ 4, s_2_0, -1, 2, 0},
+{ 5, s_2_1, -1, 1, 0},
+{ 2, s_2_2, -1, 1, 0},
+{ 3, s_2_3, -1, 1, 0},
+{ 4, s_2_4, -1, 1, 0},
+{ 4, s_2_5, -1, 1, 0},
+{ 4, s_2_6, -1, 1, 0},
+{ 4, s_2_7, -1, 1, 0},
+{ 2, s_2_8, -1, 1, 0},
+{ 2, s_2_9, -1, 1, 0},
+{ 2, s_2_10, -1, 1, 0},
+{ 5, s_2_11, 10, 1, 0},
+{ 3, s_2_12, 10, 1, 0},
+{ 5, s_2_13, 12, 1, 0},
+{ 4, s_2_14, 10, 1, 0},
+{ 2, s_2_15, -1, 1, 0},
+{ 2, s_2_16, -1, 1, 0},
+{ 3, s_2_17, 16, 1, 0},
+{ 2, s_2_18, -1, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16 };
@@ -903,16 +903,16 @@ 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 */
+static int r_mark_regions(struct SN_env * z) {
+ z->I[2] = z->l;
+ z->I[1] = z->l;
+ z->I[0] = z->l;
+ { int c1 = z->c;
+ { int c2 = z->c;
+ if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab2;
+ { int c3 = z->c;
+ if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab4;
+ {
int ret = out_grouping_U(z, g_v, 97, 117, 1);
if (ret < 0) goto lab4;
z->c += ret;
@@ -920,8 +920,8 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
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 */
+ if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab2;
+ {
int ret = in_grouping_U(z, g_v, 97, 117, 1);
if (ret < 0) goto lab2;
z->c += ret;
@@ -931,10 +931,10 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
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 */
+ if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab0;
+ { int c4 = z->c;
+ if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab6;
+ {
int ret = out_grouping_U(z, g_v, 97, 117, 1);
if (ret < 0) goto lab6;
z->c += ret;
@@ -942,100 +942,100 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
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 (in_grouping_U(z, g_v, 97, 117, 0)) goto lab0;
+ { int ret = skip_utf8(z->p, z->c, z->l, 1);
if (ret < 0) goto lab0;
- z->c = ret; /* next, line 32 */
+ z->c = ret;
}
}
lab5:
;
}
lab1:
- z->I[0] = z->c; /* setmark pV, line 33 */
+ z->I[2] = z->c;
lab0:
z->c = c1;
}
- { int c5 = z->c; /* do, line 35 */
- { /* gopast */ /* grouping v, line 36 */
+ { int c5 = z->c;
+ {
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 */
+ z->I[1] = z->c;
+ {
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 */
+ z->I[0] = z->c;
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 */
+static int r_RV(struct SN_env * z) {
+ if (!(z->I[2] <= z->c)) return 0;
return 1;
}
-static int r_R2(struct SN_env * z) { /* backwardmode */
- if (!(z->I[2] <= z->c)) return 0; /* $( <= ), line 44 */
+static int r_R2(struct SN_env * z) {
+ if (!(z->I[0] <= z->c)) return 0;
return 1;
}
-static int r_R1(struct SN_env * z) { /* backwardmode */
- if (!(z->I[1] <= z->c)) return 0; /* $(