有没有一种简单的方法可以在没有完整的词法分析器的情况下对字符串进行标记?

Kin*_*tor 2 javascript computer-science tokenize lexer shunting-yard

我正在寻求实现Shunting-yard算法,但我需要一些帮助来确定将字符串分成其标记的最佳方法是什么.

如果您注意到,该算法的第一步是"读取令牌".这不是一件非常重要的事情.令牌可以包括数字,运算符和parens.

如果你做的事情如下:

(5 + 1)

一个简单的string.split()会给我一个标记数组{"(","",","+","1",")"}.

但是,如果您有多个数字的数字会变得更加复杂,例如:

((2048*124)+ 42)

现在一个天真的string.split()不会做的伎俩.多位数是一个问题.

我知道我可以写一个词法分析器,但有没有办法在不写一个完整的词法分析器的情况下做到这一点?

我在JavaScript中实现这一点,我想避免在可能的情况下沿着词法路径走.我将使用"*","+"," - "和"/"运算符以及整数.

Jan*_*nen 6

正则表达式怎么样?您可以轻松编写正则表达式以按照您希望的方式拆分它,JS string.split方法也接受正则表达式作为参数.

例如......(修改为包含您需要的所有字符等)

/([0-9]+|[*+-\/()])/
Run Code Online (Sandbox Code Playgroud)