Kin*_*tor 2 javascript computer-science tokenize lexer shunting-yard
我正在寻求实现Shunting-yard算法,但我需要一些帮助来确定将字符串分成其标记的最佳方法是什么.
如果您注意到,该算法的第一步是"读取令牌".这不是一件非常重要的事情.令牌可以包括数字,运算符和parens.
如果你做的事情如下:
(5 + 1)
一个简单的string.split()会给我一个标记数组{"(","",","+","1",")"}.
但是,如果您有多个数字的数字会变得更加复杂,例如:
((2048*124)+ 42)
现在一个天真的string.split()不会做的伎俩.多位数是一个问题.
我知道我可以写一个词法分析器,但有没有办法在不写一个完整的词法分析器的情况下做到这一点?
我在JavaScript中实现这一点,我想避免在可能的情况下沿着词法路径走.我将使用"*","+"," - "和"/"运算符以及整数.
正则表达式怎么样?您可以轻松编写正则表达式以按照您希望的方式拆分它,JS string.split方法也接受正则表达式作为参数.
例如......(修改为包含您需要的所有字符等)
/([0-9]+|[*+-\/()])/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
963 次 |
| 最近记录: |