/[guile]/guile/guile-core/libguile/read.c
ViewVC logotype

Diff of /guile/guile-core/libguile/read.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.84 by hanwen, Mon Aug 5 23:11:59 2002 UTC revision 1.85 by ossau, Sat Dec 28 19:57:14 2002 UTC
# Line 339  scm_lreadr (SCM *tok_buf, SCM port, SCM Line 339  scm_lreadr (SCM *tok_buf, SCM port, SCM
339      case '(':      case '(':
340        return SCM_RECORD_POSITIONS_P        return SCM_RECORD_POSITIONS_P
341          ? scm_lreadrecparen (tok_buf, port, s_list, copy)          ? scm_lreadrecparen (tok_buf, port, s_list, copy)
342          : scm_lreadparen (tok_buf, port, s_list, copy);          : scm_lreadparen (tok_buf, port, s_list, copy SCM_ELISP_CLOSE);
343      case ')':      case ')':
344        scm_input_error (FUNC_NAME, port,"unexpected \")\"", SCM_EOL);        scm_input_error (FUNC_NAME, port,"unexpected \")\"", SCM_EOL);
345        goto tryagain;        goto tryagain;
346            
347    #ifdef SCM_ELISP_READ_EXTENSIONS
348        case '[':
349          p = scm_lreadparen (tok_buf, port, "vector", copy, ']');
350          return SCM_NULLP (p) ? scm_nullvect : scm_vector (p);
351    #endif
352      case '\'':      case '\'':
353        p = scm_sym_quote;        p = scm_sym_quote;
354        goto recquote;        goto recquote;
# Line 403  scm_lreadr (SCM *tok_buf, SCM port, SCM Line 408  scm_lreadr (SCM *tok_buf, SCM port, SCM
408        switch (c)        switch (c)
409          {          {
410          case '(':          case '(':
411            p = scm_lreadparen (tok_buf, port, "vector", copy);            p = scm_lreadparen (tok_buf, port, "vector", copy SCM_ELISP_CLOSE);
412            return SCM_NULLP (p) ? scm_nullvect : scm_vector (p);            return SCM_NULLP (p) ? scm_nullvect : scm_vector (p);
413    
414          case 't':          case 't':
# Line 629  scm_read_token (int ic, SCM *tok_buf, SC Line 634  scm_read_token (int ic, SCM *tok_buf, SC
634          {          {
635          case '(':          case '(':
636          case ')':          case ')':
637    #ifdef SCM_ELISP_READ_EXTENSIONS
638            case '[':
639            case ']':
640    #endif
641          case '"':          case '"':
642          case ';':          case ';':
643          case SCM_WHITE_SPACES:          case SCM_WHITE_SPACES:
# Line 686  _Pragma ("opt");               /* # pragma _CRI opt * Line 695  _Pragma ("opt");               /* # pragma _CRI opt *
695  #endif  #endif
696    
697  SCM  SCM
698  scm_lreadparen (SCM *tok_buf, SCM port, char *name, SCM *copy)  scm_lreadparen (SCM *tok_buf, SCM port, char *name, SCM *copy
699    #ifdef SCM_ELISP_READ_EXTENSIONS
700                    , char term_char
701    #else
702    #define term_char ')'
703    #endif
704                    )
705  #define FUNC_NAME "scm_lreadparen"  #define FUNC_NAME "scm_lreadparen"
706  {  {
707    SCM tmp;    SCM tmp;
# Line 695  scm_lreadparen (SCM *tok_buf, SCM port, Line 710  scm_lreadparen (SCM *tok_buf, SCM port,
710    int c;    int c;
711    
712    c = scm_flush_ws (port, name);    c = scm_flush_ws (port, name);
713    if (')' == c)    if (term_char == c)
714      return SCM_EOL;      return SCM_EOL;
715    scm_ungetc (c, port);    scm_ungetc (c, port);
716    if (SCM_EQ_P (scm_sym_dot, (tmp = scm_lreadr (tok_buf, port, copy))))    if (SCM_EQ_P (scm_sym_dot, (tmp = scm_lreadr (tok_buf, port, copy))))
717      {      {
718        ans = scm_lreadr (tok_buf, port, copy);        ans = scm_lreadr (tok_buf, port, copy);
719      closeit:      closeit:
720        if (')' != (c = scm_flush_ws (port, name)))        if (term_char != (c = scm_flush_ws (port, name)))
721          scm_input_error (FUNC_NAME, port, "missing close paren", SCM_EOL);          scm_input_error (FUNC_NAME, port, "missing close paren", SCM_EOL);
722        return ans;        return ans;
723      }      }
724    ans = tl = scm_cons (tmp, SCM_EOL);    ans = tl = scm_cons (tmp, SCM_EOL);
725    while (')' != (c = scm_flush_ws (port, name)))    while (term_char != (c = scm_flush_ws (port, name)))
726      {      {
727        scm_ungetc (c, port);        scm_ungetc (c, port);
728        if (SCM_EQ_P (scm_sym_dot, (tmp = scm_lreadr (tok_buf, port, copy))))        if (SCM_EQ_P (scm_sym_dot, (tmp = scm_lreadr (tok_buf, port, copy))))
# Line 721  scm_lreadparen (SCM *tok_buf, SCM port, Line 736  scm_lreadparen (SCM *tok_buf, SCM port,
736    return ans;    return ans;
737  }  }
738  #undef FUNC_NAME  #undef FUNC_NAME
739    #ifndef SCM_ELISP_READ_EXTENSIONS
740    #undef term_char
741    #endif
742    
743    
744  SCM  SCM

Legend:
Removed from v.1.84  
changed lines
  Added in v.1.85

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26