PostgreSQL Source Code git master
stem_KOI8_R_russian.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

struct SN_envrussian_KOI8_R_create_env (void)
 
void russian_KOI8_R_close_env (struct SN_env *z)
 
int russian_KOI8_R_stem (struct SN_env *z)
 

Function Documentation

◆ russian_KOI8_R_close_env()

void russian_KOI8_R_close_env ( struct SN_env z)

Definition at line 704 of file stem_KOI8_R_russian.c.

704 {
705 SN_delete_env(z);
706}
void SN_delete_env(struct SN_env *z)
Definition: api.c:18

References SN_delete_env().

◆ russian_KOI8_R_create_env()

struct SN_env * russian_KOI8_R_create_env ( void  )

Definition at line 695 of file stem_KOI8_R_russian.c.

695 {
696 struct SN_env * z = SN_new_env(sizeof(SN_local));
697 if (z) {
698 ((SN_local *)z)->i_p2 = 0;
699 ((SN_local *)z)->i_pV = 0;
700 }
701 return z;
702}
struct SN_env * SN_new_env(int alloc_size)
Definition: api.c:5
Definition: api.h:15

References SN_new_env().

◆ russian_KOI8_R_stem()

int russian_KOI8_R_stem ( struct SN_env z)

Definition at line 572 of file stem_KOI8_R_russian.c.

572 {
573 {
574 int v_1 = z->c;
575 while (1) {
576 int v_2 = z->c;
577 while (1) {
578 int v_3 = z->c;
579 z->bra = z->c;
580 if (z->c == z->l || z->p[z->c] != 0xA3) goto lab2;
581 z->c++;
582 z->ket = z->c;
583 z->c = v_3;
584 break;
585 lab2:
586 z->c = v_3;
587 if (z->c >= z->l) goto lab1;
588 z->c++;
589 }
590 {
591 int ret = slice_from_s(z, 1, s_0);
592 if (ret < 0) return ret;
593 }
594 continue;
595 lab1:
596 z->c = v_2;
597 break;
598 }
599 z->c = v_1;
600 }
601 {
602 int ret = r_mark_regions(z);
603 if (ret < 0) return ret;
604 }
605 z->lb = z->c; z->c = z->l;
606 {
607 int v_4;
608 if (z->c < ((SN_local *)z)->i_pV) return 0;
609 v_4 = z->lb; z->lb = ((SN_local *)z)->i_pV;
610 {
611 int v_5 = z->l - z->c;
612 do {
613 int v_6 = z->l - z->c;
614 {
615 int ret = r_perfective_gerund(z);
616 if (ret == 0) goto lab4;
617 if (ret < 0) return ret;
618 }
619 break;
620 lab4:
621 z->c = z->l - v_6;
622 {
623 int v_7 = z->l - z->c;
624 {
625 int ret = r_reflexive(z);
626 if (ret == 0) { z->c = z->l - v_7; goto lab5; }
627 if (ret < 0) return ret;
628 }
629 lab5:
630 ;
631 }
632 do {
633 int v_8 = z->l - z->c;
634 {
635 int ret = r_adjectival(z);
636 if (ret == 0) goto lab6;
637 if (ret < 0) return ret;
638 }
639 break;
640 lab6:
641 z->c = z->l - v_8;
642 {
643 int ret = r_verb(z);
644 if (ret == 0) goto lab7;
645 if (ret < 0) return ret;
646 }
647 break;
648 lab7:
649 z->c = z->l - v_8;
650 {
651 int ret = r_noun(z);
652 if (ret == 0) goto lab3;
653 if (ret < 0) return ret;
654 }
655 } while (0);
656 } while (0);
657 lab3:
658 z->c = z->l - v_5;
659 }
660 {
661 int v_9 = z->l - z->c;
662 z->ket = z->c;
663 if (z->c <= z->lb || z->p[z->c - 1] != 0xC9) { z->c = z->l - v_9; goto lab8; }
664 z->c--;
665 z->bra = z->c;
666 {
667 int ret = slice_del(z);
668 if (ret < 0) return ret;
669 }
670 lab8:
671 ;
672 }
673 {
674 int v_10 = z->l - z->c;
675 {
676 int ret = r_derivational(z);
677 if (ret < 0) return ret;
678 }
679 z->c = z->l - v_10;
680 }
681 {
682 int v_11 = z->l - z->c;
683 {
684 int ret = r_tidy_up(z);
685 if (ret < 0) return ret;
686 }
687 z->c = z->l - v_11;
688 }
689 z->lb = v_4;
690 }
691 z->c = z->lb;
692 return 1;
693}
static int r_tidy_up(struct SN_env *z)
static int r_adjectival(struct SN_env *z)
static int r_verb(struct SN_env *z)
static int r_derivational(struct SN_env *z)
static int r_perfective_gerund(struct SN_env *z)
static int r_mark_regions(struct SN_env *z)
static int r_reflexive(struct SN_env *z)
static int r_noun(struct SN_env *z)
static const symbol s_0[]
int lb
Definition: api.h:17
symbol * p
Definition: api.h:16
int ket
Definition: api.h:17
int c
Definition: api.h:17
int bra
Definition: api.h:17
int l
Definition: api.h:17
SNOWBALL_ERR slice_from_s(struct SN_env *z, int s_size, const symbol *s)
Definition: utilities.c:432
SNOWBALL_ERR slice_del(struct SN_env *z)
Definition: utilities.c:443

References SN_env::bra, SN_env::c, SN_local::i_pV, SN_env::ket, SN_env::l, SN_env::lb, SN_env::p, r_adjectival(), r_derivational(), r_mark_regions(), r_noun(), r_perfective_gerund(), r_reflexive(), r_tidy_up(), r_verb(), s_0, slice_del(), and slice_from_s().