【发布时间】:2010-12-08 02:31:59
【问题描述】:
我正在寻找实现Shunting-yard Algorithm,但我需要一些帮助来确定将字符串拆分为其标记的最佳方法是什么。
如果您注意到,算法的第一步是“读取令牌”。这并不是一件不重要的事情。令牌可以由数字、运算符和括号组成。
如果你正在做类似的事情:
(5+1)
一个简单的 string.split() 会给我一个标记数组 { "(", "5", "+", "1", ")" }。
但是,如果您有多个数字,例如:
((2048*124) + 42)
现在,一个简单的 string.split() 将无法解决问题。多位数是个问题。
我知道我可以编写一个词法分析器,但是有没有办法在不编写成熟的词法分析器的情况下做到这一点?
我在 JavaScript 中实现了这个,如果可能的话,我想避免走下 lexer-path。 我将使用“*”、“+”、“-”和“/”运算符以及整数。
【问题讨论】:
-
任何能正确地将字符流转换为令牌流的东西都是词法分析器。
标签: javascript computer-science tokenize lexer shunting-yard