当前位置: 首页>>代码示例>>Python>>正文


Python Source.nextChar方法代码示例

本文整理汇总了Python中source.Source.nextChar方法的典型用法代码示例。如果您正苦于以下问题:Python Source.nextChar方法的具体用法?Python Source.nextChar怎么用?Python Source.nextChar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在source.Source的用法示例。


在下文中一共展示了Source.nextChar方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: Scanner

# 需要导入模块: from source import Source [as 别名]
# 或者: from source.Source import nextChar [as 别名]
class Scanner(object):
  def __init__(self, program):
    super(Scanner, self).__init__()
    self.source = Source(program)
    self.char = ''
    self.atomPositionEnd = TextPos()
    self.atomPositionStart = TextPos()
    self.intConst = 0
    self.strConst = ""
    self.spell = ""

    self.__nextChar()

  def __nextChar(self):
    self.char = self.source.nextChar()

  def nextSymbol(self):
    while True:
      if self.char == -1:
        return SymType.others
      while str.isspace(self.char):
        self.__nextChar()
        if self.char == -1:
          return SymType.others
      if not str.isspace(self.char):
        break

    self.atomPositionStart = copy(self.source.textPos)
    self.atomPositionEnd = self.source.textPos

    if str.isalpha(self.char):
      self.spell = ""
      while True:
        self.spell = self.spell + self.char
        self.__nextChar()
        if not str.isalnum(self.char):
          break
      if KT.get(self.spell, -1) != -1:
        return KT[self.spell]
      else :
        return SymType.ident
    elif str.isdigit(self.char) and self.char != '0':
      num = 0
      while True:
        num = num*10 + int(self.char)
        self.__nextChar()
        if not str.isdigit(self.char):
          break
      self.intConst = num
      return SymType.intconst
    elif self.char == '0':
      self.intConst = 0
      self.__nextChar()
      if not str.isdigit(self.char) :
        return SymType.intconst
      else:
        return SymType.others
    elif self.char == '"':
      strConst = ""
      while True:
        self.__nextChar()
        strConst = strConst + self.char
        if not str.isalnum(self.char):
          break
      if self.char == '"':
        self.__nextChar()
        self.strConst = strConst[:-1]
        return SymType.charconst
      else:
        self.scanError(1)
    elif self.char == '<':
      self.__nextChar()
      if self.char == '=':
        self.__nextChar()
        return SymType.leop
      else :
        return SymType.ltop
    elif self.char == '>':
      self.__nextChar()
      if self.char == '=':
        self.__nextChar()
        return SymType.geop
      else :
        return SymType.gtop
    elif self.char == '(':
      self.__nextChar()
      return SymType.lparent
    elif self.char == ')':
      self.__nextChar()
      return SymType.rparent
    elif self.char == ',':
      self.__nextChar()
      return SymType.comma
    elif self.char == '=':
      self.__nextChar()
      return SymType.becomes
    else:
      self.__nextChar()
      return SymType.others

#.........这里部分代码省略.........
开发者ID:kawazaki0,项目名称:tkom,代码行数:103,代码来源:scanner.py


注:本文中的source.Source.nextChar方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。