使用逆波兰表达式实现的四则运算解析库、计算
波兰计算器
暂未支持语法分析, 也就是输入错误格式的表达式也不会报错, 下一个版本将会引入
已经引入词法分析, 使用向下递归解析, 但是只支持上下两个字符之间判定, 而无法全文判定, 主要是左右括号的匹配
使用
版本 v1.0.0 这个版本不推荐用, 在逆波兰计算上有错误, 并且在词素化的环节使用的方式对维护不友好 v2.0.0 与 v1.0.0 不兼容, 完全重写的代码和重新设计的 api, 将整个分析过程规范化:用逆波兰表达式实现的计算器
词法分析
->语法分析
->转化RPN
->计算结果
功能
任意顺序的四则+-*/
运算
支持()
前端后端通用
提供直接计算函数
提供四则运算表达式转逆波兰AST
函数
提供语法分析函数(暂时只支持上下两个字符判定)
问题
引用计数
修复括号匹配的问题, 前后字符词法分析, 已经解决了括号问题了
脚本
测试: npm run test
打包: npm run build
安装
npm install --save @followwinter/rpn-calculate 使用
// 计算
rpn.calculateText(`1+2`) // 3
// 语法检测
rpn.syntaxAnalyzeText(`1+2`) // true
rpn.syntaxAnalyzeText(`)))`) // syntax error: ....
// 中缀转后缀
rpn.parseText(`1+2`) // [{"type": "TYPE_NUMBER", "value": 1}, {"type": "TYPE_NUMBER", "value": 1}, {"type": "TYPE_OPERATION_ADD","value": "+"}]
api
介绍
所有以
Text
结尾的api
都是直接封装了中间环节的
rpn.calculateText(text:String):Number
: 根据输入的表达式字符串计算结果
rpn.calculateText(`1+1`) // 2
rpn.parseText(text:String):List<RpnASTNode>
: 根据输入的表达式字符串转化成后缀表达式AST
rpn.parseText(`1+1`) // [{"type": "TYPE_NUMBER", "value": 1}, {"type": "TYPE_NUMBER", "value": 1}, {"type": "TYPE_OPERATION_ADD","value": "+"}]
rpn.syntaxAnalyzeText(text:String):true|throw error
: 根据输入的表达式字符串检测语法是否正确
rpn.syntaxAnalyzeText(`1+1`) // true 效果
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。