125 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			125 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(character,
							 | 
						||
| 
								 | 
							
									implements(characterp),
							 | 
						||
| 
								 | 
							
									extends(atom)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									:- info([
							 | 
						||
| 
								 | 
							
										version is 1.0,
							 | 
						||
| 
								 | 
							
										authors is 'Paulo Moura',
							 | 
						||
| 
								 | 
							
										date is 2000/7/24,
							 | 
						||
| 
								 | 
							
										comment is 'Character predicates.']).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_alpha('_').
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_alpha(Char) :-
							 | 
						||
| 
								 | 
							
										is_letter(Char).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_letter(Char) :-
							 | 
						||
| 
								 | 
							
										is_lower_case(Char).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_letter(Char) :-
							 | 
						||
| 
								 | 
							
										is_upper_case(Char).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_alphanumeric(Char) :-
							 | 
						||
| 
								 | 
							
										is_alpha(Char).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_alphanumeric(Char) :-
							 | 
						||
| 
								 | 
							
										is_dec_digit(Char).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_bin_digit(0).
							 | 
						||
| 
								 | 
							
									is_bin_digit(1).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_octal_digit(Digit) :-
							 | 
						||
| 
								 | 
							
										Digit @>= 0,
							 | 
						||
| 
								 | 
							
										Digit @=< 7.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_dec_digit(Digit) :-
							 | 
						||
| 
								 | 
							
										Digit @>= 0,
							 | 
						||
| 
								 | 
							
										Digit @=< 9.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_hex_digit(Digit) :-
							 | 
						||
| 
								 | 
							
										Digit @>= 0,
							 | 
						||
| 
								 | 
							
										Digit @=< 9.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_hex_digit(Digit) :-
							 | 
						||
| 
								 | 
							
										Digit @>= 'A',
							 | 
						||
| 
								 | 
							
										Digit @=< 'F'.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_hex_digit(Digit) :-
							 | 
						||
| 
								 | 
							
										Digit @>= a,
							 | 
						||
| 
								 | 
							
										Digit @=< f.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_lower_case(Char) :-
							 | 
						||
| 
								 | 
							
										Char @>= a,
							 | 
						||
| 
								 | 
							
										Char @=< z.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_upper_case(Char) :-
							 | 
						||
| 
								 | 
							
										Char @>= 'A',
							 | 
						||
| 
								 | 
							
										Char @=< 'Z'.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_vowel(a).
							 | 
						||
| 
								 | 
							
									is_vowel(e).
							 | 
						||
| 
								 | 
							
									is_vowel(i).
							 | 
						||
| 
								 | 
							
									is_vowel(o).
							 | 
						||
| 
								 | 
							
									is_vowel(u).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_vowel('A').
							 | 
						||
| 
								 | 
							
									is_vowel('E').
							 | 
						||
| 
								 | 
							
									is_vowel('I').
							 | 
						||
| 
								 | 
							
									is_vowel('O').
							 | 
						||
| 
								 | 
							
									is_vowel('U').
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									is_layout(' ').
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									lower_upper(a, 'A').
							 | 
						||
| 
								 | 
							
									lower_upper(b, 'B').
							 | 
						||
| 
								 | 
							
									lower_upper(c, 'C').
							 | 
						||
| 
								 | 
							
									lower_upper(d, 'D').
							 | 
						||
| 
								 | 
							
									lower_upper(e, 'E').
							 | 
						||
| 
								 | 
							
									lower_upper(f, 'F').
							 | 
						||
| 
								 | 
							
									lower_upper(g, 'G').
							 | 
						||
| 
								 | 
							
									lower_upper(h, 'H').
							 | 
						||
| 
								 | 
							
									lower_upper(i, 'I').
							 | 
						||
| 
								 | 
							
									lower_upper(j, 'J').
							 | 
						||
| 
								 | 
							
									lower_upper(k, 'K').
							 | 
						||
| 
								 | 
							
									lower_upper(l, 'L').
							 | 
						||
| 
								 | 
							
									lower_upper(m, 'M').
							 | 
						||
| 
								 | 
							
									lower_upper(n, 'N').
							 | 
						||
| 
								 | 
							
									lower_upper(o, 'O').
							 | 
						||
| 
								 | 
							
									lower_upper(p, 'P').
							 | 
						||
| 
								 | 
							
									lower_upper(q, 'Q').
							 | 
						||
| 
								 | 
							
									lower_upper(r, 'R').
							 | 
						||
| 
								 | 
							
									lower_upper(s, 'S').
							 | 
						||
| 
								 | 
							
									lower_upper(t, 'T').
							 | 
						||
| 
								 | 
							
									lower_upper(u, 'U').
							 | 
						||
| 
								 | 
							
									lower_upper(v, 'V').
							 | 
						||
| 
								 | 
							
									lower_upper(w, 'W').
							 | 
						||
| 
								 | 
							
									lower_upper(x, 'X').
							 | 
						||
| 
								 | 
							
									lower_upper(y, 'Y').
							 | 
						||
| 
								 | 
							
									lower_upper(z, 'Z').
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									lower_upper(Char, Char) :-
							 | 
						||
| 
								 | 
							
										\+ (Char @>= a, Char @=< z),
							 | 
						||
| 
								 | 
							
										\+ (Char @>= 'A', Char @=< 'Z').
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									valid(Character) :-
							 | 
						||
| 
								 | 
							
										atom(Character),
							 | 
						||
| 
								 | 
							
										atom_length(Character, 1).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 |