Exemplo n.º 1
0
 def get_identifier_or_keyword(self):
     i = bar_count = 0
     id = token_buffer = ""
     token = Token(Token.ID)
     if self.ch == '_':
         self.Chario.put_error("illegal leading '_'")
     while True:
         self.ch = self.ch.upper()
         i += 1
         token_buffer += self.ch
         if i <= MAX_KEY_SPELLING:
             id += self.ch
         if self.ch == '_':
             self.ch = self.Chario.getChar()
             if self.ch == '_':
                 bar_count += 1
             if not self.ch.isalnum() and self.ch != '_':
                 self.Chario.put_error("letter or digit expected after '_'")
         else:
             self.ch = self.Chario.getChar()
         if not self.ch.isalnum() and self.ch != '_':
             break
     if bar_count > 0:
         self.Chario.put_error("letter or digit expected after '_'")
     if i <= MAX_KEY_SPELLING:
         token = self.find_token(self.keywords, id)
         if token.code == Token.ERROR:
             token.code = Token.ID
     if token.code == Token.ID:
         token.string = str(token_buffer)