Mercurial > emacs
comparison src/lread.c @ 762:852a2f5838da
*** empty log message ***
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Mon, 13 Jul 1992 18:39:10 +0000 |
parents | a8d94735277e |
children | 465cf9f9153b |
comparison
equal
deleted
inserted
replaced
761:4dffad9d353d | 762:852a2f5838da |
---|---|
819 case '[': | 819 case '[': |
820 return read_vector (readcharfun); | 820 return read_vector (readcharfun); |
821 | 821 |
822 case ')': | 822 case ')': |
823 case ']': | 823 case ']': |
824 case '.': | |
825 { | 824 { |
826 register Lisp_Object val; | 825 register Lisp_Object val; |
827 XSET (val, Lisp_Internal, c); | 826 XSET (val, Lisp_Internal, c); |
828 return val; | 827 return val; |
829 } | 828 } |
904 return make_pure_string (read_buffer, p - read_buffer); | 903 return make_pure_string (read_buffer, p - read_buffer); |
905 else | 904 else |
906 return make_string (read_buffer, p - read_buffer); | 905 return make_string (read_buffer, p - read_buffer); |
907 } | 906 } |
908 | 907 |
908 case '.': | |
909 { | |
910 #ifdef LISP_FLOAT_TYPE | |
911 /* If a period is followed by a number, then we should read it | |
912 as a floating point number. Otherwise, it denotes a dotted | |
913 pair. */ | |
914 int next_char = READCHAR; | |
915 UNREAD (next_char); | |
916 | |
917 if (! isdigit (next_char)) | |
918 #endif | |
919 { | |
920 register Lisp_Object val; | |
921 XSET (val, Lisp_Internal, c); | |
922 return val; | |
923 } | |
924 | |
925 /* Otherwise, we fall through! Note that the atom-reading loop | |
926 below will now loop at least once, assuring that we will not | |
927 try to UNREAD two characters in a row. */ | |
928 } | |
909 default: | 929 default: |
910 if (c <= 040) goto retry; | 930 if (c <= 040) goto retry; |
911 { | 931 { |
912 register char *p = read_buffer; | 932 register char *p = read_buffer; |
913 | 933 |
915 register char *end = read_buffer + read_buffer_size; | 935 register char *end = read_buffer + read_buffer_size; |
916 | 936 |
917 while (c > 040 && | 937 while (c > 040 && |
918 !(c == '\"' || c == '\'' || c == ';' || c == '?' | 938 !(c == '\"' || c == '\'' || c == ';' || c == '?' |
919 || c == '(' || c == ')' | 939 || c == '(' || c == ')' |
920 #ifndef LISP_FLOAT_TYPE /* we need to see <number><dot><number> */ | 940 #ifndef LISP_FLOAT_TYPE |
941 /* If we have floating-point support, then we need | |
942 to allow <digits><dot><digits>. */ | |
921 || c =='.' | 943 || c =='.' |
922 #endif /* not LISP_FLOAT_TYPE */ | 944 #endif /* not LISP_FLOAT_TYPE */ |
923 || c == '[' || c == ']' || c == '#' | 945 || c == '[' || c == ']' || c == '#' |
924 )) | 946 )) |
925 { | 947 { |