/[bison]/bison/src/reader.c
ViewVC logotype

Diff of /bison/src/reader.c

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

revision 1.167 by akim, Mon Apr 22 08:21:54 2002 UTC revision 1.168 by akim, Mon Apr 22 08:22:11 2002 UTC
# Line 1678  read_additionnal_code (void) Line 1678  read_additionnal_code (void)
1678  static void  static void
1679  token_translations_init (void)  token_translations_init (void)
1680  {  {
1681    int last_user_token_number = 256;    int num_256_available_p = TRUE;
1682    int i;    int i;
1683    
1684    /* Set the user numbers. */    /* Find the highest user token number, and whether 256, the POSIX
1685         preferred user token number for the error token, is used.  */
1686      max_user_token_number = 0;
1687      for (i = 0; i < ntokens; ++i)
1688        {
1689          symbol_t *this = symbols[i];
1690          if (this->user_token_number != SUNDEF)
1691            {
1692              if (this->user_token_number > max_user_token_number)
1693                max_user_token_number = this->user_token_number;
1694              if (this->user_token_number == 256)
1695                num_256_available_p = FALSE;
1696            }
1697        }
1698    
1699      /* If 256 is not used, assign it to error, to follow POSIX.  */
1700      if (num_256_available_p && errtoken->user_token_number == SUNDEF)
1701        errtoken->user_token_number = 256;
1702    
1703      /* Set the missing user numbers. */
1704      if (max_user_token_number < 256)
1705        max_user_token_number = 256;
1706    
1707    for (i = 0; i < ntokens; ++i)    for (i = 0; i < ntokens; ++i)
1708      {      {
1709        symbol_t *this = symbols[i];        symbol_t *this = symbols[i];
1710        if (this->user_token_number == SUNDEF)        if (this->user_token_number == SUNDEF)
1711          this->user_token_number = ++last_user_token_number;          this->user_token_number = ++max_user_token_number;
1712        if (this->user_token_number > max_user_token_number)        if (this->user_token_number > max_user_token_number)
1713          max_user_token_number = this->user_token_number;          max_user_token_number = this->user_token_number;
1714      }      }
# Line 1698  token_translations_init (void) Line 1720  token_translations_init (void)
1720       inputs.  */       inputs.  */
1721    for (i = 0; i < max_user_token_number + 1; i++)    for (i = 0; i < max_user_token_number + 1; i++)
1722      token_translations[i] = undeftoken->number;      token_translations[i] = undeftoken->number;
   
1723    symbols_do (symbol_translation, NULL);    symbols_do (symbol_translation, NULL);
1724  }  }
1725    
# Line 1824  reader (void) Line 1845  reader (void)
1845    errtoken = getsym ("error");    errtoken = getsym ("error");
1846    errtoken->class = token_sym;    errtoken->class = token_sym;
1847    errtoken->number = ntokens++;    errtoken->number = ntokens++;
   errtoken->user_token_number = 256;    /* Value specified by POSIX.  */  
1848    
1849    /* Construct a token that represents all undefined literal tokens.    /* Construct a token that represents all undefined literal tokens.
1850       It is always token number 2.  */       It is always token number 2.  */

Legend:
Removed from v.1.167  
changed lines
  Added in v.1.168

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