All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.tartarus.snowball.ext.GermanStemmer Maven / Gradle / Ivy

The newest version!
// This file was generated automatically by the Snowball to Java compiler
// http://snowballstem.org/
package org.tartarus.snowball.ext;
import org.tartarus.snowball.*;
/**
 * This class was automatically generated by a Snowball to Java compiler It
 * implements the stemming algorithm defined by a snowball script.
 */
public class GermanStemmer extends SnowballStemmer{
	private static final long serialVersionUID=1L;
	private final static Among a_0[]={
		new Among("",-1,5),
		new Among("U",0,2),
		new Among("Y",0,1),
		new Among("\u00C3\u00A4",0,3),
		new Among("\u00C3\u00B6",0,4),
		new Among("\u00C3\u00BC",0,2)
	};
	private final static Among a_1[]={
		new Among("e",-1,2),
		new Among("em",-1,1),
		new Among("en",-1,2),
		new Among("ern",-1,1),
		new Among("er",-1,1),
		new Among("s",-1,3),
		new Among("es",5,2)
	};
	private final static Among a_2[]={
		new Among("en",-1,1),
		new Among("er",-1,1),
		new Among("st",-1,2),
		new Among("est",2,1)
	};
	private final static Among a_3[]={
		new Among("ig",-1,1),
		new Among("lich",-1,1)
	};
	private final static Among a_4[]={
		new Among("end",-1,1),
		new Among("ig",-1,2),
		new Among("ung",-1,1),
		new Among("lich",-1,3),
		new Among("isch",-1,2),
		new Among("ik",-1,2),
		new Among("heit",-1,3),
		new Among("keit",-1,4)
	};
	private static final char g_v[]={17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8};
	private static final char g_s_ending[]={117,30,5};
	private static final char g_st_ending[]={117,30,4};
	private int I_x;
	private int I_p2;
	private int I_p1;
	private boolean r_prelude(){
		// (, line 33
		// test, line 35
		int v_1=cursor;
		// repeat, line 35
		replab0:
		while(true){
			int v_2=cursor;
			lab1:
			do{
				// (, line 35
				// or, line 38
				lab2:
				do{
					int v_3=cursor;
					lab3:
					do{
						// (, line 36
						// [, line 37
						bra=cursor;
						// literal, line 37
						if(!(eq_s("\u00C3\u009F"))){
							break lab3;
						}
						// ], line 37
						ket=cursor;
						// <-, line 37
						slice_from("ss");
						break lab2;
					}while(false);
					cursor=v_3;
					// next, line 38
					if(cursor>=limit){
						break lab1;
					}
					cursor++;
				}while(false);
				continue replab0;
			}while(false);
			cursor=v_2;
			break replab0;
		}
		cursor=v_1;
		// repeat, line 41
		replab4:
		while(true){
			int v_4=cursor;
			lab5:
			do{
				// goto, line 41
				golab6:
				while(true){
					int v_5=cursor;
					lab7:
					do{
						// (, line 41
						if(!(in_grouping(g_v,97,252))){
							break lab7;
						}
						// [, line 42
						bra=cursor;
						// or, line 42
						lab8:
						do{
							int v_6=cursor;
							lab9:
							do{
								// (, line 42
								// literal, line 42
								if(!(eq_s("u"))){
									break lab9;
								}
								// ], line 42
								ket=cursor;
								if(!(in_grouping(g_v,97,252))){
									break lab9;
								}
								// <-, line 42
								slice_from("U");
								break lab8;
							}while(false);
							cursor=v_6;
							// (, line 43
							// literal, line 43
							if(!(eq_s("y"))){
								break lab7;
							}
							// ], line 43
							ket=cursor;
							if(!(in_grouping(g_v,97,252))){
								break lab7;
							}
							// <-, line 43
							slice_from("Y");
						}while(false);
						cursor=v_5;
						break golab6;
					}while(false);
					cursor=v_5;
					if(cursor>=limit){
						break lab5;
					}
					cursor++;
				}
				continue replab4;
			}while(false);
			cursor=v_4;
			break replab4;
		}
		return true;
	}
	private boolean r_mark_regions(){
		// (, line 47
		I_p1=limit;
		I_p2=limit;
		// test, line 52
		int v_1=cursor;
		// (, line 52
		// hop, line 52
		{
			int c=cursor+3;
			if(0>c||c>limit){
				return false;
			}
			cursor=c;
		}
		// setmark x, line 52
		I_x=cursor;
		cursor=v_1;
		// gopast, line 54
		golab0:
		while(true){
			lab1:
			do{
				if(!(in_grouping(g_v,97,252))){
					break lab1;
				}
				break golab0;
			}while(false);
			if(cursor>=limit){
				return false;
			}
			cursor++;
		}
		// gopast, line 54
		golab2:
		while(true){
			lab3:
			do{
				if(!(out_grouping(g_v,97,252))){
					break lab3;
				}
				break golab2;
			}while(false);
			if(cursor>=limit){
				return false;
			}
			cursor++;
		}
		// setmark p1, line 54
		I_p1=cursor;
		// try, line 55
		lab4:
		do{
			// (, line 55
			if(!(I_p1=limit){
				return false;
			}
			cursor++;
		}
		// gopast, line 56
		golab7:
		while(true){
			lab8:
			do{
				if(!(out_grouping(g_v,97,252))){
					break lab8;
				}
				break golab7;
			}while(false);
			if(cursor>=limit){
				return false;
			}
			cursor++;
		}
		// setmark p2, line 56
		I_p2=cursor;
		return true;
	}
	private boolean r_postlude(){
		int among_var;
		// repeat, line 60
		replab0:
		while(true){
			int v_1=cursor;
			lab1:
			do{
				// (, line 60
				// [, line 62
				bra=cursor;
				// substring, line 62
				among_var=find_among(a_0);
				if(among_var==0){
					break lab1;
				}
				// ], line 62
				ket=cursor;
				switch(among_var){
					case 0:
						break lab1;
					case 1:
						// (, line 63
						// <-, line 63
						slice_from("y");
						break;
					case 2:
						// (, line 64
						// <-, line 64
						slice_from("u");
						break;
					case 3:
						// (, line 65
						// <-, line 65
						slice_from("a");
						break;
					case 4:
						// (, line 66
						// <-, line 66
						slice_from("o");
						break;
					case 5:
						// (, line 68
						// next, line 68
						if(cursor>=limit){
							break lab1;
						}
						cursor++;
						break;
				}
				continue replab0;
			}while(false);
			cursor=v_1;
			break replab0;
		}
		return true;
	}
	private boolean r_R1(){
		if(!(I_p1<=cursor)){
			return false;
		}
		return true;
	}
	private boolean r_R2(){
		if(!(I_p2<=cursor)){
			return false;
		}
		return true;
	}
	private boolean r_standard_suffix(){
		int among_var;
		// (, line 78
		// do, line 79
		int v_1=limit-cursor;
		lab0:
		do{
			// (, line 79
			// [, line 80
			ket=cursor;
			// substring, line 80
			among_var=find_among_b(a_1);
			if(among_var==0){
				break lab0;
			}
			// ], line 80
			bra=cursor;
			// call R1, line 80
			if(!r_R1()){
				break lab0;
			}
			switch(among_var){
				case 0:
					break lab0;
				case 1:
					// (, line 82
					// delete, line 82
					slice_del();
					break;
				case 2:
					// (, line 85
					// delete, line 85
					slice_del();
					// try, line 86
					int v_2=limit-cursor;
					lab1:
					do{
						// (, line 86
						// [, line 86
						ket=cursor;
						// literal, line 86
						if(!(eq_s_b("s"))){
							cursor=limit-v_2;
							break lab1;
						}
						// ], line 86
						bra=cursor;
						// literal, line 86
						if(!(eq_s_b("nis"))){
							cursor=limit-v_2;
							break lab1;
						}
						// delete, line 86
						slice_del();
					}while(false);
					break;
				case 3:
					// (, line 89
					if(!(in_grouping_b(g_s_ending,98,116))){
						break lab0;
					}
					// delete, line 89
					slice_del();
					break;
			}
		}while(false);
		cursor=limit-v_1;
		// do, line 93
		int v_3=limit-cursor;
		lab2:
		do{
			// (, line 93
			// [, line 94
			ket=cursor;
			// substring, line 94
			among_var=find_among_b(a_2);
			if(among_var==0){
				break lab2;
			}
			// ], line 94
			bra=cursor;
			// call R1, line 94
			if(!r_R1()){
				break lab2;
			}
			switch(among_var){
				case 0:
					break lab2;
				case 1:
					// (, line 96
					// delete, line 96
					slice_del();
					break;
				case 2:
					// (, line 99
					if(!(in_grouping_b(g_st_ending,98,116))){
						break lab2;
					}
					// hop, line 99
					 {
						int c=cursor-3;
						if(limit_backward>c||c>limit){
							break lab2;
						}
						cursor=c;
					}
					// delete, line 99
					slice_del();
					break;
			}
		}while(false);
		cursor=limit-v_3;
		// do, line 103
		int v_4=limit-cursor;
		lab3:
		do{
			// (, line 103
			// [, line 104
			ket=cursor;
			// substring, line 104
			among_var=find_among_b(a_4);
			if(among_var==0){
				break lab3;
			}
			// ], line 104
			bra=cursor;
			// call R2, line 104
			if(!r_R2()){
				break lab3;
			}
			switch(among_var){
				case 0:
					break lab3;
				case 1:
					// (, line 106
					// delete, line 106
					slice_del();
					// try, line 107
					int v_5=limit-cursor;
					lab4:
					do{
						// (, line 107
						// [, line 107
						ket=cursor;
						// literal, line 107
						if(!(eq_s_b("ig"))){
							cursor=limit-v_5;
							break lab4;
						}
						// ], line 107
						bra=cursor;
						// not, line 107
						{
							int v_6=limit-cursor;
							lab5:
							do{
								// literal, line 107
								if(!(eq_s_b("e"))){
									break lab5;
								}
								cursor=limit-v_5;
								break lab4;
							}while(false);
							cursor=limit-v_6;
						}
						// call R2, line 107
						if(!r_R2()){
							cursor=limit-v_5;
							break lab4;
						}
						// delete, line 107
						slice_del();
					}while(false);
					break;
				case 2: // (, line 110
				// not, line 110
				{
					int v_7=limit-cursor;
					lab6:
					do{
						// literal, line 110
						if(!(eq_s_b("e"))){
							break lab6;
						}
						break lab3;
					}while(false);
					cursor=limit-v_7;
				}
				// delete, line 110
				slice_del();
				break;
				case 3:
					// (, line 113
					// delete, line 113
					slice_del();
					// try, line 114
					int v_8=limit-cursor;
					lab7:
					do{
						// (, line 114
						// [, line 115
						ket=cursor;
						// or, line 115
						lab8:
						do{
							int v_9=limit-cursor;
							lab9:
							do{
								// literal, line 115
								if(!(eq_s_b("er"))){
									break lab9;
								}
								break lab8;
							}while(false);
							cursor=limit-v_9;
							// literal, line 115
							if(!(eq_s_b("en"))){
								cursor=limit-v_8;
								break lab7;
							}
						}while(false);
						// ], line 115
						bra=cursor;
						// call R1, line 115
						if(!r_R1()){
							cursor=limit-v_8;
							break lab7;
						}
						// delete, line 115
						slice_del();
					}while(false);
					break;
				case 4:
					// (, line 119
					// delete, line 119
					slice_del();
					// try, line 120
					int v_10=limit-cursor;
					lab10:
					do{
						// (, line 120
						// [, line 121
						ket=cursor;
						// substring, line 121
						among_var=find_among_b(a_3);
						if(among_var==0){
							cursor=limit-v_10;
							break lab10;
						}
						// ], line 121
						bra=cursor;
						// call R2, line 121
						if(!r_R2()){
							cursor=limit-v_10;
							break lab10;
						}
						switch(among_var){
							case 0:
								cursor=limit-v_10;
								break lab10;
							case 1:
								// (, line 123
								// delete, line 123
								slice_del();
								break;
						}
					}while(false);
					break;
			}
		}while(false);
		cursor=limit-v_4;
		return true;
	}
	public boolean stem(){
		// (, line 133
		// do, line 134
		int v_1=cursor;
		lab0:
		do{
			// call prelude, line 134
			if(!r_prelude()){
				break lab0;
			}
		}while(false);
		cursor=v_1;
		// do, line 135
		int v_2=cursor;
		lab1:
		do{
			// call mark_regions, line 135
			if(!r_mark_regions()){
				break lab1;
			}
		}while(false);
		cursor=v_2;
		// backwards, line 136
		limit_backward=cursor;
		cursor=limit;
		// do, line 137
		lab2:
		do{
			// call standard_suffix, line 137
			if(!r_standard_suffix()){
				break lab2;
			}
		}while(false);
		cursor=limit_backward;
		// do, line 138
		int v_4=cursor;
		lab3:
		do{
			// call postlude, line 138
			if(!r_postlude()){
				break lab3;
			}
		}while(false);
		cursor=v_4;
		return true;
	}
	public boolean equals(Object o){
		return o instanceof GermanStemmer;
	}
	public int hashCode(){
		return GermanStemmer.class.getName().hashCode();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy