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 {