Python写个Basic解析器(1)词法分析。

来源:互联网 发布:mac重装系统找不到磁盘 编辑:程序博客网 时间:2024/06/13 02:30

    '''
    定义代码入口点,虚拟机运行时将从它指定的地方开始运行。
    '''
    print('start:')

    '''
    定义语句解析函数映射表,不同的语句指定到对应的函数来处理。
    '''
    self._blocks = {
      BSCSM_GOTO:      self._make_goto,
      BSCSM_IF:        self._make_if,
      BSCSM_THEN:      self._make_then,
      BSCSM_ELSE:      self._make_else,
      BSCSM_DIM:       self._make_dim,
      BSCSM_FOR:       self._make_for,
      BSCSM_EXIT:      self._make_exit,
      BSCSM_NEXT:      self._make_next,
      BSCSM_CONST:     self._make_const,
      BSCSM_STATIC:    self._make_static,
      BSCSM_PRIVATE:   self._make_private,
      BSCSM_PUBLIC:    self._make_public,
      BSCSM_SUB:       self._make_func,
      BSCSM_FUNCTION:  self._make_func,
      BSCSM_DECLARE:   self._make_declare,
      BSCSM_CALL:      self._make_call,
      BSCSM_RETURN:    self._make_return,
      BSCSM_DO:        self._make_do,
      BSCSM_WHILE:     self._make_while,
      BSCSM_UNTIL:     self._make_until,
      BSCSM_LOOP:      self._make_loop,
      BSCSM_WEND:      self._make_wend,
      BSCSM_GOSUB:     self._make_call,
      BSCSM_REM:       self._make_rem,
      BSCSM_SET:       self._make_set,
      BSCSM_ERASE:     self._make_erase,
      BSCSM_SELECT:    self._make_select,
      BSCSM_CASE:      self._make_case,
      BSCSM_ADDRESSOF:   self._make_addressof}

    '''
    开始解析代码,直到代码文件全部解析结束。
    '''
    res = self._begin()

    '''
    如果解析过程中出错,这里将显示出错信息。
    '''
    if res in ParseError:
      print('编译错误:第%d行' % self._reader.line, '%d字符,' % self._reader.pos, '代码:0x%08X %s' % (res, ParseError[res]))

    '''
    指定代码入口点,虚拟机运行时将从它指定的地方开始运行。
    '''
    print('end start')