一
从字符串中提取 Token 的步骤是顺序读取字符,判断字符类型,然后把 Token 的类型和值存入 Token 列表。
输入字符串处理
提取offset位置处的一个字符
如果没有后续字符则返回None
取字符的位置向后移动一位
定义字符节点
整数类型的Token
从字符串中读取字符直到字符不是整数
如果读取的内容不为空则返回整数,否则返回None
操作(+,-)类型的Token
读取一个字符,然后返回这个字符,如果字符不是+-,则返回None
二
从 Token 列表中顺序读取 Token,根据 Token 的类型生成表达式树,表达式树的叶子节点为整数,其余节点为操作符。
从 Token 列表生成表达式二叉树
取出 tokens[0],该 Token 类型为整数
从第二个 Token 开始循环取出
相邻两个 Token 的类型一样则为错误
如果 Token 为操作符,则保存为操作符节点,把前一个整数 Token 作为左子节点
如果 Token 为整数,则将该 Token 保存为右节点
三
获取输入字符串
从输入字符串获得Token列表
从Token列表生成表达式树
遍历计算表达式树并输出结果