



Descriptors (lines 2135-2189)
Back to List
Browsing parserm.h
2135 [ Descriptors o x flag cto type n;
2136 ResetDescriptors();
2137 if (wn > num_words) return 0;
2138
2139 for (flag=true : flag :) {
2140 o = NextWordStopped(); flag = false;
2141
2142 for (x=1 : x<=LanguageDescriptors-->0 : x=x+4)
2143 if (o == LanguageDescriptors-->x) {
2144 flag = true;
2145 type = LanguageDescriptors-->(x+2);
2146 if (type ~= DEFART_PK) indef_mode = true;
2147 indef_possambig = true;
2148 indef_cases = indef_cases & (LanguageDescriptors-->(x+1));
2149
2150 if (type == POSSESS_PK) {
2151 cto = LanguageDescriptors-->(x+3);
2152 switch (cto) {
2153 0: indef_type = indef_type | MY_BIT;
2154 1: indef_type = indef_type | THAT_BIT;
2155 default:
2156 indef_owner = PronounValue(cto);
2157 if (indef_owner == NULL) indef_owner = InformParser;
2158 }
2159 }
2160
2161 if (type == light) indef_type = indef_type | LIT_BIT;
2162 if (type == -light) indef_type = indef_type | UNLIT_BIT;
2163 }
2164
2165 if (o == OTHER1__WD or OTHER2__WD or OTHER3__WD) {
2166 indef_mode = 1; flag = 1;
2167 indef_type = indef_type | OTHER_BIT;
2168 }
2169 if (o == ALL1__WD or ALL2__WD or ALL3__WD or ALL4__WD or ALL5__WD) {
2170 indef_mode = 1; flag = 1; indef_wanted = 100;
2171 if (take_all_rule == 1) take_all_rule = 2;
2172 indef_type = indef_type | PLURAL_BIT;
2173 }
2174 if (allow_plurals) {
2175 n = TryNumber(wn-1);
2176 if (n == 1) { indef_mode = 1; flag = 1; }
2177 if (n > 1) {
2178 indef_guess_p = 1;
2179 indef_mode = 1; flag = 1; indef_wanted = n;
2180 indef_nspec_at = wn-1;
2181 indef_type = indef_type | PLURAL_BIT;
2182 }
2183 }
2184 if (flag == 1 && NextWordStopped() ~= OF1__WD or OF2__WD or OF3__WD or OF4__WD)
2185 wn--; ! Skip 'of' after these
2186 }
2187 wn--;
2188 return 0;
2189 ];
Last updated 27 February 2004. The librarian in charge of this page is Graham Nelson (graham@gnelson.demon.co.uk) assisted by C Knight. Please email any comments, suggestions or corrections to cedenqs@inform-fiction.org.