Mercurial > cpython-lru_cache-weakref
comparison Python/compile.c @ 5453:9c6c07d449df legacy-trunk
Get rid of obsolete support for access statement.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Fri, 09 May 1997 00:58:02 +0000 |
| parents | e926c331ebbf |
| children | 19d4a2874645 |
comparison
equal
deleted
inserted
replaced
| 5452:2a875199a71e | 5453:9c6c07d449df |
|---|---|
| 2162 i = com_newlocal_o(c, nameval); | 2162 i = com_newlocal_o(c, nameval); |
| 2163 Py_DECREF(nameval); | 2163 Py_DECREF(nameval); |
| 2164 return i; | 2164 return i; |
| 2165 } | 2165 } |
| 2166 | 2166 |
| 2167 #ifdef SUPPORT_OBSOLETE_ACCESS | |
| 2168 | |
| 2169 #define strequ(a, b) (strcmp((a), (b)) == 0) | |
| 2170 | |
| 2171 static void | |
| 2172 com_access_stmt(c, n) | |
| 2173 struct compiling *c; | |
| 2174 node *n; | |
| 2175 { | |
| 2176 int i, j, k, mode, imode; | |
| 2177 PyObject *vmode; | |
| 2178 REQ(n, access_stmt); | |
| 2179 /* 'access' NAME (',' NAME)* ':' accesstype (',' accesstype)* | |
| 2180 accesstype: NAME+ */ | |
| 2181 | |
| 2182 /* Find where the colon is */ | |
| 2183 i = 1; | |
| 2184 while (TYPE(CHILD(n,i-1)) != COLON) | |
| 2185 i += 1; | |
| 2186 | |
| 2187 /* Calculate the mode mask */ | |
| 2188 mode = 0; | |
| 2189 for (j = i; j < NCH(n); j += 2) { | |
| 2190 int r = 0, w = 0, p = 0; | |
| 2191 for (k = 0; k < NCH(CHILD(n,j)); k++) { | |
| 2192 if (strequ(STR(CHILD(CHILD(n,j),k)), "public")) | |
| 2193 p = 0; | |
| 2194 else if (strequ(STR(CHILD(CHILD(n,j),k)), "protected")) | |
| 2195 p = 1; | |
| 2196 else if (strequ(STR(CHILD(CHILD(n,j),k)), "private")) | |
| 2197 p = 2; | |
| 2198 else if (strequ(STR(CHILD(CHILD(n,j),k)), "read")) | |
| 2199 r = 1; | |
| 2200 else if (strequ(STR(CHILD(CHILD(n,j),k)), "write")) | |
| 2201 w = 1; | |
| 2202 else /* XXX should make this an exception */ | |
| 2203 fprintf(stderr, "bad access type %s\n", | |
| 2204 STR(CHILD(CHILD(n,j),k))); | |
| 2205 } | |
| 2206 if (r == 0 && w == 0) | |
| 2207 r = w = 1; | |
| 2208 if (p == 0) { | |
| 2209 if (r == 1) mode |= AC_R_PUBLIC; | |
| 2210 if (w == 1) mode |= AC_W_PUBLIC; | |
| 2211 } else if (p == 1) { | |
| 2212 if (r == 1) mode |= AC_R_PROTECTED; | |
| 2213 if (w == 1) mode |= AC_W_PROTECTED; | |
| 2214 } else { | |
| 2215 if (r == 1) mode |= AC_R_PRIVATE; | |
| 2216 if (w == 1) mode |= AC_W_PRIVATE; | |
| 2217 } | |
| 2218 } | |
| 2219 vmode = PyInt_FromLong((long)mode); | |
| 2220 imode = com_addconst(c, vmode); | |
| 2221 Py_XDECREF(vmode); | |
| 2222 for (i = 1; TYPE(CHILD(n,i-1)) != COLON; i+=2) { | |
| 2223 com_addoparg(c, LOAD_CONST, imode); | |
| 2224 com_addopname(c, ACCESS_MODE, CHILD(n, i)); | |
| 2225 } | |
| 2226 } | |
| 2227 #endif | |
| 2228 | |
| 2229 static void | 2167 static void |
| 2230 com_exec_stmt(c, n) | 2168 com_exec_stmt(c, n) |
| 2231 struct compiling *c; | 2169 struct compiling *c; |
| 2232 node *n; | 2170 node *n; |
| 2233 { | 2171 { |
| 2936 com_import_stmt(c, n); | 2874 com_import_stmt(c, n); |
| 2937 break; | 2875 break; |
| 2938 case global_stmt: | 2876 case global_stmt: |
| 2939 com_global_stmt(c, n); | 2877 com_global_stmt(c, n); |
| 2940 break; | 2878 break; |
| 2941 #ifdef SUPPORT_OBSOLETE_ACCESS | |
| 2942 case access_stmt: | |
| 2943 com_access_stmt(c, n); | |
| 2944 break; | |
| 2945 #endif | |
| 2946 case exec_stmt: | 2879 case exec_stmt: |
| 2947 com_exec_stmt(c, n); | 2880 com_exec_stmt(c, n); |
| 2948 break; | 2881 break; |
| 2949 case assert_stmt: | 2882 case assert_stmt: |
| 2950 com_assert_stmt(c, n); | 2883 com_assert_stmt(c, n); |
